Occasional rndc crashes in tcp_connect_cb() on OpenBSD
Even with !4089 (merged) merged, we still seem to be getting occasional rndc
crashes on OpenBSD:
- https://gitlab.isc.org/isc-projects/bind9/-/jobs/1191900
- https://gitlab.isc.org/isc-projects/bind9/-/jobs/1181144
- https://gitlab.isc.org/isc-projects/bind9/-/jobs/1179956
- https://gitlab.isc.org/isc-projects/bind9/-/jobs/1176830
- https://gitlab.isc.org/isc-projects/bind9/-/jobs/1176824
While backtrace collection in GitLab CI is broken for OpenBSD1, the core dumps themselves seem to be usable once you load them into GDB with the right executables.
Here are some bits I personally found important:
(gdb) bt
#0 0x000005ee0feb049f in uv_handle_get_data () from /usr/local/lib/libuv.so.2.1
#1 0x000005ee6570b50e in tcp_connect_cb (uvreq=0x5edcf49e378, status=-48) at netmgr/tcp.c:156
#2 0x000005ee6570b408 in isc__nm_async_tcpconnect (ev0=Variable "ev0" is not available.
) at netmgr/tcp.c:136
#3 0x000005ee6570abbe in process_queue (worker=0x5edec985000, queue=0x5edec986080) at netmgr/netmgr.c:618
#4 0x000005ee0feb4548 in uv__async_io () from /usr/local/lib/libuv.so.2.1
#5 0x000005ee0fec59dc in uv__io_poll () from /usr/local/lib/libuv.so.2.1
#6 0x000005ee0feb4be0 in uv_run () from /usr/local/lib/libuv.so.2.1
#7 0x000005ee657077aa in nm_thread (worker0=0x5edec985000) at netmgr/netmgr.c:488
...
(gdb) frame 1
#1 0x000005ee6570b50e in tcp_connect_cb (uvreq=0x5edcf49e378, status=-48) at netmgr/tcp.c:156
156 sock = uv_handle_get_data((uv_handle_t *)uvreq->handle);
(gdb) print uvreq
$3 = (uv_connect_t *) 0x5edcf49e378
(gdb) print uvreq->handle
$4 = (uv_stream_t *) 0x0
Output of thread apply all bt full
attached anyway.
-
That is because source binary identification in GDB on OpenBSD works differently than on all other systems and I see no obvious way to make it work.
↩