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



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=0xfc565553b4e8, new_head=0xfc565553b4e8, tail=0x1, u_head=...)
    at /usr/src/external/lgpl2/userspace-rcu/lib/liburcu-memb/../../dist/include/urcu/static/wfcqueue.h:182
#2  _cds_wfcq_enqueue (new_tail=0xfc565553b4e8, tail=0x1, head=...)
    at /usr/src/external/lgpl2/userspace-rcu/lib/liburcu-memb/../../dist/include/urcu/static/wfcqueue.h:217
#3  _call_rcu (head=head@entry=0xfc565553b4e8, func=<optimized out>, crdp=0x1)
    at /usr/src/external/lgpl2/userspace-rcu/lib/liburcu-memb/../../dist/src/urcu-call-rcu-impl.h:705
#4  0x000000000ed9ffbc in urcu_memb_call_rcu (head=0xfc565553b4e8, func=<optimized out>)
    at /usr/src/external/lgpl2/userspace-rcu/lib/liburcu-memb/../../dist/src/urcu-call-rcu-impl.h:732
#5  0x0000fc5658dec0dc in dispentry_destroy (resp=0xfc56535f63d0) at /usr/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/dispatch.c:445
#6  dns_dispentry_unref (ptr=0xfc56535f63d0) at /usr/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/dispatch.c:453
#7  0x0000fc5658ded0dc in udp_connected (handle=0x0, eresult=ISC_R_FAMILYNOSUPPORT, arg=<optimized out>)
    at /usr/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/dispatch.c:1950
#8  0x0000fc5658c3deb4 in isc_nm_udpconnect (mgr=<optimized out>, local=local@entry=0xfc56535f6420, peer=peer@entry=0xfc56535f6450,
    cb=cb@entry=0xfc5658decfe0 <udp_connected>, cbarg=cbarg@entry=0xfc56535f63d0, timeout=<optimized out>)
    at /usr/src/external/mpl/bind/lib/libisc/../../dist/lib/isc/netmgr/udp.c:844
#9  0x0000fc5658deaed8 in udp_dispatch_connect (disp=disp@entry=0xfc565553b410, resp=resp@entry=0xfc56535f63d0)
    at /usr/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/dispatch.c:1961
#10 0x0000fc5658dee9dc in dns_dispatch_connect (resp=0xfc56535f63d0) at /usr/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/dispatch.c:2086
#11 0x0000fc5658db4924 in dns_request_create (requestmgr=0xfc5658bdb150, message=0xfc5653600510, srcaddr=srcaddr@entry=0xfc5654fed340,
    destaddr=destaddr@entry=0xfc56535f6330, transport=0x0, tlsctx_cache=0xfc5658b21610, options=options@entry=0, key=0x0, timeout=timeout@entry=16,
    udptimeout=udptimeout@entry=5, udpretries=udpretries@entry=2, loop=0xfc5658232cb0, cb=cb@entry=0xfc5658d6c980 <notify_done>, arg=arg@entry=0xfc56535f6290,
    requestp=requestp@entry=0xfc56535f62b0) at /usr/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/request.c:643
#12 0x0000fc5658d6c304 in notify_send_toaddr (arg=0xfc56535f6290) at /usr/src/external/mpl/bind/lib/libdns/../../dist/lib/dns/zone.c:12678
#13 0x0000fc5658c69574 in isc__async_cb (handle=<optimized out>) at /usr/src/external/mpl/bind/lib/libisc/../../dist/lib/isc/async.c:113
#14 0x0000fc5658c7c1fc in uv__async_io (loop=0xfc5658232cc8, w=<optimized out>, events=<optimized out>)
    at /usr/src/external/mit/libuv/lib/../dist/src/unix/async.c:163
#15 0x0000fc5658c716d8 in uv__io_poll (loop=0xfc5658232cc8, timeout=<optimized out>) at /usr/src/external/mit/libuv/lib/../dist/src/unix/kqueue.c:390
#16 0x0000fc5658c79764 in uv_run (loop=0xfc5658232cc8, mode=UV_RUN_DEFAULT) at /usr/src/external/mit/libuv/lib/../dist/src/unix/core.c:406
#17 0x0000fc5658c64410 in loop_thread (arg=arg@entry=0xfc5658232cb0) at /usr/src/external/mpl/bind/lib/libisc/../../dist/lib/isc/loop.c:330
#18 0x0000fc5658c69690 in thread_body (wrap=0xfc5657c12680) at /usr/src/external/mpl/bind/lib/libisc/../../dist/lib/isc/thread.c:87
#19 thread_run (wrap=0xfc5657c12680) at /usr/src/external/mpl/bind/lib/libisc/../../dist/lib/isc/thread.c:102
#20 0x0000fc5658a5ddb4 in pthread__create_tramp (cookie=0xfc5656e06400) 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=0x1" 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