ejabberd 18.12 Centos 7: сбой mod_muc - PullRequest
0 голосов
/ 26 января 2019

Каждый раз, когда пользователь пытается создать чат с помощью клиента или 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. Единственной странной вещью, которую я сделал, было изменение спецификации RPM v15, чтобы сделать из нее RPM.

1 Ответ

0 голосов
/ 28 января 2019

Эти строки актуальны:

** Reason for termination =
** {undef,[{maps,update_with,[<<"tom">>,#Fun<mod_muc_room.21.9948724>,[{<<"tom">>,<<"pccim">>,<<"Spark">>}],#{}],[]},

Похоже, что erlang не может вызвать карты функций: 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().

Этот пример в моей системе показывает, что у меня установлена ​​библиотека карт, и в ней есть поддержка update_with с 4 аргументами.Попробуйте это в своей системе, и посмотрим, что вы получите.

...