it编程 > 前端脚本 > Erlang

erlang on_load_function_failed排查过程解析

67人参与 2024-05-15 Erlang

概述

在做mongo建连优化时,突然发现打出的包无法启动。有日志如下:

{"kernel pid terminated",application_controller,"{application_start_failure,kernel,{{shutdown,{failed_to_start_child,kernel_safe_sup,{on_load_function_failed,fast_pbkdf2}}},{kernel,start,[normal,[]]}}}"}
kernel pid terminated (application_controller) ({application_start_failure,kernel,{{shutdown,{failed_to_start_child,kernel_safe_sup,{on_load_function_failed,fast_pbkdf2}}},{kernel,start,[normal,[]]}}}

原因是打包机的环境变更,导致:

root@xxxxx:/srv/apps/xxxxx/lib/fast_pbkdf2-1.0.5/priv# ldd fast_pbkdf2.so 
        linux-vdso.so.1 =>  (0x00007ffc71bc6000)
        libcrypto.so.1.1 => not found
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007faf60b69000)
        /lib64/ld-linux-x86-64.so.2 (0x00007faf61139000)

排查过程

ldd 命令发现真正问题:打包机安装mongodb后,fast_pbkdf2.so link到了libcrypto.so.1.1,而之前是 libcrypto.so.1.0.0,我本地开发环境有libcrypto.so.1.1,故a, b都可运行,而生产容器只有 libcrypto.so.1.0.0,所以运行失败。

代码

otp-24.1
init.erl:1465

erlang load 失败时,会on_load_function_failed。这里除了load失败的模块,没有携带任何有效信息。

run_on_load_handlers([m|ms], debug) ->
 debug(debug, {running_on_load_handler,m}),
 fun = fun() ->
       res = erlang:call_on_load_function(m),
       exit(res)
   end,
 {pid,ref} = spawn_monitor(fun),
 receive
 {'down',ref,process,pid,onloadres} ->
     keep = onloadres =:= ok,
     erlang:finish_after_on_load(m, keep),
     case keep of
     false ->
         error = {on_load_function_failed,m},
         debug(debug, error),
         exit(error);
     true ->
         debug(debug, {on_load_handler_returned_ok,m}),
         run_on_load_handlers(ms, debug)
     end
 end;
run_on_load_handlers([], _) -> ok.

结论

以上就是erlang on_load_function_failed 的排查的详细内容,更多关于erlang on_load_function_failed 的排查的资料请关注代码网其它相关文章!

(0)
打赏 微信扫一扫 微信扫一扫

您想发表意见!!点此发布评论

推荐阅读

深入浅析RabbitMQ镜像集群原理

05-15

一篇文章带你从入门到精通:RabbitMQ

05-15

Erlang实现的一个Web服务器代码实例

05-15

Erlang中的Record详解

05-15

Erlang中遍历取出某个位置的最大值代码

05-15

Erlang中的基本元素操作小结

05-15

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论