from setjmp manual: POSIX does not specify whether setjmp() will save the signal context.
Example of strace output on a G3 running linux Ubuntu 2.6.20
strace -f gnome-sound-properties without a ~/.gstreamer-0.10 directory. ... 32021 open("/usr/lib/liboil-0.3.so.0", O_RDONLY) = 5 32021 rt_sigaction(SIGILL, {0xe0a3120, [], 0}, {SIG_DFL}, 8) = 0 ... 32021 --- SIGILL (Illegal instruction) @ 0 (0) --- no altivec 32021 rt_sigaction(SIGILL, {SIG_DFL}, NULL, 8) = 0 32021 rt_sigaction(SIGILL, {0xe0a3120, [], 0}, {SIG_DFL}, 8) = 0 32021 rt_sigaction(SIGILL, {SIG_DFL}, NULL, 8) = 0 32021 rt_sigaction(SIGSEGV, {SIG_DFL}, NULL, 8) = 0 ... 32021 open("/usr/lib/libvisual-0.4.so.0", O_RDONLY) = 5 .... 32021 rt_sigaction(SIGILL, {0xe03b884, [ILL], SA_RESTART}, {SIG_DFL}, 8) = 0 SIGILL is now blocked... 32021 rt_sigprocmask(SIG_BLOCK, NULL, [ILL], 8) = 0 32021 --- SIGILL (Illegal instruction) @ 0 (0) --- undefined behaviour... 32020 <... read resumed> "", 1) = 0 32020 --- SIGCHLD (Child exited) @ 0 (0) --- 32020 close(3) = 0
Sure it's also a bug in libvisual but IMO a library should change signal set if it doesn't need it.
from setjmp manual:
POSIX does not specify whether setjmp() will save the signal context.
Example of strace output on a G3 running linux Ubuntu 2.6.20
strace -f gnome-sound- properties without a ~/.gstreamer-0.10 usr/lib/ liboil- 0.3.so. 0", O_RDONLY) = 5 SIGILL, {0xe0a3120, [], 0}, {SIG_DFL}, 8) = 0 SIGILL, {SIG_DFL}, NULL, 8) = 0 SIGILL, {0xe0a3120, [], 0}, {SIG_DFL}, 8) = 0 SIGILL, {SIG_DFL}, NULL, 8) = 0 SIGSEGV, {SIG_DFL}, NULL, 8) = 0 usr/lib/ libvisual- 0.4.so. 0", O_RDONLY) = 5 SIGILL, {0xe03b884, [ILL], SA_RESTART}, {SIG_DFL}, 8) = 0
SIGILL is now blocked... SIG_BLOCK, NULL, [ILL], 8) = 0
undefined behaviour...
directory.
...
32021 open("/
32021 rt_sigaction(
...
32021 --- SIGILL (Illegal instruction) @ 0 (0) ---
no altivec
32021 rt_sigaction(
32021 rt_sigaction(
32021 rt_sigaction(
32021 rt_sigaction(
...
32021 open("/
....
32021 rt_sigaction(
32021 rt_sigprocmask(
32021 --- SIGILL (Illegal instruction) @ 0 (0) ---
32020 <... read resumed> "", 1) = 0
32020 --- SIGCHLD (Child exited) @ 0 (0) ---
32020 close(3) = 0
Sure it's also a bug in libvisual but IMO a library should change signal set if it doesn't need it.