On 3/9/07, Sebastien Bacher <email address hidden> wrote:
> didier, have you read the Debian bug? why do you say that's a liboild
> bug? do you have a code change to fix it, in which case could you attach
> it to launchpad?
Yes I did read it and I have a G3 around too :)
From man setjmp page:
POSIX does not specify whether setjmp() will save the signal
context. (In System V it will not. In 4.3BSD it will, and there is
a function _setjmp that will not.) If you want to save signal masks,
use sigsetjmp().
From man signal
According to POSIX, the behaviour of a process is undefined
after it ignores a SIGFPE, SIGILL, or SIGSEGV signal that was
not generated by the kill(2) or the raise(3) functions.
Hi
On 3/9/07, Sebastien Bacher <email address hidden> wrote:
> didier, have you read the Debian bug? why do you say that's a liboild
> bug? do you have a code change to fix it, in which case could you attach
> it to launchpad?
Yes I did read it and I have a G3 around too :)
From man setjmp page:
POSIX does not specify whether setjmp() will save the signal
context. (In System V it will not. In 4.3BSD it will, and there is
a function _setjmp that will not.) If you want to save signal masks,
use sigsetjmp().
From man signal
According to POSIX, the behaviour of a process is undefined
after it ignores a SIGFPE, SIGILL, or SIGSEGV signal that was
not generated by the kill(2) or the raise(3) functions.
output of 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) ---
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
with the soon to be attached patch usr/lib/ liboil- 0.3.so. 0", O_RDONLY) = 5 SIGILL, {0xe07f120, [], 0}, {SIG_DFL}, 8) = 0 SIG_BLOCK, NULL, [], 8) = 0 SIG_SETMASK, [], NULL, 8) = 0 SIGILL, {SIG_DFL}, NULL, 8) = 0 SIGILL, {0xe07f120, [], 0}, {SIG_DFL}, 8) = 0 SIG_BLOCK, NULL, [], 8) = 0 SIG_BLOCK, NULL, [], 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, {0xdfdfd30, [ILL], SA_RESTART}, {SIG_DFL}, 8) = 0 SIG_BLOCK, NULL, [], 8) = 0 SIG_SETMASK, [], NULL, 8) = 0 SIGILL, {SIG_DFL}, {0xdfdfd30, [ILL], SA_RESTART}, 8) = 0
4258 open("/
4258 rt_sigaction(
4258 rt_sigprocmask(
4258 --- SIGILL (Illegal instruction) @ 0 (0) ---
4258 rt_sigprocmask(
4258 rt_sigaction(
4258 rt_sigaction(
4258 rt_sigprocmask(
(*) 4258 rt_sigprocmask(
...
4258 rt_sigaction(
4258 rt_sigaction(
...
4258 open("/
...
4258 rt_sigaction(
4258 rt_sigprocmask(
4258 --- SIGILL (Illegal instruction) @ 0 (0) ---
4258 rt_sigprocmask(
4258 rt_sigaction(
....
Notes:
- (*) got a lot of them maybe a glibc bug.
- libs should save,block SIGILL before using them and reset after.