NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
re: bin/59571: new bind crashes on arm64
The following reply was made to PR bin/59571; it has been noted by GNATS.
From: matthew green <mrg%eterna23.net@localhost>
To: gnats-bugs%netbsd.org@localhost, netbsd-bugs%netbsd.org@localhost
Cc:
Subject: re: bin/59571: new bind crashes on arm64
Date: Mon, 04 Aug 2025 15:37:08 +1000
more info:
i had a look at the urcu config.h and noticed an option to try
(CONFIG_RCU_USE_ATOMIC_BUILTINS) and while it didn't fix anything
it did give me a different crash in this udp disconnect path:
Thread 5 "isc-loop-0004" received signal SIGBUS, Bus error.
[Switching to LWP 26700 of process 7299]
0x000000000edb9dac in __aarch64_swp8_acq_rel ()
(gdb) bt
#0 0x000000000edb9dac in __aarch64_swp8_acq_rel ()
#1 0x000000000ed9e0c4 in ___cds_wfcq_append (new_tail=3D0xfc565553b4e8, n=
ew_head=3D0xfc565553b4e8, tail=3D0x1, u_head=3D...)
at /usr/src/external/lgpl2/userspace-rcu/lib/liburcu-memb/../../dist/i=
nclude/urcu/static/wfcqueue.h:182
#2 _cds_wfcq_enqueue (new_tail=3D0xfc565553b4e8, tail=3D0x1, head=3D...)
at /usr/src/external/lgpl2/userspace-rcu/lib/liburcu-memb/../../dist/i=
nclude/urcu/static/wfcqueue.h:217
#3 _call_rcu (head=3Dhead@entry=3D0xfc565553b4e8, func=3D<optimized out>,=
crdp=3D0x1)
at /usr/src/external/lgpl2/userspace-rcu/lib/liburcu-memb/../../dist/s=
rc/urcu-call-rcu-impl.h:705
#4 0x000000000ed9ffbc in urcu_memb_call_rcu (head=3D0xfc565553b4e8, func=3D=
<optimized out>)
at /usr/src/external/lgpl2/userspace-rcu/lib/liburcu-memb/../../dist/s=
rc/urcu-call-rcu-impl.h:732
#5 0x0000fc5658dec0dc in dispentry_destroy (resp=3D0xfc56535f63d0) at /us=
r/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/dispatch.c:445
#6 dns_dispentry_unref (ptr=3D0xfc56535f63d0) at /usr/src/external/mpl/bi=
nd/lib/libdns/../../dist/lib/dns/dispatch.c:453
#7 0x0000fc5658ded0dc in udp_connected (handle=3D0x0, eresult=3DISC_R_FAM=
ILYNOSUPPORT, arg=3D<optimized out>)
at /usr/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/dispatch.c=
:1950
#8 0x0000fc5658c3deb4 in isc_nm_udpconnect (mgr=3D<optimized out>, local=3D=
local@entry=3D0xfc56535f6420, peer=3Dpeer@entry=3D0xfc56535f6450,
cb=3Dcb@entry=3D0xfc5658decfe0 <udp_connected>, cbarg=3Dcbarg@entry=3D=
0xfc56535f63d0, timeout=3D<optimized out>)
at /usr/src/external/mpl/bind/lib/libisc/../../dist/lib/isc/netmgr/udp=
.c:844
#9 0x0000fc5658deaed8 in udp_dispatch_connect (disp=3Ddisp@entry=3D0xfc56=
5553b410, resp=3Dresp@entry=3D0xfc56535f63d0)
at /usr/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/dispatch.c=
:1961
#10 0x0000fc5658dee9dc in dns_dispatch_connect (resp=3D0xfc56535f63d0) at =
/usr/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/dispatch.c:2086
#11 0x0000fc5658db4924 in dns_request_create (requestmgr=3D0xfc5658bdb150,=
message=3D0xfc5653600510, srcaddr=3Dsrcaddr@entry=3D0xfc5654fed340,
destaddr=3Ddestaddr@entry=3D0xfc56535f6330, transport=3D0x0, tlsctx_ca=
che=3D0xfc5658b21610, options=3Doptions@entry=3D0, key=3D0x0, timeout=3Dti=
meout@entry=3D16,
udptimeout=3Dudptimeout@entry=3D5, udpretries=3Dudpretries@entry=3D2, =
loop=3D0xfc5658232cb0, cb=3Dcb@entry=3D0xfc5658d6c980 <notify_done>, arg=3D=
arg@entry=3D0xfc56535f6290,
requestp=3Drequestp@entry=3D0xfc56535f62b0) at /usr/src/external/mpl/b=
ind/lib/libdns/../../dist/lib/dns/request.c:643
#12 0x0000fc5658d6c304 in notify_send_toaddr (arg=3D0xfc56535f6290) at /us=
r/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/zone.c:12678
#13 0x0000fc5658c69574 in isc__async_cb (handle=3D<optimized out>) at /usr=
/src/external/mpl/bind/lib/libisc/../../dist/lib/isc/async.c:113
#14 0x0000fc5658c7c1fc in uv__async_io (loop=3D0xfc5658232cc8, w=3D<optimi=
zed out>, events=3D<optimized out>)
at /usr/src/external/mit/libuv/lib/../dist/src/unix/async.c:163
#15 0x0000fc5658c716d8 in uv__io_poll (loop=3D0xfc5658232cc8, timeout=3D<o=
ptimized out>) at /usr/src/external/mit/libuv/lib/../dist/src/unix/kqueue.=
c:390
#16 0x0000fc5658c79764 in uv_run (loop=3D0xfc5658232cc8, mode=3DUV_RUN_DEF=
AULT) at /usr/src/external/mit/libuv/lib/../dist/src/unix/core.c:406
#17 0x0000fc5658c64410 in loop_thread (arg=3Darg@entry=3D0xfc5658232cb0) a=
t /usr/src/external/mpl/bind/lib/libisc/../../dist/lib/isc/loop.c:330
#18 0x0000fc5658c69690 in thread_body (wrap=3D0xfc5657c12680) at /usr/src/=
external/mpl/bind/lib/libisc/../../dist/lib/isc/thread.c:87
#19 thread_run (wrap=3D0xfc5657c12680) at /usr/src/external/mpl/bind/lib/l=
ibisc/../../dist/lib/isc/thread.c:102
#20 0x0000fc5658a5ddb4 in pthread__create_tramp (cookie=3D0xfc5656e06400) =
at /usr/src/lib/libpthread/pthread.c:605
#21 0x0000fc5657cc3500 in __mknod50 () from /usr/lib/libc.so.12
though asn you can see at frame 1, "tail=3D0x1" is the same problem.
however, this seems to be *earlier* than the prior failure? ie,
it seems to be in the "set" part of the cds_wfcq queue ops, vs the
following "get" that crashed previously.
still not fully understanding ths urcu code.
.mrg.
Home |
Main Index |
Thread Index |
Old Index