最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

erlang?on_load_function_failed排查過程解析

 更新時間:2023年12月15日 08:57:41   作者:enjolras1205  
這篇文章主要為大家介紹了erlang?on_load_function_failed的排查過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

概述

在做mongo建連優(yōu)化時,突然發(fā)現(xiàn)打出的包無法啟動。有日志如下:

{"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,[]]}}}

原因是打包機(jī)的環(huán)境變更,導(dǎo)致:

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)

排查過程

  • 回滾代碼到可啟動包代碼。重新打包,也無法啟動。
  • 基本判定是打包機(jī)環(huán)境變更問題。并找了打包機(jī)的管理同學(xué)。
  • 設(shè)可運(yùn)行包為a,不可運(yùn)行包為b,對比a, b的差異。
  • a, b包均可在開發(fā)環(huán)境正常運(yùn)行。
  • nm 命令對比 a/b 的fast_pbkdf2.so symbols。
  • 用 erlang crash viewer 查看 crashdump,無有效信息。
  • 打包機(jī)管理同學(xué)發(fā)現(xiàn)回滾mongodb安裝后問題修復(fù)。

ldd 命令發(fā)現(xiàn)真正問題:打包機(jī)安裝mongodb后,fast_pbkdf2.so link到了libcrypto.so.1.1,而之前是 libcrypto.so.1.0.0,我本地開發(fā)環(huán)境有l(wèi)ibcrypto.so.1.1,故a, b都可運(yùn)行,而生產(chǎn)容器只有 libcrypto.so.1.0.0,所以運(yùn)行失敗。

代碼

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.

結(jié)論

  • erlang 遇到動態(tài)庫的on_load_function_failed時,從 c/c++ 動態(tài)庫加載的角度排查。
  • 打包應(yīng)該保持和生產(chǎn)環(huán)境一致,可以用同一個docker鏡像。

以上就是erlang on_load_function_failed 的排查的詳細(xì)內(nèi)容,更多關(guān)于erlang on_load_function_failed 的排查的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Erlang IO編程之文件目錄操作常用方法小結(jié)

    Erlang IO編程之文件目錄操作常用方法小結(jié)

    這篇文章主要介紹了Erlang IO編程之文件目錄操作常用方法小結(jié),本文講解了常用的文件操作如打開文件、讀取文件、寫入文件、刪除文件等,需要的朋友可以參考下
    2015-01-01
  • Erlang中的基本元素操作小結(jié)

    Erlang中的基本元素操作小結(jié)

    這篇文章主要介紹了Erlang中的基本元素操作小結(jié),本文講解了元組(tuple)、記錄(record)、列表(list)、映射組(map)等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • CentOS 6.5源碼安裝Erlang教程

    CentOS 6.5源碼安裝Erlang教程

    這篇文章主要介紹了CentOS 6.5源碼安裝Erlang教程,本文講解了源碼編譯安裝的過程和遇到的一些錯誤處理方法,需要的朋友可以參考下
    2015-01-01
  • Erlang實(shí)現(xiàn)的一個Web服務(wù)器代碼實(shí)例

    Erlang實(shí)現(xiàn)的一個Web服務(wù)器代碼實(shí)例

    這篇文章主要介紹了Erlang實(shí)現(xiàn)的一個Web服務(wù)器代碼實(shí)例,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-04-04
  • Erlang中的Record詳解

    Erlang中的Record詳解

    這篇文章主要介紹了Erlang中的Record詳解,本文講解了定義Record、創(chuàng)建Record、訪問Record、更新Record、匹配Record和Guard語句、使用Record等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • Erlang中遍歷取出某個位置的最大值代碼

    Erlang中遍歷取出某個位置的最大值代碼

    這篇文章主要介紹了Erlang中遍歷取出某個位置的最大值代碼,本文直接給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-03-03
  • Erlang編程語言的第一印象

    Erlang編程語言的第一印象

    這篇文章主要介紹了Erlang編程語言的第一印象,本文對Erlang做了一個簡單總結(jié),需要的朋友可以參考下
    2015-03-03
  • Erlang中的socket編程簡單例子

    Erlang中的socket編程簡單例子

    這篇文章主要介紹了Erlang中的socket編程簡單例子,本文給出了TCP服務(wù)器echo示例、Tcp 的echo客戶端示例、UDP server示例、UDP client 示例,需要的朋友可以參考下
    2015-03-03
  • Erlang實(shí)現(xiàn)的百度云推送Android服務(wù)端實(shí)例

    Erlang實(shí)現(xiàn)的百度云推送Android服務(wù)端實(shí)例

    這篇文章主要介紹了Erlang實(shí)現(xiàn)的百度云推送Android服務(wù)端實(shí)例,本文先是講解了實(shí)現(xiàn)步驟,然后給出實(shí)現(xiàn)代碼,需要的朋友可以參考下
    2015-01-01
  • 深入淺析RabbitMQ鏡像集群原理

    深入淺析RabbitMQ鏡像集群原理

    當(dāng)單臺 RabbitMQ 服務(wù)器的處理消息的能力達(dá)到瓶頸時,此時可以通過 RabbitMQ 集群來進(jìn)行擴(kuò)展,從而達(dá)到提升吞吐量的目的
    2021-08-08

最新評論

寻乌县| 措勤县| 广昌县| 肥乡县| 恩施市| 册亨县| 石景山区| 勐海县| 南涧| 桂平市| 祥云县| 峡江县| 罗江县| 洪湖市| 荔浦县| 武汉市| 卫辉市| 左贡县| 淮北市| 南通市| 永登县| 教育| 当雄县| 佛冈县| 徐汇区| 吐鲁番市| 西盟| 上思县| 太谷县| 彭州市| 通山县| 壶关县| 长垣县| 阿克苏市| 鄄城县| 罗城| 温泉县| 织金县| 封丘县| 峨眉山市| 和顺县|