From: "xtkoba (Tee KOBAYASHI)" Date: 2022-05-26T22:29:27+00:00 Subject: [ruby-core:108719] [Ruby master Bug#18444] Trapped TSTP causes a locking deadlock in 3.0.3 onward Issue #18444 has been updated by xtkoba (Tee KOBAYASHI). I tested this on several Linux (GNU/Linux and Android) environments. Sending `Ctrl-Z` from terminal sometimes results in "Received ..." and sometimes "deadlock" but not sticking to one result for each environment. I used the newest released versions of Ruby (2.7.6, 3.0.4, 3.1.2) but not sure what happens for older versions. Tested environments: ``` $ ruby27 -v ruby 2.7.6p219 (2022-04-12 revision c9c2245c0a) [x86_64-linux] $ ruby30 -v ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x86_64-linux] $ ruby31 -v ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-linux] $ uname -a Linux localhost 5.4.188-gentoo #1 SMP Wed Mar 30 09:04:25 JST 2022 x86_64 Intel(R) Core(TM)2 CPU U7500 @ 1.06GHz GenuineIntel GNU/Linux ``` ``` $ ruby -v ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [arm-linux-android] $ uname -a Linux localhost 3.10.49-g12ec2e6-00359-g4edd381 #1 SMP PREEMPT Tue Sep 26 20:27:28 CST 2017 armv7l ``` ``` $ ruby -v ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [aarch64-linux-android] $ uname -a Linux localhost 4.9.82-perf+ #1 SMP PREEMPT Wed Feb 27 13:05:28 CST 2019 aarch64 ``` ---------------------------------------- Bug #18444: Trapped TSTP causes a locking deadlock in 3.0.3 onward https://bugs.ruby-lang.org/issues/18444#change-97770 * Author: why-el (Mohamed Wael Khobalatte) * Status: Open * Priority: Normal * ruby -v: 3.0.3 * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- A curious case: `ruby -e 'Signal.trap("TSTP") { puts "Received a terminal stop signal, but i will sleep instead."; sleep 10 }; loop {puts 1}'` this fails with `deadlock; recursive locking (ThreadError)` when I send the SIGTSTP via my terminal. This is on Mac OS Monterey (M1). It only happens in 3.0.3 and onward (I tried 3.1.0-preview1 as well, fails there too), when I try 3.0.2, the signal is handled properly. -- https://bugs.ruby-lang.org/ Unsubscribe: