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