NetBSD-Bugs archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

kern/56770: rump threxec test randomly hangs the rump server process



>Number:         56770
>Category:       kern
>Synopsis:       rump threxec test randomly hangs the rump server process
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Sat Mar 26 17:25:00 +0000 2022
>Originator:     Martin Husemann
>Release:        NetBSD 9.99.95
>Organization:
The NetBSD Foundation, Inc.
>Environment:
System: NetBSD thirdstage.duskware.de 9.99.95 NetBSD 9.99.95 (MODULAR) #536: Sat Mar 26 09:19:27 CET 2022 martin%thirdstage.duskware.de@localhost:/usr/src/sys/arch/sparc64/compile/MODULAR sparc64
Architecture: sparc64
Machine: sparc64
>Description:

The tests/lib/librumpclient/t_exec tests reproducably (like 1 out of 10 times)
hangs in the rump_server (and can't clean that server up after timeout).

>How-To-Repeat:

On sparc64:

cd /usr/tests/lib/librumpclient
atf-run t_exec|atf-report

and repeat untill it gets stuck at:

t_exec (1/1): 5 test cases
    cloexec: [0.580718s] Passed.
    exec: [0.568253s] Passed.
    noexec: [0.562706s] Passed.
    threxec: <<-- here

gdb of the server process shows lots of waiting and two interesting other
threads:

[Switching to thread 23 (LWP 26770 of process 20281)]
#0  0x00000000407fbe30 in lwproc_proc_free (p=0x40b82040)
    at /usr/src/lib/librump/../../sys/rump/librump/rumpkern/lwproc.c:173
173                     LIST_INSERT_HEAD(&initproc->p_children, child, p_sibling);
(gdb) p *p
$1 = {p_list = {le_next = 0x40947ac0 <rumpns_proc0>, le_prev = 0x40b823c0}, 
[..]
(gdb) bt
#0  0x00000000407fbe30 in lwproc_proc_free (p=0x40b82040)
    at /usr/src/lib/librump/../../sys/rump/librump/rumpkern/lwproc.c:173
#1  lwproc_freelwp (l=<optimized out>)
    at /usr/src/lib/librump/../../sys/rump/librump/rumpkern/lwproc.c:341
#2  rump_lwproc_switch (newlwp=<optimized out>)
    at /usr/src/lib/librump/../../sys/rump/librump/rumpkern/lwproc.c:521
#3  0x00000000407fc438 in lwproc_makelwp (p=0x40b823c0, 
    doswitch=<optimized out>, procmake=<optimized out>)
    at /usr/src/lib/librump/../../sys/rump/librump/rumpkern/lwproc.c:385
#4  0x00000000407fc620 in rump_lwproc_newlwp (pid=<optimized out>)
    at /usr/src/lib/librump/../../sys/rump/librump/rumpkern/lwproc.c:439
#5  0x0000000040e06e2c in lwproc_newlwp (pid=23)
    at /usr/src/lib/librumpuser/rumpuser_sp.c:212
#6  serv_handlesyscall (data=0x4065e900 "", rhdr=0x406250c8, spc=0x40f0dbc0)
    at /usr/src/lib/librumpuser/rumpuser_sp.c:684
#7  serv_workbouncer (arg=<optimized out>)
    at /usr/src/lib/librumpuser/rumpuser_sp.c:767
#8  0x000000004100fcc8 in pthread__create_tramp (cookie=0x45188400)
    at /usr/src/lib/libpthread/pthread.c:564
#9  0x00000000412665d8 in _lwp_kill () from /usr/lib/libc.so.12

(gdb) thread 6
[Switching to thread 6 (LWP 29185 of process 20281)]
#0  pthread__mutex_lock_slow (ptm=0x4028ce80, ts=0x0)
    at /usr/src/lib/libpthread/pthread_mutex.c:368
368                             if (error < 0 && errno == ETIMEDOUT) {
(gdb) bt
#0  pthread__mutex_lock_slow (ptm=0x4028ce80, ts=0x0)
    at /usr/src/lib/libpthread/pthread_mutex.c:368
#1  0x0000000040e09e00 in rumpuser_mutex_enter (mtx=0x4028ce80)
    at /usr/src/lib/librumpuser/rumpuser_pth.c:202
#2  0x00000000407f4674 in mutex_enter (mtx=0x40947f00 <rumpns_proc_lock>)
    at /usr/src/lib/librump/../../sys/rump/librump/rumpkern/locks.c:166
#3  0x00000000407ce194 in proc_alloc_lwpid (p=0x40b82040, l=0x5b380b00)
    at /usr/src/lib/librump/../../sys/rump/../kern/kern_proc.c:1183
#4  0x00000000407fc328 in lwproc_makelwp (p=0x40b82040, 
    doswitch=<optimized out>, procmake=<optimized out>)
    at /usr/src/lib/librump/../../sys/rump/librump/rumpkern/lwproc.c:365
#5  0x00000000407f9cf8 in rump_schedule ()
    at /usr/src/lib/librump/../../sys/rump/librump/rumpkern/scheduler.c:268
#6  0x0000000040e06e20 in lwproc_newlwp (pid=23)
    at /usr/src/lib/librumpuser/rumpuser_sp.c:211
#7  serv_handlesyscall (data=0x4065eaa0 "", rhdr=0x40625488, spc=0x40f0dbc0)
    at /usr/src/lib/librumpuser/rumpuser_sp.c:684
#8  serv_workbouncer (arg=<optimized out>)
    at /usr/src/lib/librumpuser/rumpuser_sp.c:767
#9  0x000000004100fcc8 in pthread__create_tramp (cookie=0x40de2400)
    at /usr/src/lib/libpthread/pthread.c:564
#10 0x00000000412665d8 in _lwp_kill () from /usr/lib/libc.so.12

not sure both are related to the issue, but all others look boring.

>Fix:
n/a



Home | Main Index | Thread Index | Old Index