2018-02-10 07:41:04 |
David Bartley |
bug |
|
|
added bug |
2018-02-10 07:42:21 |
David Bartley |
description |
https://bugs.debian.org/827015 was incorporated into the 1.2 package (present on bionic); it would be really nice to backport that fix to prior distros (though I mostly care about trusty and xenial).
Without this fix, libunwind will corrupt the signal mask, which breaks enabling the CPU profiler in MongoDB, among other things. |
https://bugs.debian.org/827015 was incorporated into the 1.2 package (present on bionic); it would be really nice to backport that fix to all prior releases (though I mostly care about trusty and xenial).
Without this fix, libunwind will corrupt the signal mask, which breaks the CPU profiler in MongoDB, among other things. |
|
2018-02-10 08:04:00 |
Hans Joachim Desserud |
bug watch added |
|
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=827015 |
|
2018-02-10 08:04:00 |
Hans Joachim Desserud |
bug task added |
|
libunwind (Debian) |
|
2018-02-10 09:51:40 |
David Bartley |
attachment added |
|
sigtest.cpp https://bugs.launchpad.net/ubuntu/+source/libunwind/+bug/1748597/+attachment/5052391/+files/sigtest.cpp |
|
2018-02-10 10:09:32 |
David Bartley |
description |
https://bugs.debian.org/827015 was incorporated into the 1.2 package (present on bionic); it would be really nice to backport that fix to all prior releases (though I mostly care about trusty and xenial).
Without this fix, libunwind will corrupt the signal mask, which breaks the CPU profiler in MongoDB, among other things. |
[Impact]
When a C++ exception is thrown with libunwind linked in, the signal mask is corrupted.
For MongoDB, if the CPU profiler is enabled (which requires linking libunwind), any exception that is raised within the server may cause random signals to become unblocked on a thread. If SIGTERM becomes unblocked on any thread but the main thread, the server won't exit cleanly (this is particularly evident when running the MongoDB test suite, which starts/stops servers repeatedly).
This also seems to impact Pyston: https://lab.nexedi.com/Daetalus/Pyston/commit/1bac7510861a112a9023f821bf3e857a6fb45037
[Test Case]
I've attached the test case from the upstream Debian bug (https://bugs.debian.org/827015).
$ g++ sigtest.cpp -lpthread
Signals blocked: 1 (Hangup) 65 (Unknown signal 65)
Throw exception
Signals blocked: 1 (Hangup) 65 (Unknown signal 65)
$ g++ sigtest.cpp -lpthread -lunwind
Signals blocked: 1 (Hangup) 65 (Unknown signal 65)
Throw exception
Signals blocked: 7 (Bus error) 8 (Floating point exception) 10 (User defined signal 1) 12 (User defined signal 2) 13 (Broken pipe) 15 (Terminated) 17 (Child exited) 20 (Stopped)21 (Stopped (tty input)) 25 (File size limit exceeded) 26 (Virtual timer expired) 27 (Profiling timer expired) 28 (Window changed) 29 (I/O possible) 30 (Power failure) 31 (Bad system call) 32 (Unknown signal 32) 33 (Unknown signal 33) 34 (Real-time signal 0) 35 (Real-time signal 1) 36 (Real-time signal 2) 37 (Real-time signal 3) 38 (Real-time signal 4) 39 (Real-time signal 5) 40 (Real-time signal 6) 41 (Real-time signal 7) 42 (Real-time signal 8) 43 (Real-time signal 9) 44 (Real-time signal 10) 45 (Real-time signal 11) 46 (Real-time signal 12) 47 (Real-time signal 13) 65 (Unknown signal 65)
[Regression Potential]
This fix is already present in bionic and Debian testing, and has been for a couple months. The upstream fix has existed for over a year. |
|
2018-02-10 10:10:09 |
David Bartley |
attachment added |
|
0001-x86_64-Use-sigprocmask-from-signal-frames.patch https://bugs.launchpad.net/ubuntu/+source/libunwind/+bug/1748597/+attachment/5052393/+files/0001-x86_64-Use-sigprocmask-from-signal-frames.patch |
|
2018-02-10 10:10:44 |
David Bartley |
attachment added |
|
0001-x86_64-Use-ucontext_t-instead-of-struct-ucontext.patch https://bugs.launchpad.net/ubuntu/+source/libunwind/+bug/1748597/+attachment/5052394/+files/0001-x86_64-Use-ucontext_t-instead-of-struct-ucontext.patch |
|
2018-02-10 10:32:11 |
Bug Watch Updater |
libunwind (Debian): status |
Unknown |
Fix Released |
|
2018-02-10 12:28:57 |
Ubuntu Foundations Team Bug Bot |
tags |
|
patch |
|
2018-02-10 12:29:04 |
Ubuntu Foundations Team Bug Bot |
bug |
|
|
added subscriber Ubuntu Review Team |
2018-02-10 23:33:17 |
David Bartley |
description |
[Impact]
When a C++ exception is thrown with libunwind linked in, the signal mask is corrupted.
For MongoDB, if the CPU profiler is enabled (which requires linking libunwind), any exception that is raised within the server may cause random signals to become unblocked on a thread. If SIGTERM becomes unblocked on any thread but the main thread, the server won't exit cleanly (this is particularly evident when running the MongoDB test suite, which starts/stops servers repeatedly).
This also seems to impact Pyston: https://lab.nexedi.com/Daetalus/Pyston/commit/1bac7510861a112a9023f821bf3e857a6fb45037
[Test Case]
I've attached the test case from the upstream Debian bug (https://bugs.debian.org/827015).
$ g++ sigtest.cpp -lpthread
Signals blocked: 1 (Hangup) 65 (Unknown signal 65)
Throw exception
Signals blocked: 1 (Hangup) 65 (Unknown signal 65)
$ g++ sigtest.cpp -lpthread -lunwind
Signals blocked: 1 (Hangup) 65 (Unknown signal 65)
Throw exception
Signals blocked: 7 (Bus error) 8 (Floating point exception) 10 (User defined signal 1) 12 (User defined signal 2) 13 (Broken pipe) 15 (Terminated) 17 (Child exited) 20 (Stopped)21 (Stopped (tty input)) 25 (File size limit exceeded) 26 (Virtual timer expired) 27 (Profiling timer expired) 28 (Window changed) 29 (I/O possible) 30 (Power failure) 31 (Bad system call) 32 (Unknown signal 32) 33 (Unknown signal 33) 34 (Real-time signal 0) 35 (Real-time signal 1) 36 (Real-time signal 2) 37 (Real-time signal 3) 38 (Real-time signal 4) 39 (Real-time signal 5) 40 (Real-time signal 6) 41 (Real-time signal 7) 42 (Real-time signal 8) 43 (Real-time signal 9) 44 (Real-time signal 10) 45 (Real-time signal 11) 46 (Real-time signal 12) 47 (Real-time signal 13) 65 (Unknown signal 65)
[Regression Potential]
This fix is already present in bionic and Debian testing, and has been for a couple months. The upstream fix has existed for over a year. |
[Impact]
When a C++ exception is thrown with libunwind linked in, the signal mask is corrupted.
For MongoDB, if the CPU profiler is enabled (which requires linking libunwind), any exception that is raised within the server may cause random signals to become unblocked on a thread. If SIGTERM becomes unblocked on any thread but the main thread, the server won't exit cleanly (this is particularly evident when running the MongoDB test suite, which starts/stops servers repeatedly).
This also seems to impact Pyston: https://lab.nexedi.com/Daetalus/Pyston/commit/1bac7510861a112a9023f821bf3e857a6fb45037
[Test Case]
I've attached the test case from the upstream Debian bug (https://bugs.debian.org/827015).
$ g++ sigtest.cpp -lpthread
$ ./a.out
Signals blocked: 1 (Hangup) 65 (Unknown signal 65)
Throw exception
Signals blocked: 1 (Hangup) 65 (Unknown signal 65)
$ g++ sigtest.cpp -lpthread -lunwind
$ ./a.out
Signals blocked: 1 (Hangup) 65 (Unknown signal 65)
Throw exception
Signals blocked: 7 (Bus error) 8 (Floating point exception) 10 (User defined signal 1) 12 (User defined signal 2) 13 (Broken pipe) 15 (Terminated) 17 (Child exited) 20 (Stopped)21 (Stopped (tty input)) 25 (File size limit exceeded) 26 (Virtual timer expired) 27 (Profiling timer expired) 28 (Window changed) 29 (I/O possible) 30 (Power failure) 31 (Bad system call) 32 (Unknown signal 32) 33 (Unknown signal 33) 34 (Real-time signal 0) 35 (Real-time signal 1) 36 (Real-time signal 2) 37 (Real-time signal 3) 38 (Real-time signal 4) 39 (Real-time signal 5) 40 (Real-time signal 6) 41 (Real-time signal 7) 42 (Real-time signal 8) 43 (Real-time signal 9) 44 (Real-time signal 10) 45 (Real-time signal 11) 46 (Real-time signal 12) 47 (Real-time signal 13) 65 (Unknown signal 65)
[Regression Potential]
This fix is already present in bionic and Debian testing, and has been for a couple months. The upstream fix has existed for over a year. |
|
2018-02-11 04:25:09 |
David Bartley |
attachment added |
|
debdiff for trusty https://bugs.launchpad.net/ubuntu/+source/libunwind/+bug/1748597/+attachment/5052974/+files/libunwind-trusty.debdiff |
|
2018-02-11 04:25:25 |
David Bartley |
attachment added |
|
debdiff for xenial https://bugs.launchpad.net/ubuntu/+source/libunwind/+bug/1748597/+attachment/5052975/+files/libunwind-xenial.debdiff |
|
2018-02-11 04:46:17 |
David Bartley |
attachment removed |
debdiff for trusty https://bugs.launchpad.net/ubuntu/+source/libunwind/+bug/1748597/+attachment/5052974/+files/libunwind-trusty.debdiff |
|
|
2018-02-11 04:46:33 |
David Bartley |
attachment added |
|
debdiff for trusty https://bugs.launchpad.net/ubuntu/+source/libunwind/+bug/1748597/+attachment/5052980/+files/libunwind-trusty.debdiff |
|
2018-07-26 10:25:59 |
James Page |
libunwind (Ubuntu): status |
New |
Triaged |
|
2018-07-26 10:26:01 |
James Page |
libunwind (Ubuntu): importance |
Undecided |
Medium |
|
2018-07-26 10:27:00 |
James Page |
nominated for series |
|
Ubuntu Xenial |
|
2018-07-26 10:27:00 |
James Page |
bug task added |
|
libunwind (Ubuntu Xenial) |
|
2018-07-26 10:27:00 |
James Page |
nominated for series |
|
Ubuntu Trusty |
|
2018-07-26 10:27:00 |
James Page |
bug task added |
|
libunwind (Ubuntu Trusty) |
|
2018-07-26 10:27:06 |
James Page |
libunwind (Ubuntu): status |
Triaged |
Fix Released |
|
2018-07-26 10:27:11 |
James Page |
libunwind (Ubuntu Xenial): status |
New |
Triaged |
|
2018-07-26 10:27:13 |
James Page |
libunwind (Ubuntu Trusty): importance |
Undecided |
Medium |
|
2018-07-26 10:27:15 |
James Page |
libunwind (Ubuntu Xenial): importance |
Undecided |
Medium |
|
2018-07-26 10:27:20 |
James Page |
libunwind (Ubuntu Trusty): status |
New |
Triaged |
|