Lokendra Soni
Lokendra Soni

Reputation: 487

Ejabberd server crashing after successful MUC creation

I am using xmpp.js library to create a simple XMPP client and Ejabberd server (ejabberd/ecs:latest- docker image). When I created MUC, it created successfully and I even received this success message from the server:

<iq xmlns="jabber:client" xml:lang="en" to="admin@localhost/113578534561979249915762" 
  from="[email protected]" type="result" id="createGroup"/>

This is my MUC creating code:

xml("iq",{id:"createGroup",type:"set",to:`${id}@conference.localhost`},xml(
            "query",{xmlns:"http://jabber.org/protocol/muc#owner"},xml(
                "x",{xmlns:"jabber:x:data",type:"submit"},[
                    xml("field",{var:"muc#roomconfig_roomname"},xml("value",{},name)),
                    xml("field",{var:"muc#roomconfig_roomdesc"},xml("value",{},description))
                ]
            )
        ));

But as soon as a MUC gets created and I try to view MUC, the Ejabberd server closes with a crash report.

This is the config for muc_mod for my Ejabberd server:

mod_muc:
    access:
      - allow
    access_admin:
      - allow: admin
    access_create: muc_create
    access_persistent: muc_create
    access_mam:
      - allow
    default_room_options:
      allow_subscription: true
      mam: true
mod_muc_admin: {}

This is the crash report I received:

xmpp-server    | 2022-01-21 11:25:08.712377+00:00 [error] CRASH REPORT:
xmpp-server    |   crasher:
xmpp-server    |     initial call: ejabberd_http:init/3
xmpp-server    |     pid: <0.1407.0>
xmpp-server    |     registered_name: []
xmpp-server    |     exception error: undefined function lib:format_exception/6
xmpp-server    |       in function  ejabberd_hooks:safe_apply/4 (src/ejabberd_hooks.erl, line 247)
xmpp-server    |       in call from ejabberd_hooks:run_fold1/4 (src/ejabberd_hooks.erl, line 217)
xmpp-server    |       in call from ejabberd_web_admin:process_admin/3 (src/ejabberd_web_admin.erl, line 548)
xmpp-server    |       in call from ejabberd_http:process/2 (src/ejabberd_http.erl, line 373)
xmpp-server    |       in call from ejabberd_http:process_request/1 (src/ejabberd_http.erl, line 496)
xmpp-server    |       in call from ejabberd_http:process_header/2 (src/ejabberd_http.erl, line 293)
xmpp-server    |       in call from ejabberd_http:parse_headers/1 (src/ejabberd_http.erl, line 218)
xmpp-server    |     ancestors: [ejabberd_http_sup,ejabberd_sup,<0.184.0>]
xmpp-server    |     message_queue_len: 0
xmpp-server    |     messages: []
xmpp-server    |     links: [<0.720.0>,#Port<0.3190>]
xmpp-server    |     dictionary: []
xmpp-server    |     trap_exit: false
xmpp-server    |     status: running
xmpp-server    |     heap_size: 2586
xmpp-server    |     stack_size: 27
xmpp-server    |     reductions: 10478
xmpp-server    |   neighbours:
xmpp-server    |
xmpp-server    | 2022-01-21 11:25:08.716445+00:00 [error] SUPERVISOR REPORT:
xmpp-server    |     supervisor: {local,ejabberd_http_sup}
xmpp-server    |     errorContext: child_terminated
xmpp-server    |     reason: {undef,
xmpp-server    |                 [{lib,format_exception,
xmpp-server    |                      [2,error,
xmpp-server    |                       {badmatch,{error,timeout}},
xmpp-server    |                       [{mod_muc_admin,get_room_config,1,
xmpp-server    |                            [{file,"src/mod_muc_admin.erl"},{line,891}]},
xmpp-server    |                        {mod_muc_admin,build_info_room,1,
xmpp-server    |                            [{file,"src/mod_muc_admin.erl"},{line,603}]},
xmpp-server    |                        {mod_muc_admin,'-build_info_rooms/1-lc$^0/1-0-',1,
xmpp-server    |                            [{file,"src/mod_muc_admin.erl"},{line,600}]},
xmpp-server    |                        {mod_muc_admin,make_rooms_page,3,
xmpp-server    |                            [{file,"src/mod_muc_admin.erl"},{line,551}]},
xmpp-server    |                        {mod_muc_admin,web_page_main,2,
xmpp-server    |                            [{file,"src/mod_muc_admin.erl"},{line,518}]},
xmpp-server    |                        {ejabberd_hooks,safe_apply,4,
xmpp-server    |                            [{file,"src/ejabberd_hooks.erl"},{line,236}]},
xmpp-server    |                        {ejabberd_hooks,run_fold1,4,
xmpp-server    |                            [{file,"src/ejabberd_hooks.erl"},{line,217}]},
xmpp-server    |                        {ejabberd_web_admin,process_admin,3,
xmpp-server    |                            [{file,"src/ejabberd_web_admin.erl"},{line,548}]}],
xmpp-server    |                       #Fun<misc.6.25947704>,#Fun<misc.7.25947704>],
xmpp-server    |                      []},
xmpp-server    |                  {ejabberd_hooks,safe_apply,4,
xmpp-server    |                      [{file,"src/ejabberd_hooks.erl"},{line,247}]},
xmpp-server    |                  {ejabberd_hooks,run_fold1,4,
xmpp-server    |                      [{file,"src/ejabberd_hooks.erl"},{line,217}]},
xmpp-server    |                  {ejabberd_web_admin,process_admin,3,
xmpp-server    |                      [{file,"src/ejabberd_web_admin.erl"},{line,548}]},
xmpp-server    |                  {ejabberd_http,process,2,
xmpp-server    |                      [{file,"src/ejabberd_http.erl"},{line,373}]},
xmpp-server    |                  {ejabberd_http,process_request,1,
xmpp-server    |                      [{file,"src/ejabberd_http.erl"},{line,496}]},
xmpp-server    |                  {ejabberd_http,process_header,2,
xmpp-server    |                      [{file,"src/ejabberd_http.erl"},{line,293}]},
xmpp-server    |                  {ejabberd_http,parse_headers,1,
xmpp-server    |                      [{file,"src/ejabberd_http.erl"},{line,218}]}]}
xmpp-server    |     offender: [{pid,<0.1407.0>},
xmpp-server    |                {id,undefined},
xmpp-server    |                {mfargs,{ejabberd_http,start_link,undefined}},
xmpp-server    |                {restart_type,temporary},
xmpp-server    |                {shutdown,5000},
xmpp-server    |                {child_type,worker}]

I tried restarting the server several times but it didn't work.

Upvotes: 0

Views: 121

Answers (1)

Badlop
Badlop

Reputation: 4120

First of all: you don't mention what version of ejabberd you are using. Maybe it's a bug fixed in a recent version?

You create a new room using your custom XMPP client. Why does the error message mention ejabberd_http and ejabberd_web_admin? Maybe that error message appears when you try to view the room details in the WebAdmin -> MUC page?

There's a {error, timeout} that then triggers other errors. I guess only you know what's going on there... as this log mentions stuff that you have not mentioned.

Try creating the room using a well-known XMPP client, like Gajim or Psi. Does the WebAdmin page work correctly? Then the problem is somewhere in your client.

Create a room using a XMPP client, and another using your client. Then view the information stored in muc_online_room mnesia table (WebAdmin -> Nodes -> your node -> Database. Do you see some weird difference?

Set persistent: true create new rooms and check the content of muc_room table. Some weird difference now?

Upvotes: 1

Related Questions