这个ejabberd/erlang堆栈跟踪意味着什么?
有人能帮我弄清楚在stacktrace里要找什么吗?我从未接触过二郎,所以我真的不知道从哪里开始 我们正在使用ejabberd的v19.09,并为许多用户获取此错误日志:这个ejabberd/erlang堆栈跟踪意味着什么?,erlang,ejabberd,Erlang,Ejabberd,有人能帮我弄清楚在stacktrace里要找什么吗?我从未接触过二郎,所以我真的不知道从哪里开始 我们正在使用ejabberd的v19.09,并为许多用户获取此错误日志: 2020-03-14 15:29:31.096 [error] <0.2029.48>@mod_http_api:handle:257 REST API Error: set_presence([{<<"user">>,<<"53265363">>},{<<
2020-03-14 15:29:31.096 [error] <0.2029.48>@mod_http_api:handle:257 REST API Error: set_presence([{<<"user">>,<<"53265363">>},{<<"host">>,<<"chat.us.com">>},{<<"resource">>,<<"ssid-3465">>},{<<"type">>,<<"available">>},{<<"show">>,<<"chat">>},{<<"status">>,<<"{\"current_lobby_id\":\"none\",\"status\":\"{\\r\
\\t\\\"rich_presence\\\": \\\"{\\\\r\\\
\\\\t\\\\\\\"rich_presence\\\\\\\": \\\\\\\"?s=PlayerStatusInMap?p0=21?p1=2?p2=3\\\\\\\",\\\\r\\\
\\\\t\\\\\\\"session_id\\\\\\\": \\\\\\\"ssid-3465-38a44f60-9df7-4c79-8c8e-1cc99e5039dd\\\\\\\"\\\\r\\\
}\\\",\\r\
\\t\\\"current_lobby_id\\\": \\\"{\\\\r\\\
\\\\t\\\\\\\"lobby_id\\\\\\\": \\\\\\\"c791cfaa-9fd3-4d0d-9d5c-1aeb9efb12e2@hangouts.chat.us.com\\\\\\\",\\\\r\\\
\\\\t\\\\\\\"privacy\\\\\\\": \\\\\\\"friends_only\\\\\\\"\\\\r\\\
}\\\"\\r\
}\",\"region\":\"\"}">>},{<<"priority">>,<<"0">>}]) -> exit:{noproc,{p1_server,call,[none,{set_presence,{presence,<<>>,available,<<>>,{jid,<<"953265363">>,<<"chat.us.com">>,<<"oak/ssid-3465-1cc99e5039dd">>,<<"1953265363">>,<<"chat.us.com">>,<<"4c79-8c8e-1cc99e5039dd">>},{jid,<<"1953265363">>,<<"chat.us.com">>,<<>>,<<"1953265363">>,<<"chat.us.com">>,<<>>},chat,[{text,<<"en">>,<<"{\"current_lobby_id\":\"none\",\"status\":\"{\\r\
\\t\\\"rich_presence\\\": \\\"{\\\\r\\\
\\\\t\\\\\\\"rich_presence\\\\\\\": \\\\\\\"?s=PlayerStatusInMap?p0=21?p1=2?p2=3\\\\\\\",\\\\r\\\
\\\\t\\\\\\\"session_id\\\\\\\": \\\\\\\"ssid-348c8e-1cc99e5039dd\\\\\\\"\\\\r\\\
}\\\",\\r\
\\t\\\"current_lobby_id\\\": \\\"{\\\\r\\\
\\\\t\\\\\\\"lobby_id\\\\\\\": \\\\\\\"c791cfaa-9fd3-4d0d-9d5c-1aeb9efb12e2@hangouts.chat.us.com\\\\\\\",\\\\r\\\
\\\\t\\\\\\\"privacy\\\\\\\": \\\\\\\"friends_only\\\\\\\"\\\\r\\\
}\\\"\\r\
}\",\"region\":\"\"}">>}],0,[],#{}}},1000]}} [{p1_server,call,3,[{file,"src/p1_server.erl"},{line,210}]},{mod_http_api,handle2,4,[{file,"src/mod_http_api.erl"},{line,267}]},{mod_http_api,handle,4,[{file,"src/mod_http_api.erl"},{line,228}]},{mod_http_api,perform_call,4,[{file,"src/mod_http_api.erl"},{line,188}]},{mod_http_api,process,2,[{file,"src/mod_http_api.erl"},{line,141}]},{ejabberd_http,process,2,[{file,"src/ejabberd_http.erl"},{line,366}]},{ejabberd_http,process_request,1,[{file,"src/ejabberd_http.erl"},{line,488}]},{ejabberd_http,process_header,2,[{file,"src/ejabberd_http.erl"},{line,286}]}]
[代码>2020-03-13-14 15:29:29:31.30-30-30-20-20-20-20-20-30-30-30-30-30-30-30-13-14 15 15:29:29:30-30-30-30-30-30-30-30-30-30-30-30-30-14 14 15:29:29:30[错误]:31.30[错误][错误]:30.30.30.30[错误][错误]这一个网页网页网页网页网页网页网页网页网页网页网页网页网页网页网页[20.10-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-30-“},{line,210}]},{mod_http_api,handle2,4,[{file,[线路,267}}},{MODU-http-U-api,句柄,4,[{{文件,”src/mod-U-http-U-http-U-http-U-api.erl,{线路,src/MODU-http-U-http-U-http-U-api.api.erl},{线路,267.7},{线路,267}}api,5},[线路,267.7},[线路,26C/MoC/MODU-MoU-U-U-http-U-http-U-U-http-U-U-http-U-U-http-U-U-U-U-U-U-U-api.api.api.U-U-U-U-U-U-api.api.ARU-api.api.api.ERU-api.ERU-api.erl}.erl}................bberd_http.erl“},{line,366}]},{ejabberd_http,process_请求,1[{file,“src/ejabberd_http.erl”},{line,488}]},{ejabberd_http,进程头,2,[{file,“src/ejabberd_http.erl”},{line,286}]}]
从中间隐藏的实际错误开始:
exit:{noproc,{p1_server,call,[none,{set_presence,.....
因此有一个noproc
错误,在调用p1\u server:call
时发生,其中第一个参数是none
(调用看起来像p1\u server:call(none,{set\u presence,…})
)也就是说,我们要求名为none
的进程执行命令set\u presence
,该命令失败,因为没有以none
名称注册的进程
现在让我们看看堆栈跟踪。我添加了换行符:
[{p1_server,call,3,[{file,"src/p1_server.erl"},{line,210}]},
{mod_http_api,handle2,4,[{file,"src/mod_http_api.erl"},{line,267}]},
{mod_http_api,handle,4,[{file,"src/mod_http_api.erl"},{line,228}]},
{mod_http_api,perform_call,4,[{file,"src/mod_http_api.erl"},{line,188}]},
{mod_http_api,process,2,[{file,"src/mod_http_api.erl"},{line,141}]},
{ejabberd_http,process,2,[{file,"src/ejabberd_http.erl"},{line,366}]},
{ejabberd_http,process_request,1,[{file,"src/ejabberd_http.erl"},{line,488}]},
{ejabberd_http,process_header,2,[{file,"src/ejabberd_http.erl"},{line,286}]}]
第一行是它发现没有这样的过程的地方。但我们更感兴趣的是,为什么我们首先将
none
作为参数传递。堆栈跟踪表明这发生在中的某个地方,但在这一点上我迷路了-它似乎是从命令中提取参数,但我没有取消站在none
来自的位置…从实际错误开始,该错误隐藏在中间:
exit:{noproc,{p1_server,call,[none,{set_presence,.....
因此有一个noproc
错误,在调用p1\u server:call
时发生,其中第一个参数是none
(调用看起来像p1\u server:call(none,{set\u presence,…})
)也就是说,我们要求名为none
的进程执行命令set\u presence
,该命令失败,因为没有以none
名称注册的进程
现在让我们看看堆栈跟踪。我添加了换行符:
[{p1_server,call,3,[{file,"src/p1_server.erl"},{line,210}]},
{mod_http_api,handle2,4,[{file,"src/mod_http_api.erl"},{line,267}]},
{mod_http_api,handle,4,[{file,"src/mod_http_api.erl"},{line,228}]},
{mod_http_api,perform_call,4,[{file,"src/mod_http_api.erl"},{line,188}]},
{mod_http_api,process,2,[{file,"src/mod_http_api.erl"},{line,141}]},
{ejabberd_http,process,2,[{file,"src/ejabberd_http.erl"},{line,366}]},
{ejabberd_http,process_request,1,[{file,"src/ejabberd_http.erl"},{line,488}]},
{ejabberd_http,process_header,2,[{file,"src/ejabberd_http.erl"},{line,286}]}]
第一行是它发现没有这样的过程的地方。但我们更感兴趣的是,为什么我们首先将none
作为参数传递。堆栈跟踪表明这发生在中的某个地方,但在这一点上我迷路了-它似乎是从命令中提取参数,但我没有取消站在none
来自的位置