[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Another glibc Hurd signal code deadlock: Mach thread_suspend sporadicall
From: |
Thomas Schwinge |
Subject: |
Another glibc Hurd signal code deadlock: Mach thread_suspend sporadically returning KERN_FAILURE |
Date: |
Thu, 20 Dec 2012 15:25:35 +0100 |
User-agent: |
Notmuch/0.9-101-g81dad07 (http://notmuchmail.org) Emacs/23.4.1 (i486-pc-linux-gnu) |
Hi!
(As recently reported on IRC already.) During a binutils build (running
its testsuite):
[...]
make[5]: Entering directory
`/media/erich/home/thomas/tmp/binutils/git.build/ld'
Making a new site.exp file...
make: hurdsig.c:948: post_signal: Unexpected error: (os/kern) failure.
PID UID PPID PGrp Sess TH Vmem RSS %CPU User System Args
1599 1000 1598 27917 29260 2 146M 0 0.0 0:00.00 0:00.03
/bin/dash -c fail= failcom='exit 1';
1604 1000 1599 27917 29260 2 134M 0 0.0 0:00.34 0:00.21 make
check-am
1605 1000 1604 27917 29260 2 146M 0 0.0 0:00.01 0:00.00
/bin/dash -c make check-DEJAGNU
1606 1000 1605 27917 29260 2 134M 16K 90.4 0:04.61 15:09.23 make
check-DEJAGNU
See attachment 1606-GDB. The main thread is (again...) stuck at the
_hurd_critical_section_unlock at the end of fork. The signal handler is
trying do deliver a SIGCHILD -- contrary to what I reported on IRC a few
days ago, this is the *parent* of the fork call, so it is not surprising
there is a SIGCHILD being delivered (which had originally confused me
thinking is was the child). During that signal delivery, it tripped over
the following assertion in hurd/hurdsig.c:_hurd_internal_post_signal (or
post_signal with Jérémie's patches; frame #9 in 1606-GDB):
[...]
case handle:
/* Call a handler for this signal. */
{
struct sigcontext *scp, ocontext;
int wait_for_reply, state_changed;
/* Stop the thread and abort its pending RPC operations. */
if (! ss_suspended)
{
err = __thread_suspend (ss->thread);
assert_perror (err);
}
[...]
About value of ERR in 1606-GDB, EMACH_RCV_INTERRUPTED, I have a hard time
locating where it may be coming from, so concluded it to be bogus;
»(os/kern) failure«, as in the assert message, according to
mach/err_kern.sub:err_codes_kern is value 5, and:
(gdb) print (error_t) 5
$1 = EKERN_FAILURE
I changed that code as follows:
/* Stop the thread and abort its pending RPC operations. */
if (! ss_suspended)
{
volatile int errs[50];
volatile int i = 0;
err = -1;
while (err != 0 && i < (sizeof errs / sizeof errs[0]))
errs[i++] = err = __thread_suspend (ss->thread);
while (err != 0 || i != 1);
}
..., re-run the binutils testsuite, and got 23848-GDB. (This time not
busy-looping in fork, but sigprocmask, which likewise has to lock this
sigstate.) Same situation in the signal thread, and we indeed get ERRS
full of EKERN_FAILURE.
[mach]/kern/thread.c:thread_suspend will return KERN_FAILURE iff the
thread is waiting uniterruptibly (TH_UNINT). That flag is only set in
kern/sched_prim.c:assert_wait if it is called with its second argument
(interruptible) set to FALSE. Which happens in a number of places in
Mach, bummer.
Next, I tried the following code change:
/* Stop the thread and abort its pending RPC operations. */
if (! ss_suspended)
{
volatile int errs[50];
volatile int i = 0;
err = -1;
while (err != 0 && i < (sizeof errs / sizeof errs[0]))
{
errs[i] = err = __thread_suspend (ss->thread);
if (err == EKERN_FAILURE)
{
/* We couldn't suspend the thread because it is waiting
uninterruptibly. Yield, hoping it eventually will
again
become interruptible. */
(void) __swtch ();
}
i++;
}
while (err != 0 || i != 1);
}
..., re-run the binutils testsuite, and got 2639-GDB. (This time again
busy-looping in fork.) And indeed: after 18 thread_suspend calls
returning EKERN_FAILURE, followed by yielding, the next one succeeded.
I'm now using glibc code that simply retries thread_suspend and in case
of EKERN_FAILURE, yields and retries, until the thread_suspend succeeds,
and so far that seems to work fine.
So -- what about this failure mode of thread_suspend? Is it expected,
and needs to be handled? Where is it coming from?
What I once noticed is that when I attached GDB, the process had mostly
been paged out (down to two pages, 8 KiB, despite there being no apparent
memory pressure -- but we know Mach is sometimes doing funny things
regarding paging), so perhaps TH_UNINT is set during page-in or something
like that? Hmm...
Grüße,
Thomas
Thread 2 (Thread 1606.2):
#0 0x0105e7cc in mach_msg_trap () at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/mach/mach_msg_trap.S:2
No locals.
#1 0x0105efc9 in __mach_msg (msg=0x17fd650, option=3, send_size=48,
rcv_size=32, rcv_name=136, timeout=0, notify=0) at msg.c:110
ret = <optimized out>
#2 0x0120fc4f in __msg_sig_post (process=130, signal=6, sigcode=0, refport=1)
at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/hurd/RPC_msg_sig_post.c:143
Mess = {In = {Head = {msgh_bits = 2147489043, msgh_size = 17081284,
msgh_remote_port = 130, msgh_local_port = 136, msgh_seqno = 0, msgh_id =
23000}, signalType = {msgt_name = 2, msgt_size = 32, msgt_number = 1,
msgt_inline = 1,
msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}, signal
= 6, sigcodeType = {msgt_name = 2, msgt_size = 32, msgt_number = 1, msgt_inline
= 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0}, sigcode = 0,
refportType = {msgt_name = 19, msgt_size = 32, msgt_number = 1,
msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0},
refport = 1}, Out = {Head = {msgh_bits = 2147489043, msgh_size = 17081284,
msgh_remote_port = 130, msgh_local_port = 136, msgh_seqno = 0,
msgh_id = 23000}, RetCodeType = {msgt_name = 2, msgt_size = 32, msgt_number =
1, msgt_inline = 1, msgt_longform = 0, msgt_deallocate = 0, msgt_unused = 0},
RetCode = 6}}
msg_result = <optimized out>
#3 0x0109d433 in kill_port (refport=<optimized out>, msgport=<optimized out>)
at ../sysdeps/mach/hurd/kill.c:68
No locals.
#4 kill_pid (pid=<optimized out>) at ../sysdeps/mach/hurd/kill.c:105
__err = 0
msgport = 130
refport = 1
sig = 6
proc = 73
err = 18732264
delivered = 0
#5 0x0109d6a6 in __kill (pid=1606, sig=6) at ../sysdeps/mach/hurd/kill.c:139
ulink = {resource = {next = 0x0, prevp = 0x25fb0}, thread = {next =
0x0, prevp = 0x26c5c}, cleanup = 0x1087b90 <_hurd_port_cleanup>, cleanup_data =
0x49}
delivered = 0
proc = 73
err = 18732264
#6 0x0109cb26 in raise (sig=6) at ../sysdeps/posix/raise.c:27
No locals.
#7 0x010a0dd9 in abort () at abort.c:92
act = {__sigaction_handler = {sa_handler = 0x11bf658, sa_sigaction =
0x11bf658}, sa_mask = 25156572, sa_flags = 85056}
sigs = 32
#8 0x01095dc1 in __assert_perror_fail (errnum=5, file=0x11be8d8 "hurdsig.c",
line=948, function=0x11be919 "post_signal") at assert-perr.c:80
errbuf = '\000' <repeats 576 times>,
"\024\337\004\001v\032i\tL\332\177\001\026\234\000\000\246b\005\001\246b\005\001\000\000\000\000\000\000\000\000
\312\036\001\002", '\000' <repeats 15 times>"\364,
/\002\000\070W\004\001\002\000\000\000\320\332\177\001\376\242", '\000'
<repeats 34 times>,
"D]\004\001\034\370\001\000\234\332\177\001\000\000\000\000\t\000\000\000\024\337\004\001$\311\036\001\211ԁ\031\000\000\000\000\b",
'\000' <repeats 11 times>, "\005\000\000\000\035\b\000\000
\312\036\001\240\332\002\001\244\372\004\001D\367\004\001\024\337\004\001\001\000\000\000\364/\002\000\264\333\177\001X\334\002\001\210\333\177\001\022\246\000\000x\333\177\001\024\337\004\001l\333\177\001<<\002\000\000\000\000\000
\312\036\001\005\000\000\000\000\000\000\000\001\000\000\000\240\332\002\001",
'\000' <repeats 24 times>"\264, \333\177\001l\333\177"...
buf = 0x8138e98 "make: hurdsig.c:948: post_signal: Unexpected error:
(os/kern) failure.\n"
#9 0x010790e8 in post_signal (untraced=0) at hurdsig.c:948
ocontext = {sc_onstack = 143348, sc_mask = 17062188, sc_reply_port = 2,
sc_intr_port = 25157032, sc_error = 41726, sc_gs = 40004, sc_fs = 18901025,
sc_es = 17120831, sc_ds = 0, sc_edi = 17072020, sc_esi = 157882998,
sc_ebp = 25156988, sc_esp = 39958, sc_ebx = 17063236, sc_edx =
129052, sc_ecx = 25156980, sc_eax = 18884140, sc_eip = 4, sc_cs = 17098468,
sc_efl = 18794788, sc_uesp = 551547908, sc_ss = 0, sc_fpkind = 8, sc_fpused =
0,
sc_fpsave = {fp_control = 0, fp_unused_1 = 0, fp_status = 5,
fp_unused_2 = 0, fp_tag = 2202, fp_unused_3 = 0, fp_eip = 18795696, fp_cs =
55968, fp_opcode = 258, fp_dp = 18901521, fp_ds = 63300, fp_unused_4 = 260},
sc_fpregs = {
fp_reg_word = {{11540, 288, 1, 0, 12276}, {2, 56972, 383, 50368,
286}, {56928, 383, 42514, 0, 56912}, {383, 11540, 288, 56900, 383}, {15420, 2,
0, 0, 52400}, {286, 5, 0, 0, 0}, {1, 0, 49928, 286, 12276}, {2, 57032, 383,
56408, 258}}}, sc_fpexcsr = 25157276}
wait_for_reply = <optimized out>
action = <optimized out>
scp = <optimized out>
state_changed = <optimized out>
err = EMACH_RCV_INTERRUPTED
handler = <optimized out>
__PRETTY_FUNCTION__ = "post_signal"
signo = 20
act = handle
ss = 0x122d808
thread_state = {set = 0, basic = {gs = 0, fs = 0, es = 0, ds = 0, edi =
0, esi = 0, ebp = 0, esp = 0, ebx = 0, edx = 0, ecx = 0, eax = 0, eip = 0, cs =
0, efl = 0, uesp = 0, ss = 0}, fpu = {fpkind = 0, initialized = 0,
hw_state = '\000' <repeats 72 times>"\344,
\346\004\001v\032i\t$\335\177\001\026\234\000\000\246b\005\001\323j
\001\000\000\000\000\234j \001\260\314\036\001", exc_status = 25100290}}
ss_suspended = 0
reply = 0x17fde60
detail = 0x17fde98
#10 0x01079319 in _hurd_internal_post_signal (ss=0x122d008, signo=20,
detail=0x17fde98, reply_port=0, reply_port_type=18, untraced=0) at
hurdsig.c:1215
reply_rpc = 0x12126c0 <__msg_sig_post_reply>
#11 0x01079556 in _S_msg_sig_post (me=130, reply_port=0, reply_port_type=18,
signo=20, sigcode=1, refport=1) at hurdsig.c:1363
err = <optimized out>
d = {exc = 0, exc_code = 25157340, exc_subcode = 85056, code = 1, error
= 17274080}
#12 0x01223d5c in _Xmsg_sig_post (InHeadP=0x17fef40, OutHeadP=0x17fdf30) at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/hurd/./hurd/msg_server.c:125
No locals.
#13 0x012229cf in _S_msg_server (InHeadP=0x88, OutHeadP=0x10004005) at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/hurd/./hurd/msg_server.c:1972
routine = 0x17fffd4
#14 0x0106ff79 in msgport_server (inp=0x17fef40, outp=0x17fdf30) at
msgportdemux.c:51
d = 0x0
#15 0x0105f696 in __mach_msg_server_timeout (demux=0x106ff00 <msgport_server>,
max_size=4096, rcv_name=130, option=0, timeout=0) at msgserver.c:109
request = 0x17fef40
reply = 0x17fdf30
mr = 268451845
__PRETTY_FUNCTION__ = "__mach_msg_server_timeout"
#16 0x0105f7cb in __mach_msg_server (demux=0x106ff00 <msgport_server>,
max_size=4096, rcv_name=130) at msgserver.c:196
No locals.
#17 0x0106fecf in _hurd_msgport_receive () at msgportdemux.c:68
No locals.
#18 0x011e2c20 in entry_point (start_routine=0x106fe60 <_hurd_msgport_receive>,
arg=0x0) at ./pthread/pt-create.c:50
No locals.
#19 0x00000000 in ?? ()
No symbol table info available.
Thread 1 (Thread 1606.1):
#0 0x0105e81c in swtch_pri () at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/mach/swtch_pri.S:2
No locals.
#1 0x010600a4 in __spin_lock_solid (lock=0x122d00c) at spin-solid.c:27
No locals.
#2 0x01074e57 in __spin_lock (__lock=<optimized out>) at
../mach/lock-intern.h:55
No locals.
#3 _hurd_sigstate_lock (ss=0x122d808) at hurdsig.c:172
No locals.
#4 0x0111252c in _hurd_critical_section_unlock (our_lock=<optimized out>) at
../hurd/hurd/signal.h:235
No locals.
#5 __fork () at ../sysdeps/mach/hurd/fork.c:719
env = {{__jmpbuf = {18710516, 23068628, 134641554, 23053628, 23053256,
17899295}, __mask_was_saved = 0, __saved_mask = 134621744}}
pid = 1607
err = <optimized out>
__PRETTY_FUNCTION__ = "__fork"
ss = 0x122d808
threads = 0x2c000
nthreads = 2
stopped = 0
i = 2
#6 0x01114234 in __vfork () at vfork.c:27
No locals.
#7 0x080567bc in ?? ()
No symbol table info available.
#8 0x08056a0d in ?? ()
No symbol table info available.
#9 0x080577d0 in ?? ()
No symbol table info available.
#10 0x08060611 in ?? ()
No symbol table info available.
#11 0x08060a6c in ?? ()
No symbol table info available.
#12 0x0805f859 in ?? ()
No symbol table info available.
#13 0x08060f3e in ?? ()
No symbol table info available.
#14 0x0804b245 in ?? ()
No symbol table info available.
#15 0x0108966b in __libc_start_main (main=0x8049d30, argc=2, ubp_av=0x15ff2a8,
init=0x80656d0, fini=0x80656c0, rtld_fini=0xf5c0, stack_end=0x15ff29c) at
libc-start.c:257
result = <optimized out>
#16 0x0804b9d1 in ?? ()
No symbol table info available.
Thread 2 (Thread 23848.2):
#0 0x0109598a in post_signal (untraced=0) at hurdsig.c:952
errs = {5 <repeats 50 times>}
i = 50
ocontext = {sc_onstack = 0, sc_mask = 0, sc_reply_port = 0,
sc_intr_port = 0, sc_error = 0, sc_gs = 0, sc_fs = 0, sc_es = 0,
sc_ds = 0, sc_edi = 0, sc_esi = 0, sc_ebp = 0, sc_esp = 0, sc_ebx =
0, sc_edx = 0, sc_ecx = 0, sc_eax = 0, sc_eip = 0, sc_cs = 0,
sc_efl = 0, sc_uesp = 0, sc_ss = 0, sc_fpkind = 0, sc_fpused = 0,
sc_fpsave = {fp_control = 0, fp_unused_1 = 0, fp_status = 0,
fp_unused_2 = 0, fp_tag = 0, fp_unused_3 = 0, fp_eip = 0, fp_cs =
0, fp_opcode = 0, fp_dp = 0, fp_ds = 0, fp_unused_4 = 0},
sc_fpregs = {fp_reg_word = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0,
46820, 262, 6774}, {2409, 7544, 292, 39958, 0}, {12966, 263,
23251, 289, 0}, {0, 23196, 289, 47672, 287}, {2, 292, 64416, 0,
23196}, {289, 44300, 258, 12276, 2}}}, sc_fpexcsr = 17180972}
wait_for_reply = <optimized out>
action = <optimized out>
scp = <optimized out>
state_changed = <optimized out>
err = EKERN_FAILURE
handler = <optimized out>
__PRETTY_FUNCTION__ = "post_signal"
signo = 20
act = handle
ss = 0x123a008
thread_state = {set = 0, basic = {gs = 75, fs = 31, es = 31, ds = 31,
edi = 3, esi = 16922820, ebp = 16922784, esp = 16922788,
ebx = 18829300, edx = 134687424, ecx = 16922704, eax = 0, eip =
17395776, cs = 23, efl = 582, uesp = 16921912, ss = 31}, fpu = {
fpkind = 0, initialized = 0, hw_state = '\000' <repeats 32 times>,
"h\036$\001\b\240#\001\024", '\000' <repeats 66 times>,
exc_status = 0}}
ss_suspended = 0
reply = 0x1241eb4
detail = 0x1241eec
#1 0x01096329 in _hurd_internal_post_signal (ss=0x123a808, signo=20,
detail=0x1241eec, reply_port=0, reply_port_type=18, untraced=0)
at hurdsig.c:1220
reply_rpc = 0x12216c0 <__msg_sig_post_reply>
#2 0x01096566 in _S_msg_sig_post (me=38, reply_port=0, reply_port_type=18,
signo=20, sigcode=1, refport=1) at hurdsig.c:1368
err = <optimized out>
d = {exc = 0, exc_code = 19144496, exc_subcode = 85056, code = 1, error
= 17392880}
#3 0x01232d5c in _Xmsg_sig_post (InHeadP=0x1242fa0, OutHeadP=0x1241f90)
at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/hurd/./hurd/msg_server.c:125
No locals.
#4 0x012319cf in _S_msg_server (InHeadP=0x9, OutHeadP=0x5)
at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/hurd/./hurd/msg_server.c:1972
routine = 0x32
#5 0x0108cf79 in msgport_server (inp=0x1242fa0, outp=0x1241f90) at
msgportdemux.c:51
d = 0x0
#6 0x0107c696 in __mach_msg_server_timeout (demux=0x108cf00 <msgport_server>,
max_size=4096, rcv_name=38, option=0, timeout=0)
at msgserver.c:109
request = 0x1242fa0
reply = 0x1241f90
mr = 5
__PRETTY_FUNCTION__ = "__mach_msg_server_timeout"
#7 0x0107c7cb in __mach_msg_server (demux=0x108cf00 <msgport_server>,
max_size=4096, rcv_name=38) at msgserver.c:196
No locals.
#8 0x0108cecf in _hurd_msgport_receive () at msgportdemux.c:68
No locals.
#9 0x8a3c743e in ?? ()
No symbol table info available.
Thread 1 (Thread 23848.1):
#0 0x0107b81c in swtch_pri () at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/mach/swtch_pri.S:2
No locals.
#1 0x0107d0a4 in __spin_lock_solid (lock=0x123a80c) at spin-solid.c:27
No locals.
#2 0x01091e57 in __spin_lock (__lock=<optimized out>) at
../mach/lock-intern.h:55
No locals.
#3 _hurd_sigstate_lock (ss=0x123a008) at hurdsig.c:172
No locals.
#4 0x010ba1ad in __sigprocmask (how=1, set=0x10242c8, oset=0x10242cc) at
../sysdeps/mach/hurd/sigprocmask.c:44
old = <optimized out>
new = 524288
#5 0x080711d9 in ?? ()
No symbol table info available.
#6 0x08072bba in ?? ()
No symbol table info available.
#7 0x080637fd in ?? ()
No symbol table info available.
#8 0x08066051 in ?? ()
No symbol table info available.
#9 0x0806373a in ?? ()
No symbol table info available.
#10 0x08063d9c in ?? ()
No symbol table info available.
#11 0x08066051 in ?? ()
No symbol table info available.
#12 0x0806373a in ?? ()
No symbol table info available.
#13 0x08063d9c in ?? ()
No symbol table info available.
#14 0x08066051 in ?? ()
No symbol table info available.
#15 0x08063d37 in ?? ()
No symbol table info available.
#16 0x08066051 in ?? ()
No symbol table info available.
#17 0x08063d37 in ?? ()
No symbol table info available.
#18 0x08066051 in ?? ()
No symbol table info available.
#19 0x08062d48 in ?? ()
No symbol table info available.
#20 0x08063d9c in ?? ()
No symbol table info available.
#21 0x08066051 in ?? ()
No symbol table info available.
#22 0x08062d48 in ?? ()
No symbol table info available.
#23 0x08066051 in ?? ()
No symbol table info available.
#24 0x0804e03c in ?? ()
No symbol table info available.
#25 0x0804c283 in ?? ()
No symbol table info available.
#26 0x010a667b in __libc_start_main (main=0x804b760, argc=8, ubp_av=0x1024dc4,
init=0x80de190, fini=0x80de180, rtld_fini=0xf5c0,
stack_end=0x1024dbc) at libc-start.c:257
result = <optimized out>
#27 0x0804d039 in ?? ()
No symbol table info available.
Thread 2 (Thread 2639.2):
#0 post_signal (untraced=0) at hurdsig.c:962
errs = {5 <repeats 18 times>, 0, 0, 8, 0, 0, 5, 2202, 18795696,
16964256, 18901521, 17102660, 18885908, 1, 143348, 25157260, 18793664,
25157216, 42514, 25157200, 18885908, 25157188, 146492, 0, 18795696,
5, 0, 1, 18793224, 143348, 25157320, 16964696, 25157276}
i = 19
ocontext = {sc_onstack = 0, sc_mask = 0, sc_reply_port = 0,
sc_intr_port = 0, sc_error = 0, sc_gs = 0, sc_fs = 0, sc_es = 0,
sc_ds = 0, sc_edi = 0, sc_esi = 0, sc_ebp = 0, sc_esp = 0, sc_ebx =
0, sc_edx = 0, sc_ecx = 0, sc_eax = 0, sc_eip = 0, sc_cs = 0,
sc_efl = 0, sc_uesp = 0, sc_ss = 0, sc_fpkind = 0, sc_fpused = 0,
sc_fpsave = {fp_control = 0, fp_unused_1 = 0, fp_status = 0,
fp_unused_2 = 0, fp_tag = 0, fp_unused_3 = 0, fp_eip = 0, fp_cs =
0, fp_opcode = 0, fp_dp = 0, fp_ds = 0, fp_unused_4 = 0},
sc_fpregs = {fp_reg_word = {{0, 0, 0, 0, 0}, {0, 0, 0, 0, 0}, {0, 0,
59108, 260, 6774}, {2409, 56612, 383, 39958, 0}, {25254, 261,
27347, 288, 0}, {0, 27292, 288, 52400, 286}, {2, 383, 64416, 0,
27292}, {288, 55892, 258, 12276, 2}}}, sc_fpexcsr = 17062188}
wait_for_reply = <optimized out>
action = <optimized out>
scp = <optimized out>
state_changed = <optimized out>
err = 0
handler = <optimized out>
__PRETTY_FUNCTION__ = "post_signal"
signo = 20
act = handle
ss = 0x122d808
thread_state = {set = 0, basic = {gs = 0, fs = 0, es = 0, ds = 0, edi =
0, esi = 0, ebp = 0, esp = 0, ebx = 0, edx = 0, ecx = 0,
eax = 0, eip = 0, cs = 0, efl = 0, uesp = 0, ss = 0}, fpu = {fpkind
= 0, initialized = 0, hw_state = '\000' <repeats 107 times>,
exc_status = 0}}
ss_suspended = 0
reply = 0x17fde60
detail = 0x17fde98
#1 0x01079359 in _hurd_internal_post_signal (ss=0x122d008, signo=20,
detail=0x17fde98, reply_port=0, reply_port_type=18, untraced=0)
at hurdsig.c:1230
reply_rpc = 0x12126c0 <__msg_sig_post_reply>
#2 0x01079596 in _S_msg_sig_post (me=130, reply_port=0, reply_port_type=18,
signo=20, sigcode=1, refport=1) at hurdsig.c:1378
err = <optimized out>
d = {exc = 0, exc_code = 25157340, exc_subcode = 85056, code = 1, error
= 17274144}
#3 0x01223d5c in _Xmsg_sig_post (InHeadP=0x17fef40, OutHeadP=0x17fdf30)
at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/hurd/./hurd/msg_server.c:125
No locals.
#4 0x012229cf in _S_msg_server (InHeadP=0x8a, OutHeadP=0x13)
at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/hurd/./hurd/msg_server.c:1972
routine = 0x872
#5 0x0106ff79 in msgport_server (inp=0x17fef40, outp=0x17fdf30) at
msgportdemux.c:51
d = 0x0
#6 0x0105f696 in __mach_msg_server_timeout (demux=0x106ff00 <msgport_server>,
max_size=4096, rcv_name=130, option=0, timeout=0)
at msgserver.c:109
request = 0x17fef40
reply = 0x17fdf30
mr = 19
__PRETTY_FUNCTION__ = "__mach_msg_server_timeout"
#7 0x0105f7cb in __mach_msg_server (demux=0x106ff00 <msgport_server>,
max_size=4096, rcv_name=130) at msgserver.c:196
No locals.
#8 0x0106fecf in _hurd_msgport_receive () at msgportdemux.c:68
No locals.
#9 0x011e2c20 in entry_point (start_routine=0x106fe60 <_hurd_msgport_receive>,
arg=0x0) at ./pthread/pt-create.c:50
No locals.
#10 0x00000000 in ?? ()
No symbol table info available.
Thread 1 (Thread 2639.1):
#0 0x0105e81c in swtch_pri () at
/media/erich/home/thomas/tmp/glibc/debian/eglibc-2.13/build-tree/hurd-i386-libc/mach/swtch_pri.S:2
No locals.
#1 0x010600a4 in __spin_lock_solid (lock=0x122d00c) at spin-solid.c:27
No locals.
#2 0x01074e57 in __spin_lock (__lock=<optimized out>) at
../mach/lock-intern.h:55
No locals.
#3 _hurd_sigstate_lock (ss=0x122d808) at hurdsig.c:172
No locals.
#4 0x0111256c in _hurd_critical_section_unlock (our_lock=<optimized out>) at
../hurd/hurd/signal.h:235
No locals.
#5 __fork () at ../sysdeps/mach/hurd/fork.c:719
env = {{__jmpbuf = {18710516, 23068628, 134641554, 23052444, 23052072,
17899359}, __mask_was_saved = 0, __saved_mask = 134621744}}
pid = 2640
err = <optimized out>
__PRETTY_FUNCTION__ = "__fork"
ss = 0x122d808
threads = 0x2c000
nthreads = 2
stopped = 0
i = 2
#6 0x01114274 in __vfork () at vfork.c:27
No locals.
#7 0x080567bc in ?? ()
No symbol table info available.
#8 0x08056a0d in ?? ()
No symbol table info available.
#9 0x080577d0 in ?? ()
No symbol table info available.
#10 0x08060611 in ?? ()
No symbol table info available.
#11 0x08060a6c in ?? ()
No symbol table info available.
#12 0x0805f859 in ?? ()
No symbol table info available.
#13 0x08060f3e in ?? ()
No symbol table info available.
#14 0x0804b245 in ?? ()
No symbol table info available.
#15 0x010896ab in __libc_start_main (main=0x8049d30, argc=2, ubp_av=0x15ff2a8,
init=0x80656d0, fini=0x80656c0, rtld_fini=0xf5c0,
stack_end=0x15ff29c) at libc-start.c:257
result = <optimized out>
#16 0x0804b9d1 in ?? ()
No symbol table info available.
pgpcfRF5lQFVQ.pgp
Description: PGP signature
- Another glibc Hurd signal code deadlock: Mach thread_suspend sporadically returning KERN_FAILURE,
Thomas Schwinge <=