Details
Description
Using the following configuration on two nodes (designated "client" and "server"), the client will segfault while connecting the server:
# Server config container { worker-threads: 4 container-name: Qpid.Dispatch.Router.Server } ssl-profile { name: ssl-profile-name } listener { addr: 0.0.0.0 port: amqp sasl-mechanisms: ANONYMOUS } listener { role: inter-router addr: 0.0.0.0 port: 20000 sasl-mechanisms: ANONYMOUS } router { mode: interior router-id: Router.Server }
# Client config container { worker-threads: 4 container-name: Qpid.Dispatch.Router.A } ssl-profile { name: ssl-profile-name } listener { addr: 0.0.0.0 port: amqp sasl-mechanisms: ANONYMOUS } connector { role: inter-router addr: 192.168.0.12 # Address of server node port: 20000 sasl-mechanisms: ANONYMOUS } router { mode: standalone router-id: Router.A }
Note the the client router mode is standalone. Changing this to "interior" fixes the problem.
The segfault takes place at router_node.c:70,
DEQ_INSERT_TAIL(*ref_list, ref);
and is caused by the attempt to dereference the "ref_list" pointer, which appears to be uninitialised or dangling.
The router mode "standalone" may be invalid in this configuration , the process should not segfault!