NLnetLabs/unbound

Hang in one thread of CPUs

Closed this issue · 1 comments

Describe the bug
There are 4 threads, one 100%

%Cpu0  :  0.7 us,  0.0 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu1  :100.0 us,  0.0 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
%Cpu2  :  0.7 us,  1.0 sy,  0.0 ni, 98.0 id,  0.0 wa,  0.0 hi,  0.3 si,  0.0 st
%Cpu3  :  0.7 us,  0.3 sy,  0.0 ni, 99.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

gdb bt

(gdb) thread 1
[Switching to thread 1 (Thread 0x7f724cb9f0c0 (LWP 79697))]
#0  __GI___libc_read (nbytes=4, buf=0x7ffc256a5ec0, fd=13) at ../sysdeps/unix/sysv/linux/read.c:26
26      in ../sysdeps/unix/sysv/linux/read.c
(gdb) bt
#0  __GI___libc_read (nbytes=4, buf=0x7ffc256a5ec0, fd=13) at ../sysdeps/unix/sysv/linux/read.c:26
#1  __GI___libc_read (fd=fd@entry=13, buf=buf@entry=0x7ffc256a5ec0, nbytes=nbytes@entry=4) at ../sysdeps/unix/sysv/linux/read.c:24
#2  0x000055cba8f56933 in read (__nbytes=<optimized out>, __buf=<optimized out>, __fd=<optimized out>, __fd=<optimized out>, __buf=<optimized out>, __nbytes=<optimized out>)
    at /usr/include/x86_64-linux-gnu/bits/unistd.h:38
#3  tube_read_msg.constprop.0.isra.0 (buf=0x7ffc256a5ec8, len=0x7ffc256a5ec0, nonblock=0, tube=<optimized out>, tube=<optimized out>) at util/tube.c:355
#4  0x000055cba8e89fe7 in server_stats_obtain (reset=0, s=0x7ffc256a5ef0, who=0x55cbab8a37e0, worker=0x55cbad466190) at daemon/stats.c:382
#5  do_stats (ssl=0x7ffc256a8cb0, worker=0x55cbad466190, reset=0) at daemon/remote.c:1106
#6  0x000055cba8f66e67 in handle_req.isra.0 (rc=rc@entry=0x55cba90c4130, res=res@entry=0x7ffc256a8cb0, s=<optimized out>, s=<optimized out>) at daemon/remote.c:3204
#7  0x000055cba8e8e814 in remote_control_callback (c=0x55cbae07aa00, arg=0x55cbac7dafc0, err=<optimized out>, rep=<optimized out>) at daemon/remote.c:3286
#8  0x00007f724dcb6f58 in event_persist_closure (ev=<optimized out>, base=0x55cbaafcbda0) at /build/libevent-aonuXH/libevent-2.1.12-stable/event.c:1623
#9  event_process_active_single_queue (base=base@entry=0x55cbaafcbda0, activeq=0x55cbabf16fc0, max_to_process=max_to_process@entry=2147483647, endtime=endtime@entry=0x0)
    at /build/libevent-aonuXH/libevent-2.1.12-stable/event.c:1682
#10 0x00007f724dcb88a7 in event_process_active (base=0x55cbaafcbda0) at /build/libevent-aonuXH/libevent-2.1.12-stable/event.c:1783
#11 event_base_loop (base=0x55cbaafcbda0, flags=flags@entry=0) at /build/libevent-aonuXH/libevent-2.1.12-stable/event.c:2006
#12 0x00007f724dcb8afb in event_base_dispatch (event_base=<optimized out>) at /build/libevent-aonuXH/libevent-2.1.12-stable/event.c:1817
#13 0x000055cba8f56c2d in ub_event_base_dispatch (base=<optimized out>) at util/ub_event.c:280
#14 comm_base_dispatch.isra.0 (b=<optimized out>, b=<optimized out>) at util/netevent.c:246
#15 0x000055cba8e87146 in worker_work (worker=<optimized out>) at daemon/worker.c:1949
#16 daemon_fork (daemon=<optimized out>) at daemon/daemon.c:701
#17 0x000055cba8e93c60 in run_daemon (cfgfile=0x55cba8f6adc9 "/etc/unbound/unbound.conf", cmdline_verbose=0, debug_mode=1, need_pidfile=0) at daemon/unbound.c:707
#18 0x000055cba8e811f5 in main (argc=<optimized out>, argv=0x7ffc256a91b8) at daemon/unbound.c:808
(gdb) 

To reproduce
Steps to reproduce the behavior:

  1. Do not know how to reproduce, but it happened serveral times

Expected behavior
A clear and concise description of what you expected to happen.

System:

  • Unbound version: 1.13.1, installed through offical ubuntu apt repo
  • OS: Ubuntu 22.04.4 LTS
  • unbound -V output:
Version 1.13.1

Configure line: --build=x86_64-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-option-checking --disable-silent-rules --libdir=${prefix}/lib/x86_64-linux-gnu --libexecdir=${prefix}/lib/x86_64-linux-gnu --disable-maintainer-mode --disable-dependency-tracking --disable-rpath --with-pidfile=/run/unbound.pid --with-rootkey-file=/var/lib/unbound/root.key --with-libevent --with-libnghttp2 --with-pythonmodule --enable-subnet --enable-dnstap --enable-systemd --with-chroot-dir= --with-dnstap-socket-path=/run/dnstap.sock --libdir=/usr/lib
Linked libs: libevent 2.1.12-stable (it uses epoll), OpenSSL 3.0.2 15 Mar 2022
Linked modules: dns64 python subnetcache respip validator iterator

BSD licensed, see LICENSE in source package for details.
Report bugs to unbound-bugs@nlnetlabs.nl or https://github.com/NLnetLabs/unbound/issues

Additional information
Similliar with #439 #411, but not the same

Hi, thanks for reporting!
There were a series of fixes to address this (blocking read on the stats command) in Unbound 1.17.0.
I am closing this as non-issue anymore.
If you use a newer Unbound and you observe the same behavior feel free to reopen.