From: micha.specht@... Date: 2017-02-17T11:00:36+00:00 Subject: [ruby-core:79573] [Ruby trunk Bug#11567] Segmentation fault CFUNC :gets Issue #11567 has been updated by Michael Specht. I'm having the same problem. Running the code as it is, I get crashes with both Ruby 2.3.1 and 2.4.0: ~~~ test.rb:18: [BUG] Segmentation fault at 0x00000000000000 ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux] -- Control frame information ----------------------------------------------- c:0003 p:---- s:0011 e:000010 CFUNC :gets c:0002 p:0027 s:0007 e:000006 BLOCK test.rb:18 [FINISH] c:0001 p:---- s:0003 e:000002 (none) [FINISH] ~~~ ~~~ test.rb:18: [BUG] Segmentation fault at 0x00000000000000 ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu] -- Control frame information ----------------------------------------------- c:0003 p:---- s:0008 e:000007 CFUNC :gets c:0002 p:0027 s:0005 e:000004 BLOCK test.rb:18 [FINISH] c:0001 p:---- s:0002 e:000001 (none) [FINISH] ~~~ I can't even get the complete output or Ctrl+C out of it, because my shell hangs after that (two different systems). ---------------------------------------- Bug #11567: Segmentation fault CFUNC :gets https://bugs.ruby-lang.org/issues/11567#change-63005 * Author: D R * Status: Feedback * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-linux] * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- Running the below code under 2.2.3 results in a segmentation fault. Runs without issue on 2.1.6. Output attached as a text file. ```rb require 'open3' require 'pp' data_accessor = Mutex.new results = {} threads = [] 200.times.each do |i| threads << Thread.new do Open3.popen3('ping localhost -c 2') do |_stdin, stdout, stderr, thread| { out: stdout, err: stderr }.each do |key, stream| t = "#{i}-" + key.to_s data_accessor.synchronize do results[t] = [] end Thread.new do until (line = stream.gets).nil? data_accessor.synchronize do results[t].push line end end end end thread.join end end end threads.each(&:join) pp results ``` ---Files-------------------------------- gets bug.txt (30.7 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: