** Description changed:

- 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).
+ [Impact]
+ When a C++ exception is thrown with libunwind linked in, the signal mask is 
corrupted.
  
- Without this fix, libunwind will corrupt the signal mask, which breaks
- the CPU profiler in MongoDB, among other things.
+ 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.

** Patch 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

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1748597

Title:
  Please backport fix for bugs.debian.org/827015

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libunwind/+bug/1748597/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to