Hi

On 3/9/07, Sebastien Bacher <[EMAIL PROTECTED]> 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
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) ---
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

with the soon to be attached patch
4258  open("/usr/lib/liboil-0.3.so.0", O_RDONLY) = 5
4258  rt_sigaction(SIGILL, {0xe07f120, [], 0}, {SIG_DFL}, 8) = 0
4258  rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
4258  --- SIGILL (Illegal instruction) @ 0 (0) ---
4258  rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
4258  rt_sigaction(SIGILL, {SIG_DFL}, NULL, 8) = 0
4258  rt_sigaction(SIGILL, {0xe07f120, [], 0}, {SIG_DFL}, 8) = 0
4258  rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
(*) 4258  rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
...
4258  rt_sigaction(SIGILL, {SIG_DFL}, NULL, 8) = 0
4258  rt_sigaction(SIGSEGV, {SIG_DFL}, NULL, 8) = 0
...
4258  open("/usr/lib/libvisual-0.4.so.0", O_RDONLY) = 5
...
4258  rt_sigaction(SIGILL, {0xdfdfd30, [ILL], SA_RESTART}, {SIG_DFL}, 8) = 0
4258  rt_sigprocmask(SIG_BLOCK, NULL, [], 8) = 0
4258  --- SIGILL (Illegal instruction) @ 0 (0) ---
4258  rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
4258  rt_sigaction(SIGILL, {SIG_DFL}, {0xdfdfd30, [ILL], SA_RESTART}, 8) = 0
....

Notes:
- (*) got a lot of them maybe a glibc bug.
- libs should save,block SIGILL before using them and reset after.

-- 
Crash at login
https://launchpad.net/bugs/72814

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to