-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1


Some more info about this problem.


It seems that also stock kernel 2.4.22pre10 exhibits this behavior.

Moreover, it looks like one thread dies and then the rest waits forever
for a signal which never comes :

- -----------------------

$ strace -e trace=signal -f osganimate
rt_sigaction(SIGRTMIN, {0x40544000, [], SA_RESTORER, 0x405e1488}, NULL,
8) = 0
rt_sigaction(SIGRT_1, {0x405438c0, [], SA_RESTORER, 0x405e1488}, NULL,
8) = 0
rt_sigaction(SIGRT_2, {0x40544040, [], SA_RESTORER, 0x405e1488}, NULL,
8) = 0
rt_sigprocmask(SIG_BLOCK, [RTMIN], NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [33], NULL, 8) = 0
Process 5191 attached (waiting for parent)
Process 5191 resumed (parent 5187 ready)
[pid  5191] --- SIGSTOP (Stopped (signal)) @ 0 (0) ---
[pid  5191] rt_sigprocmask(SIG_SETMASK, ~[TRAP 33], NULL, 8) = 0
[pid  5187] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid  5187] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid  5187] rt_sigsuspend([]Process 5192 attached
~ <unfinished ...>
[pid  5192] --- SIGSTOP (Stopped (signal)) @ 0 (0) ---
[pid  5191] kill(5187, SIGRTMIN)        = 0
[pid  5192] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
[pid  5187] --- SIGRTMIN (Unknown signal 32) @ 0 (0) ---
[pid  5192] rt_sigprocmask(SIG_SETMASK, NULL,  <unfinished ...>
[pid  5187] <... rt_sigsuspend resumed> ) = -1 EINTR (Interrupted system
call)
[pid  5192] <... rt_sigprocmask resumed> [RTMIN], 8) = 0
[pid  5187] sigreturn( <unfinished ...>
[pid  5192] rt_sigsuspend([] <unfinished ...>
[pid  5187] <... sigreturn resumed> )   = ? (mask now [RTMIN])
[pid  5187] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid  5187] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid  5187] rt_sigsuspend([]Process 5193 attached (waiting for parent)
Process 5193 resumed (parent 5191 ready)
~ <unfinished ...>
[pid  5193] --- SIGSTOP (Stopped (signal)) @ 0 (0) ---
[pid  5191] kill(5187, SIGRTMIN)        = 0
[pid  5193] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
[pid  5187] --- SIGRTMIN (Unknown signal 32) @ 0 (0) ---
[pid  5187] <... rt_sigsuspend resumed> ) = -1 EINTR (Interrupted system
call)
[pid  5187] sigreturn()                 = ? (mask now [RTMIN])
[pid  5187] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid  5187] rt_sigsuspend([] <unfinished ...>
[pid  5193] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid  5193] rt_sigprocmask(SIG_SETMASK, NULL, [RTMIN], 8) = 0
[pid  5193] rt_sigsuspend([]Process 5194 attached (waiting for parent)
Process 5194 resumed (parent 5191 ready)
~ <unfinished ...>
[pid  5194] --- SIGSTOP (Stopped (signal)) @ 0 (0) ---
[pid  5191] kill(5193, SIGRTMIN <unfinished ...>
[pid  5193] --- SIGRTMIN (Unknown signal 32) @ 0 (0) ---
Process 5193 detached

^^^^^^^^^^^^^^^^^^^^^^^^^ thread died ?

[pid  5191] <... kill resumed> )        = 0
[pid  5194] rt_sigprocmask(SIG_SETMASK, [RTMIN], NULL, 8) = 0
[pid  5194] kill(5193, SIGRTMIN)        = 0
[pid  5194] kill(5193, SIGRTMIN)        = 0

^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Trying to send a signal to a dead thread, it seems and then it waits
forever for response.


I am not PosixThreads expert, but this looks abnormal to me. Either some signal got missing (SIGSEGV, for example, if something crashed and the thread manager didn't "notice" the disappearance of one of the threads) or there is something funny going on.

Some advice would be extremely appreciated, because this is a show
stopper for me :-(

Regards,

Jan

- --

Jan Ciger
VRlab EPFL Switzerland
GPG public key : http://www.keyserver.net/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (GNU/Linux)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org

iD8DBQE/LYjhn11XseNj94gRAnwrAJ43KdW/Yu4Z/Be6sdCvup5nvpHv7QCfZn7Y
YtlFnZhGB8QUXu/YsuHIEPw=
=Ag7+
-----END PGP SIGNATURE-----





Reply via email to