Details
-
Bug
-
Resolution: Done
-
Major
-
None
-
None
-
User Experience
-
-
Interconnect - June Sprint
Description
If host in connector cant be resolved (either invalid hostname or simply `getaddrinfo` fails), qdrouterd coredumps when trying to connect there.
Backtrace then shows:
(gdb) bt
#0 pn_transport_set_max_frame (transport=transport@entry=0x0, size=65536) at /usr/src/debug/qpid-proton-0.9/proton-c/src/transport/transport.c:2541
#1 0x00007f4df142297a in cxtr_try_open (context=0x7f4ddc0091a0) at /usr/src/debug/qpid-dispatch-0.4/src/server.c:766
#2 0x00007f4df1422dc7 in thread_run (arg=<optimized out>) at /usr/src/debug/qpid-dispatch-0.4/src/server.c:486
#3 0x00007f4df0f95df5 in start_thread () from /lib64/libpthread.so.0
#4 0x00007f4df04f11ad in clone () from /lib64/libc.so.6
(gdb) frame 1
#1 0x00007f4df142297a in cxtr_try_open (context=0x7f4ddc0091a0) at /usr/src/debug/qpid-dispatch-0.4/src/server.c:766
766 pn_transport_set_max_frame(tport, config->max_frame_size);
(gdb) p ctx->pn_cxtr
$18 = (qdpn_connector_t *) 0x0
(gdb)
pn_cxtr is set by:
ctx->pn_cxtr = qdpn_connector(ct->server->driver, ct->config->host, ct->config->port, (void*) ctx);
that returns 0 due to:
struct addrinfo *addr;
int code = getaddrinfo(host, port, NULL, &addr);
if (code)
That triggers the segfault.
Better return value check missing.
Attachments
Issue Links
- relates to
-
DISPATCH-154 Loading...