bug-hurd
[Top][All Lists]
Advanced

[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.

Attachment: pgpKaB8u0I4pA.pgp
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]