From: "tom_dalling (Tom Dalling)" Date: 2022-02-25T10:55:46+00:00 Subject: [ruby-core:107743] [Ruby master Bug#17382] Segfault in String#inspect Issue #17382 has been updated by tom_dalling (Tom Dalling). File repro.zip added I've attached code that reproduces the issue, along with output and the macOS crash report from my machine. Just run `bundle` and then `ruby segfault.rb`. It reliably segfaults for me within a minute or two on Ruby 2.7.5. I tried it on Ruby 3.1.1, and it doesn't appear to have the same problem. We started seeing this segfault after upgrading to Ruby 2.7, and continue to see it almost daily in production. It seems that both `rails` and `anyway_config` need to be `require`d to trigger the issue. I'm not sure why, but if I had to guess I would say that it's something related to either refinements or pattern matching. With this new information, could we reopen the issue please? ---------------------------------------- Bug #17382: Segfault in String#inspect https://bugs.ruby-lang.org/issues/17382#change-96668 * Author: lionelperrin (Lionel Perrin) * Status: Closed * Priority: Normal * ruby -v: ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux] * Backport: 2.5: UNKNOWN, 2.6: UNKNOWN, 2.7: UNKNOWN ---------------------------------------- Hello, We experienced a segfault in our application. It seems that it happened right after we've upgraded from ruby 2.6 to ruby 2.7.2. The faulting ruby code is actionpack-6.0.3.4/lib/action_controller/log_subscriber.rb:16: ``` ruby info " Parameters: #{params.inspect}" unless params.empty? ``` However, the problem seems to be due to string.c:10702 Here is an extract of the output from ruby (full output attached): ``` shell -- Control frame information ----------------------------------------------- c:0073 p:---- s:0500 e:000499 CFUNC :inspect c:0072 p:---- s:0497 e:000496 CFUNC :inspect c:0071 p:0137 s:0493 e:000490 METHOD /usr/app/rubygems/ruby/2.7.0/gems/actionpack-6.0.3.4/lib/action_controller/log_subscriber.rb:16 c:0070 p:0038 s:0483 e:000482 METHOD /usr/app/rubygems/ruby/2.7.0/gems/activesupport-6.0.3.4/lib/active_support/subscriber.rb:145 ... -- Ruby level backtrace information ---------------------------------------- /usr/app/rubygems/ruby/2.7.0/gems/puma-5.0.4/lib/puma/thread_pool.rb:145:in `block in spawn_thread' /usr/app/rubygems/ruby/2.7.0/gems/puma-5.0.4/lib/puma/server.rb:430:in `process_client' /usr/app/rubygems/ruby/2.7.0/gems/puma-5.0.4/lib/puma/request.rb:75:in `handle_request' ... -- Machine register context ------------------------------------------------ RIP: 0x00007fd7ab8b0f5c RBP: 0x00007fd7844b92c8 RSP: 0x00007fd7a4af7fe0 RAX: 0x00005597fb1672c0 RBX: 0x0000000000000000 RCX: 0x00007fd7ab8b1060 RDX: 0x0000000000000000 RDI: 0x0000000000000000 RSI: 0x0000000000000000 R8: 0x00007fd7a4bf8d50 R9: 0x00005597ffce6378 R10: 0x0000000055550083 R11: 0x0000000000000000 R12: 0x0000000000000000 R13: 0x00005597fb1b0038 R14: 0x00005597fb1672c0 R15: 0x0000000000000000 EFL: 0x0000000000010206 -- C level backtrace information ------------------------------------------- /usr/local/lib/libruby.so.2.7(rb_vm_bugreport+0x555) [0x7fd7ab9176f5] vm_dump.c:755 [0x7fd7ab756427] /usr/local/lib/libruby.so.2.7(sigsegv+0x4b) [0x7fd7ab88311b] signal.c:946 /lib/x86_64-linux-gnu/libpthread.so.0(__restore_rt+0x0) [0x7fd7ab45f730] /usr/local/lib/libruby.so.2.7(rb_str_symname_p+0x1c) [0x7fd7ab8b0f5c] string.c:10702 /usr/local/lib/libruby.so.2.7(sym_inspect+0x1a) [0x7fd7ab8b107a] string.c:10761 [0x7fd7ab909271] /usr/local/lib/libruby.so.2.7(rb_funcallv_with_cc+0x118) [0x7fd7ab90bb68] vm_eval.c:1013 ``` ---Files-------------------------------- ruby_segfault_log.txt (86.2 KB) segfault.rb (1.03 KB) log.txt (40.3 KB) repro.zip (17.5 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: