Comment 12 for bug 72814

Revision history for this message
In , didier (did447-deactivatedaccount) wrote :

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.