每当用户尝试通过客户端或ejabberctl创建聊天室时,模块就会崩溃:
** State machine <0.505.0> terminating
** Last event in was {route,<<"tom">>,{presence,<<"g245b-188">>,available,<<"en">>,{jid,<<"tom">>,<<"pccim">>,<<"Spark">>,<<"tom">>,<<"pccim">>,<<"Spark">>},{jid,<<"tom_q1r">>,<<"confere
** When State == normal_state
** Data == {state,<<"tom_q1r">>,<<"conference.pccim">>,<<"pccim">>,{[{allow,[all]}],muc_create,[{allow,[{acl,admin}]}],muc_create},{jid,<<"tom_q1r">>,<<"conference.pccim">>,<<>>,<<
** Reason for termination =
** {undef,[{maps,update_with,[<<"tom">>,#Fun<mod_muc_room.21.9948724>,[{<<"tom">>,<<"pccim">>,<<"Spark">>}],#{}],[]},{mod_muc_room,update_online_user,3,[{file,"src/mod_muc_room.erl"},{li
2019-01-25 16:14:22 =CRASH REPORT====
crasher:
initial call: gen:init_it/6
pid: <0.505.0>
registered_name: []
exception exit: {{undef,[{maps,update_with,[<<"tom">>,#Fun<mod_muc_room.21.9948724>,[{<<"tom">>,<<"pccim">>,<<"Spark">>}],#{}],[]},{mod_muc_room,update_online_user,3,[{file,"src/mod_
ancestors: [mod_muc_pccim,ejabberd_gen_mod_sup,ejabberd_sup,<0.38.0>]
messages: []
links: []
dictionary: [{'$internal_queue_len',0}]
trap_exit: true
status: running
heap_size: 2586
stack_size: 27
reductions: 1648
neighbours:
我不知道出什么问题了,这是GA版本。我所做的唯一奇怪的事情是修改了v15 RPM规范以制作出RPM。
答案 0 :(得分:0)
这些行是相关的:
** Reason for termination =
** {undef,[{maps,update_with,[<<"tom">>,#Fun<mod_muc_room.21.9948724>,[{<<"tom">>,<<"pccim">>,<<"Spark">>}],#{}],[]},
看来erlang无法调用功能maps:update_with / 4,自18.12(https://github.com/processone/ejabberd/commit/43498b39c18dcc90c94ed2ce32acdfe6e7381e87)起是必需的。
也许您使用的是旧的erlang版本,或者缺少erlang库。试试这个:
$ erl
Erlang/OTP 20 [erts-9.3.3.3] [source] [64-bit] [smp:2:2] [ds:2:2:10] [async-threads:10] [kernel-poll:false]
Eshell V9.3.3.3 (abort with ^G)
1> maps:module_info().
[{module,maps},
{exports,[{update_with,3},
{update_with,4},
...
2> q().
系统中的此示例显示我已经安装了地图库,并且支持带有4个参数的update_with。在您的系统中尝试一下,看看您能得到什么。