Project

General

Profile

Bug #15021

Segfault when compiling certain code on Ruby 2.5.1

Added by st0012 (Stan Lo) 11 months ago. Updated 28 days ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:88625]

Description

Steps to reproduce

save the following code to code.rb

code =<<CODE
if false
  new(arg: $arg)
end
CODE

RubyVM::InstructionSequence.compile(code).to_binary

and simply run ruby foo.rb then you'll get

code.rb:7: [BUG] Segmentation fault at 0x0000000000000000
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin18]

-- Crash Report log information --------------------------------------------
   See Crash Report log file under the one of following:
     * ~/Library/Logs/DiagnosticReports
     * /Library/Logs/DiagnosticReports
   for more details.
Don't forget to include the above Crash Report log file in bug reports.

-- Control frame information -----------------------------------------------
c:0003 p:---- s:0011 e:000010 CFUNC  :to_binary
c:0002 p:0021 s:0007 E:000d28 EVAL   code.rb:7 [FINISH]
c:0001 p:0000 s:0003 E:001c60 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
code.rb:7:in `<main>'
code.rb:7:in `to_binary'

-- Machine register context ------------------------------------------------
 rax: 0x00007ffee7896b50 rbx: 0x0000000000000000 rcx: 0x0000000000000000
 rdx: 0x00007ffee7896b60 rdi: 0x00007ffee7896b50 rsi: 0x00007ff0314f65f0
 rbp: 0x00007ffee7896be0 rsp: 0x00007ffee7896b50  r8: 0x0000000000000001
  r9: 0x0000000000000000 r10: 0x0000000000000009 r11: 0x0000000eb63a0560
 r12: 0x000000000000004c r13: 0x00007ff03381c160 r14: 0x0000000000000000
 r15: 0x00007ff0314f6750 rip: 0x00000001083b878e rfl: 0x0000000000010246

-- C level backtrace information -------------------------------------------
0   ruby                                0x0000000108559c77 rb_vm_bugreport + 135
1   ruby                                0x00000001083daa88 rb_bug_context + 472
2   ruby                                0x00000001084caa61 sigsegv + 81
3   libsystem_platform.dylib            0x00007fff5f6fdd7a _sigtramp + 26
4   ruby                                0x00000001083b878e ibf_dump_ci_entries + 270
5   ruby                                0x000000010839f80c ibf_dump_iseq + 828
6   ruby                                0x000000010839f07d iseq_ibf_dump + 397
7   ruby                                0x00000001084274ca iseqw_to_binary + 74
8   ruby                                0x000000010854d214 vm_call_cfunc + 292
9   ruby                                0x0000000108535e01 vm_exec_core + 12785
10  ruby                                0x000000010854792e vm_exec + 142
11  ruby                                0x00000001083e4981 ruby_exec_internal + 177
12  ruby                                0x00000001083e4878 ruby_run_node + 56
13  ruby                                0x0000000108368c1f main + 79

-- Other runtime information -----------------------------------------------

* Loaded script: code.rb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/x86_64-darwin18/enc/encdb.bundle
    5 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/x86_64-darwin18/enc/trans/transdb.bundle
    6 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/x86_64-darwin18/rbconfig.rb
    7 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/compatibility.rb
    8 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/defaults.rb
    9 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/deprecate.rb
   10 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/errors.rb
   11 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/version.rb
   12 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/requirement.rb
   13 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/platform.rb
   14 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/basic_specification.rb
   15 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/stub_specification.rb
   16 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/util/list.rb
   17 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/x86_64-darwin18/stringio.bundle
   18 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri/rfc2396_parser.rb
   19 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri/rfc3986_parser.rb
   20 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri/common.rb
   21 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri/generic.rb
   22 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri/ftp.rb
   23 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri/http.rb
   24 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri/https.rb
   25 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri/ldap.rb
   26 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri/ldaps.rb
   27 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri/mailto.rb
   28 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/uri.rb
   29 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/specification.rb
   30 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/exceptions.rb
   31 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_gem.rb
   32 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/monitor.rb
   33 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb
   34 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb
   35 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/dependency.rb
   36 /Users/st0012/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems/path_support.rb

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

[IMPORTANT]
Don't forget to include the Crash Report log file under
DiagnosticReports directory in bug reports.

[1]    77987 abort      ruby code.rb

Experimented Platform and Versions

  • ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin18]
  • ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]

Related issues

Is duplicate of Ruby master - Bug #14897: Unexpected behavior of `if` in specific codeClosedActions

History

Updated by st0012 (Stan Lo) 11 months ago

Sorry there's a small typo. The command to run the script is ruby code.rb not ruby foo.rb

Updated by shyouhei (Shyouhei Urabe) 11 months ago

Can reproduce this on 2.5, but not on trunk. Seems 2.5 needs a backport?
Not sure which is the exact revision though.

Updated by rafaelfranca (Rafael Fran├ža) 11 months ago

I think this is duplicate of https://bugs.ruby-lang.org/issues/14897 which contain the fix and the backport request tags.

#4

Updated by jeremyevans0 (Jeremy Evans) 28 days ago

  • Is duplicate of Bug #14897: Unexpected behavior of `if` in specific code added
#5

Updated by jeremyevans0 (Jeremy Evans) 28 days ago

  • Status changed from Open to Closed

Also available in: Atom PDF