Project

General

Profile

Bug #15307

TestJIT#test_{catching_deep_exception,compile_insn_throw,lambda_longjmp} segfaults with gcc-8 -fcf-protection

Added by vo.x (Vit Ondruch) over 1 year ago. Updated over 1 year ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.6.0preview3 (2018-11-06 trunk 65578) [x86_64-linux]
[ruby-core:89812]

Description

  1) Failure:
TestJIT#test_catching_deep_exception [/builddir/build/BUILD/ruby-2.6.0-preview3/test/ruby/test_jit.rb:654]:
Failed to run script with JIT:

def catch_true(paths, prefixes) # catch_except_p: TRUE
prefixes.each do |prefix| # catch_except_p: TRUE
paths.each do |path| # catch_except_p: FALSE
return path
end
end
end

def wrapper(paths, prefixes)
catch_true(paths, prefixes)
end

print wrapper(['1'], ['2'])


stdout:

stderr:

JIT success (58.5ms): wrapper@-e:10 -> /tmp/_ruby_mjit_p5145u0.c
JIT success (108.5ms): catch_true@-e:2 -> /tmp/_ruby_mjit_p5145u1.c
JIT success (90.8ms): block in catch_true@-e:3 -> /tmp/_ruby_mjit_p5145u2.c
JIT success (45.3ms): block (2 levels) in catch_true@-e:4 -> /tmp/_ruby_mjit_p5145u3.c
-e:5: [BUG] Segmentation fault at 0xfffffffffffffff8
ruby 2.6.0preview3 (2018-11-06 trunk 65578) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0008 p:0005 s:0036 e:000034 BLOCK -e:5 [FINISH]
c:0007 p:---- s:0031 e:000030 CFUNC :each
c:0006 p:0007 s:0027 e:000026 BLOCK -e:4 [FINISH]
c:0005 p:---- s:0023 e:000022 CFUNC :each
c:0004 p:0006 s:0019 e:000018 METHOD -e:3 [FINISH]
c:0003 p:0008 s:0013 e:000012 METHOD -e:11
c:0002 p:0033 s:0007 e:000005 EVAL -e:14 [FINISH]
c:0001 p:0000 s:0003 E:001dc0 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
-e:14:in <main>'
-e:11:in
wrapper'
-e:3:in catch_true'
-e:3:in
each'
-e:4:in block in catch_true'
-e:4:in
each'
-e:5:in `block (2 levels) in catch_true'

-- Machine register context ------------------------------------------------
RIP: 0x00007fdf0567d2a0 RBP: 0x00007fffdd24ca60 RSP: 0x0000000000000000
RAX: 0x000055c05ff18790 RBX: 0x0000000000000000 RCX: 0x000055c05fe4c508
RDX: 0x0000000000000001 RDI: 0x000055c05fe363e8 RSI: 0x0000000000000000
R8: 0x0000000000000002 R9: 0x000055c05ff6a030 R10: 0x0000000000000002
R11: 0x0000000000000000 R12: 0x0000000000000001 R13: 0x0000000022220021
R14: 0x000055c05fe4c968 R15: 0x0000000000000000 EFL: 0x0000000000010246

-- C level backtrace information -------------------------------------------
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_print_backtrace+0x19) [0x7fdf0568b3d9] vm_dump.c:715
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_bugreport+0x220) [0x7fdf0568b610] vm_dump.c:985
[0x7fdf0552d38f]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(sigsegv+0x46) [0x7fdf05614726] signal.c:998
/lib64/libc.so.6(__restore_rt+0x0) [0x7fdf052f65c0]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0x500) [0x7fdf0567d2a0] vm.c:2037
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_yield+0x352) [0x7fdf056839e2] vm.c:1007
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_ary_each+0x3c) [0x7fdf054c024c] array.c:2076
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(vm_call_cfunc+0x11a) [0x7fdf05672eea] vm_insnhelper.c:1905
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(vm_call_method+0x33) [0x7fdf0567f4b3] vm_insnhelper.c:2391
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(vm_call_general) vm_insnhelper.c:2362
/tmp/_ruby_mjit_p5145u2.so(0x7fdf0276c905) [0x7fdf0276c905]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0x98d) [0x7fdf0567d72d] mjit.h:115
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_yield+0x352) [0x7fdf056839e2] vm.c:1007
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_ary_each+0x3c) [0x7fdf054c024c] array.c:2076
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(vm_call_cfunc+0x11a) [0x7fdf05672eea] vm_insnhelper.c:1905
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(vm_call_method+0x33) [0x7fdf0567f4b3] vm_insnhelper.c:2391
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(vm_call_general) vm_insnhelper.c:2362
[0x7fdf027708f5]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0x98d) [0x7fdf0567d72d] mjit.h:115
[0x7fdf054852a5]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(vm_exec_core+0x357a) [0x7fdf0567a55a] insns.def:766
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0x28e) [0x7fdf0567d02e] vm.c:1821
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(ruby_exec_internal+0xee) [0x7fdf0553139e] eval.c:261
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(ruby_exec_node+0x21) [0x7fdf05533401] eval.c:325
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(ruby_run_node+0x32) [0x7fdf05535dc2] eval.c:317
/builddir/build/BUILD/ruby-2.6.0-preview3/ruby(main+0x73) [0x55c05f4a61e3] ./main.c:42

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

  • Loaded script: -e

  • Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
    5 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so

  • Process memory map:

55c05f4a5000-55c05f4a6000 r--p 00000000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
55c05f4a6000-55c05f4a7000 r-xp 00001000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
55c05f4a7000-55c05f4a8000 r--p 00002000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
55c05f4a8000-55c05f4a9000 r--p 00002000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
55c05f4a9000-55c05f4aa000 rw-p 00003000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
55c05fe35000-55c05ffaa000 rw-p 00000000 00:00 0 [heap]
7fdefc000000-7fdefc021000 rw-p 00000000 00:00 0
7fdefc021000-7fdf00000000 ---p 00000000 00:00 0
7fdf013bc000-7fdf016cc000 r--s 00000000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7fdf016cc000-7fdf02741000 r--s 00000000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7fdf02741000-7fdf02748000 r--s 00000000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
7fdf02748000-7fdf0274b000 r--p 00000000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7fdf0274b000-7fdf0275d000 r-xp 00003000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7fdf0275d000-7fdf02760000 r--p 00015000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7fdf02760000-7fdf02761000 ---p 00018000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7fdf02761000-7fdf02762000 r--p 00018000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7fdf02762000-7fdf02763000 rw-p 00019000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7fdf02767000-7fdf02768000 r--p 00000000 00:3a 1065512 /tmp/_ruby_mjit_p5145u3.so (deleted)
7fdf02768000-7fdf02769000 r-xp 00001000 00:3a 1065512 /tmp/_ruby_mjit_p5145u3.so (deleted)
7fdf02769000-7fdf0276a000 r--p 00002000 00:3a 1065512 /tmp/_ruby_mjit_p5145u3.so (deleted)
7fdf0276a000-7fdf0276b000 r--p 00002000 00:3a 1065512 /tmp/_ruby_mjit_p5145u3.so (deleted)
7fdf0276b000-7fdf0276c000 r--p 00000000 00:3a 1066099 /tmp/_ruby_mjit_p5145u2.so (deleted)
7fdf0276c000-7fdf0276d000 r-xp 00001000 00:3a 1066099 /tmp/_ruby_mjit_p5145u2.so (deleted)
7fdf0276d000-7fdf0276e000 r--p 00002000 00:3a 1066099 /tmp/_ruby_mjit_p5145u2.so (deleted)
7fdf0276e000-7fdf0276f000 r--p 00002000 00:3a 1066099 /tmp/_ruby_mjit_p5145u2.so (deleted)
7fdf0276f000-7fdf02770000 r--p 00000000 00:3a 1066096 /tmp/_ruby_mjit_p5145u1.so (deleted)
7fdf02770000-7fdf02771000 r-xp 00001000 00:3a 1066096 /tmp/_ruby_mjit_p5145u1.so (deleted)
7fdf02771000-7fdf02772000 r--p 00002000 00:3a 1066096 /tmp/_ruby_mjit_p5145u1.so (deleted)
7fdf02772000-7fdf02773000 r--p 00002000 00:3a 1066096 /tmp/_ruby_mjit_p5145u1.so (deleted)
7fdf02773000-7fdf02774000 r--p 00000000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7fdf02774000-7fdf02776000 r-xp 00001000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7fdf02776000-7fdf02777000 r--p 00003000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7fdf02777000-7fdf02778000 r--p 00003000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7fdf02778000-7fdf02779000 rw-p 00000000 00:00 0
7fdf02779000-7fdf0277a000 r--p 00000000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7fdf0277a000-7fdf0277b000 r-xp 00001000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7fdf0277b000-7fdf0277c000 r--p 00002000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7fdf0277c000-7fdf0277d000 r--p 00002000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7fdf0277d000-7fdf0277e000 rw-p 00000000 00:00 0
7fdf0277e000-7fdf0277f000 ---p 00000000 00:00 0
7fdf0277f000-7fdf0508c000 rw-p 00000000 00:00 0
7fdf0508c000-7fdf05099000 r--p 00000000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7fdf05099000-7fdf05134000 r-xp 0000d000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7fdf05134000-7fdf051cf000 r--p 000a8000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7fdf051cf000-7fdf051d0000 r--p 00142000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7fdf051d0000-7fdf051d1000 rw-p 00143000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7fdf051d1000-7fdf051d3000 r--p 00000000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7fdf051d3000-7fdf051e8000 r-xp 00002000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7fdf051e8000-7fdf05202000 r--p 00017000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7fdf05202000-7fdf05203000 r--p 00030000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7fdf05203000-7fdf05204000 rw-p 00031000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7fdf05204000-7fdf0520e000 rw-p 00000000 00:00 0
7fdf0520e000-7fdf0520f000 r--p 00000000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7fdf0520f000-7fdf05211000 r-xp 00001000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7fdf05211000-7fdf05212000 r--p 00003000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7fdf05212000-7fdf05213000 r--p 00003000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7fdf05213000-7fdf05214000 rw-p 00004000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7fdf05214000-7fdf0521f000 r--p 00000000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7fdf0521f000-7fdf05277000 r-xp 0000b000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7fdf05277000-7fdf0528e000 r--p 00063000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7fdf0528e000-7fdf0528f000 ---p 0007a000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7fdf0528f000-7fdf05291000 r--p 0007a000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7fdf05291000-7fdf05292000 rw-p 0007c000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7fdf05292000-7fdf05294000 r--p 00000000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7fdf05294000-7fdf05298000 r-xp 00002000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7fdf05298000-7fdf0529a000 r--p 00006000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7fdf0529a000-7fdf0529b000 r--p 00007000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7fdf0529b000-7fdf0529c000 rw-p 00008000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7fdf0529c000-7fdf052a2000 r--p 00000000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7fdf052a2000-7fdf052b2000 r-xp 00006000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7fdf052b2000-7fdf052b8000 r--p 00016000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7fdf052b8000-7fdf052b9000 r--p 0001b000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7fdf052b9000-7fdf052ba000 rw-p 0001c000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7fdf052ba000-7fdf052be000 rw-p 00000000 00:00 0
7fdf052be000-7fdf052e0000 r--p 00000000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7fdf052e0000-7fdf0542d000 r-xp 00022000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7fdf0542d000-7fdf05479000 r--p 0016f000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7fdf05479000-7fdf0547a000 ---p 001bb000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7fdf0547a000-7fdf0547e000 r--p 001bb000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7fdf0547e000-7fdf05480000 rw-p 001bf000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7fdf05480000-7fdf05484000 rw-p 00000000 00:00 0
7fdf05484000-7fdf05485000 r--p 00000000 00:3a 1066093 /tmp/_ruby_mjit_p5145u0.so (deleted)
7fdf05485000-7fdf05486000 r-xp 00001000 00:3a 1066093 /tmp/_ruby_mjit_p5145u0.so (deleted)
7fdf05486000-7fdf05487000 r--p 00002000 00:3a 1066093 /tmp/_ruby_mjit_p5145u0.so (deleted)
7fdf05487000-7fdf05488000 r--p 00002000 00:3a 1066093 /tmp/_ruby_mjit_p5145u0.so (deleted)
7fdf05488000-7fdf054b3000 r--p 00000000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7fdf054b3000-7fdf05695000 r-xp 0002b000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7fdf05695000-7fdf05773000 r--p 0020d000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7fdf05773000-7fdf05774000 ---p 002eb000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7fdf05774000-7fdf0577c000 r--p 002eb000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7fdf0577c000-7fdf0577d000 rw-p 002f3000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7fdf0577d000-7fdf05790000 rw-p 00000000 00:00 0
7fdf05790000-7fdf05791000 r--p 00000000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7fdf05791000-7fdf057b1000 r-xp 00001000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7fdf057b1000-7fdf057b9000 r--p 00021000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7fdf057ba000-7fdf057bb000 r--p 00029000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7fdf057bb000-7fdf057bc000 rw-p 0002a000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7fdf057bc000-7fdf057bd000 rw-p 00000000 00:00 0
7fffdca51000-7fffdd250000 rw-p 00000000 00:00 0 [stack]
7fffdd2a8000-7fffdd2ab000 r--p 00000000 00:00 0 [vvar]
7fffdd2ab000-7fffdd2ad000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]

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

.
<true> expected but was
<nil>.

  2) Failure:
TestJIT#test_compile_insn_throw [/builddir/build/BUILD/ruby-2.6.0-preview3/test/ruby/test_jit.rb:394]:
Failed to run script with JIT:

def test
proc do
if 1+1 == 1
return 3
else
return 4
end
5
end.call
end
print test


stdout:

stderr:

JIT success (114.6ms): test@-e:2 -> /tmp/_ruby_mjit_p5933u0.c
JIT success (94.4ms): block in test@-e:3 -> /tmp/_ruby_mjit_p5933u1.c
-e:7: [BUG] Segmentation fault at 0xfffffffffffffff8
ruby 2.6.0preview3 (2018-11-06 trunk 65578) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0004 p:0023 s:0015 e:000013 BLOCK -e:7 [FINISH]
c:0003 p:0008 s:0011 E:001c90 METHOD -e:10
c:0002 p:0015 s:0007 e:000005 EVAL -e:12 [FINISH]
c:0001 p:0000 s:0003 E:001a80 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
-e:12:in <main>'
-e:10:in
test'
-e:7:in `block in test'

-- Machine register context ------------------------------------------------
RIP: 0x00007f56cb70d2a0 RBP: 0x00007ffc385c8930 RSP: 0x0000000000000000
RAX: 0x0000558c671c8790 RBX: 0x0000000000000000 RCX: 0x0000558c670fcb68
RDX: 0x0000000000000001 RDI: 0x0000558c670e63e8 RSI: 0x0000000000000000
R8: 0x0000000000000002 R9: 0x0000558c6721b740 R10: 0x0000000000000002
R11: 0x0000000000000000 R12: 0x00007f56cb81def0 R13: 0x0000558c670e63e8
R14: 0x0000558c6721b580 R15: 0x0000000000000000 EFL: 0x0000000000010246

-- C level backtrace information -------------------------------------------
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_print_backtrace+0x19) [0x7f56cb71b3d9] vm_dump.c:715
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_bugreport+0x220) [0x7f56cb71b610] vm_dump.c:985
[0x7f56cb5bd38f]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(sigsegv+0x46) [0x7f56cb6a4726] signal.c:998
/lib64/libc.so.6(__restore_rt+0x0) [0x7f56cb3865c0]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0x500) [0x7f56cb70d2a0] vm.c:2037
/tmp/_ruby_mjit_p5933u0.so(0x7f56c87ffbe5) [0x7f56c87ffbe5]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(vm_exec_core+0x357a) [0x7f56cb70a55a] insns.def:766
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0x28e) [0x7f56cb70d02e] vm.c:1821
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(ruby_exec_internal+0xee) [0x7f56cb5c139e] eval.c:261
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(ruby_exec_node+0x21) [0x7f56cb5c3401] eval.c:325
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(ruby_run_node+0x32) [0x7f56cb5c5dc2] eval.c:317
/builddir/build/BUILD/ruby-2.6.0-preview3/ruby(main+0x73) [0x558c6702c1e3] ./main.c:42

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

  • Loaded script: -e

  • Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
    5 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so

  • Process memory map:

558c6702b000-558c6702c000 r--p 00000000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
558c6702c000-558c6702d000 r-xp 00001000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
558c6702d000-558c6702e000 r--p 00002000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
558c6702e000-558c6702f000 r--p 00002000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
558c6702f000-558c67030000 rw-p 00003000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
558c670e5000-558c6725a000 rw-p 00000000 00:00 0 [heap]
7f56c2f8b000-7f56c4000000 r--s 00000000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f56c4000000-7f56c4021000 rw-p 00000000 00:00 0
7f56c4021000-7f56c8000000 ---p 00000000 00:00 0
7f56c84c8000-7f56c87d8000 r--s 00000000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f56c87d8000-7f56c87df000 r--s 00000000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
7f56c87df000-7f56c87e2000 r--p 00000000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f56c87e2000-7f56c87f4000 r-xp 00003000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f56c87f4000-7f56c87f7000 r--p 00015000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f56c87f7000-7f56c87f8000 ---p 00018000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f56c87f8000-7f56c87f9000 r--p 00018000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f56c87f9000-7f56c87fa000 rw-p 00019000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f56c87fe000-7f56c87ff000 r--p 00000000 00:3a 1067157 /tmp/_ruby_mjit_p5933u0.so (deleted)
7f56c87ff000-7f56c8801000 r-xp 00001000 00:3a 1067157 /tmp/_ruby_mjit_p5933u0.so (deleted)
7f56c8801000-7f56c8802000 r--p 00003000 00:3a 1067157 /tmp/_ruby_mjit_p5933u0.so (deleted)
7f56c8802000-7f56c8803000 r--p 00003000 00:3a 1067157 /tmp/_ruby_mjit_p5933u0.so (deleted)
7f56c8803000-7f56c8804000 r--p 00000000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7f56c8804000-7f56c8806000 r-xp 00001000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7f56c8806000-7f56c8807000 r--p 00003000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7f56c8807000-7f56c8808000 r--p 00003000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7f56c8808000-7f56c8809000 rw-p 00000000 00:00 0
7f56c8809000-7f56c880a000 r--p 00000000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7f56c880a000-7f56c880b000 r-xp 00001000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7f56c880b000-7f56c880c000 r--p 00002000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7f56c880c000-7f56c880d000 r--p 00002000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7f56c880d000-7f56c880e000 rw-p 00000000 00:00 0
7f56c880e000-7f56c880f000 ---p 00000000 00:00 0
7f56c880f000-7f56cb11c000 rw-p 00000000 00:00 0
7f56cb11c000-7f56cb129000 r--p 00000000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7f56cb129000-7f56cb1c4000 r-xp 0000d000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7f56cb1c4000-7f56cb25f000 r--p 000a8000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7f56cb25f000-7f56cb260000 r--p 00142000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7f56cb260000-7f56cb261000 rw-p 00143000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7f56cb261000-7f56cb263000 r--p 00000000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7f56cb263000-7f56cb278000 r-xp 00002000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7f56cb278000-7f56cb292000 r--p 00017000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7f56cb292000-7f56cb293000 r--p 00030000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7f56cb293000-7f56cb294000 rw-p 00031000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7f56cb294000-7f56cb29e000 rw-p 00000000 00:00 0
7f56cb29e000-7f56cb29f000 r--p 00000000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7f56cb29f000-7f56cb2a1000 r-xp 00001000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7f56cb2a1000-7f56cb2a2000 r--p 00003000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7f56cb2a2000-7f56cb2a3000 r--p 00003000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7f56cb2a3000-7f56cb2a4000 rw-p 00004000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7f56cb2a4000-7f56cb2af000 r--p 00000000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f56cb2af000-7f56cb307000 r-xp 0000b000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f56cb307000-7f56cb31e000 r--p 00063000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f56cb31e000-7f56cb31f000 ---p 0007a000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f56cb31f000-7f56cb321000 r--p 0007a000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f56cb321000-7f56cb322000 rw-p 0007c000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f56cb322000-7f56cb324000 r--p 00000000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7f56cb324000-7f56cb328000 r-xp 00002000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7f56cb328000-7f56cb32a000 r--p 00006000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7f56cb32a000-7f56cb32b000 r--p 00007000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7f56cb32b000-7f56cb32c000 rw-p 00008000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7f56cb32c000-7f56cb332000 r--p 00000000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7f56cb332000-7f56cb342000 r-xp 00006000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7f56cb342000-7f56cb348000 r--p 00016000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7f56cb348000-7f56cb349000 r--p 0001b000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7f56cb349000-7f56cb34a000 rw-p 0001c000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7f56cb34a000-7f56cb34e000 rw-p 00000000 00:00 0
7f56cb34e000-7f56cb370000 r--p 00000000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f56cb370000-7f56cb4bd000 r-xp 00022000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f56cb4bd000-7f56cb509000 r--p 0016f000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f56cb509000-7f56cb50a000 ---p 001bb000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f56cb50a000-7f56cb50e000 r--p 001bb000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f56cb50e000-7f56cb510000 rw-p 001bf000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f56cb510000-7f56cb514000 rw-p 00000000 00:00 0
7f56cb514000-7f56cb515000 r--p 00000000 00:3a 1066472 /tmp/_ruby_mjit_p5933u1.so (deleted)
7f56cb515000-7f56cb516000 r-xp 00001000 00:3a 1066472 /tmp/_ruby_mjit_p5933u1.so (deleted)
7f56cb516000-7f56cb517000 r--p 00002000 00:3a 1066472 /tmp/_ruby_mjit_p5933u1.so (deleted)
7f56cb517000-7f56cb518000 r--p 00002000 00:3a 1066472 /tmp/_ruby_mjit_p5933u1.so (deleted)
7f56cb518000-7f56cb543000 r--p 00000000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f56cb543000-7f56cb725000 r-xp 0002b000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f56cb725000-7f56cb803000 r--p 0020d000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f56cb803000-7f56cb804000 ---p 002eb000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f56cb804000-7f56cb80c000 r--p 002eb000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f56cb80c000-7f56cb80d000 rw-p 002f3000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f56cb80d000-7f56cb820000 rw-p 00000000 00:00 0
7f56cb820000-7f56cb821000 r--p 00000000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7f56cb821000-7f56cb841000 r-xp 00001000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7f56cb841000-7f56cb849000 r--p 00021000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7f56cb84a000-7f56cb84b000 r--p 00029000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7f56cb84b000-7f56cb84c000 rw-p 0002a000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7f56cb84c000-7f56cb84d000 rw-p 00000000 00:00 0
7ffc37dcc000-7ffc385cb000 rw-p 00000000 00:00 0 [stack]
7ffc385df000-7ffc385e2000 r--p 00000000 00:00 0 [vvar]
7ffc385e2000-7ffc385e4000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]

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

.
<true> expected but was
<nil>.

  3) Failure:
TestJIT#test_lambda_longjmp [/builddir/build/BUILD/ruby-2.6.0-preview3/test/ruby/test_jit.rb:773]:
Failed to run script with JIT:

fib = lambda do |x|
return x if x == 0 || x == 1
fib.call(x-1) + fib.call(x-2)
end
print fib.call(5)


stdout:

stderr:

JIT success (150.3ms): block in @-e:2 -> /tmp/_ruby_mjit_p5985u0.c
-e:3: [BUG] Segmentation fault at 0xfffffffffffffff8
ruby 2.6.0preview3 (2018-11-06 trunk 65578) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0007 p:0021 s:0029 e:000027 BLOCK -e:3 [FINISH]
c:0006 p:0033 s:0024 e:000023 BLOCK -e:4 [FINISH]
c:0005 p:0033 s:0020 e:000019 BLOCK -e:4 [FINISH]
c:0004 p:0033 s:0016 e:000015 BLOCK -e:4 [FINISH]
c:0003 p:0033 s:0012 e:000011 BLOCK -e:4
c:0002 p:0015 s:0008 E:0023b8 EVAL -e:6 [FINISH]
c:0001 p:0000 s:0003 E:0023e0 (none) [FINISH]

-- Ruby level backtrace information ----------------------------------------
-e:6:in <main>'
-e:4:in
block in '
-e:4:in block in <main>'
-e:4:in
block in '
-e:4:in block in <main>'
-e:3:in
block in '

-- Machine register context ------------------------------------------------
RIP: 0x00007f0121da1539 RBP: 0x00007ffc10720500 RSP: 0x0000000000000000
RAX: 0x00007f01217abec0 RBX: 0x00007f01217abe88 RCX: 0x000055dfd6578c88
RDX: 0x0000000000000001 RDI: 0x000055dfd655f3e8 RSI: 0x0000000000000001
R8: 0x000055dfd66945a4 R9: 0x000055dfd65f7220 R10: 0x0000000000000002
R11: 0x0000000000000030 R12: 0x000055dfd655f3e8 R13: 0x0000000000000003
R14: 0x00007ffc10720520 R15: 0x00007f0121eb1ef0 EFL: 0x0000000000010216

-- C level backtrace information -------------------------------------------
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_print_backtrace+0x19) [0x7f0121daf3d9] vm_dump.c:715
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_bugreport+0x220) [0x7f0121daf610] vm_dump.c:985
[0x7f0121c5138f]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(sigsegv+0x46) [0x7f0121d38726] signal.c:998
/lib64/libc.so.6(__restore_rt+0x0) [0x7f0121a1a5c0]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0x799) [0x7f0121da1539] vm.c:1894
/tmp/_ruby_mjit_p5985u0.so(0x7f011ee93a32) [0x7f011ee93a32]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0xfc) [0x7f0121da0e9c] mjit.h:127
[0x7f011ee93a32]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0xfc) [0x7f0121da0e9c] mjit.h:127
[0x7f011ee93a32]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0xfc) [0x7f0121da0e9c] mjit.h:127
[0x7f011ee93a32]
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(vm_exec_core+0x357a) [0x7f0121d9e55a] insns.def:766
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(rb_vm_exec+0x28e) [0x7f0121da102e] vm.c:1821
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(ruby_exec_internal+0xee) [0x7f0121c5539e] eval.c:261
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(ruby_exec_node+0x21) [0x7f0121c57401] eval.c:325
/builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0(ruby_run_node+0x32) [0x7f0121c59dc2] eval.c:317
/builddir/build/BUILD/ruby-2.6.0-preview3/ruby(main+0x73) [0x55dfd5f6c1e3] ./main.c:42

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

  • Loaded script: -e

  • Loaded features:

    0 enumerator.so
    1 thread.rb
    2 rational.so
    3 complex.so
    4 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
    5 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so

  • Process memory map:

55dfd5f6b000-55dfd5f6c000 r--p 00000000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
55dfd5f6c000-55dfd5f6d000 r-xp 00001000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
55dfd5f6d000-55dfd5f6e000 r--p 00002000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
55dfd5f6e000-55dfd5f6f000 r--p 00002000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
55dfd5f6f000-55dfd5f70000 rw-p 00003000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
55dfd655e000-55dfd66d4000 rw-p 00000000 00:00 0 [heap]
7f0118000000-7f0118021000 rw-p 00000000 00:00 0
7f0118021000-7f011c000000 ---p 00000000 00:00 0
7f011daeb000-7f011ddfb000 r--s 00000000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f011ddfb000-7f011ee70000 r--s 00000000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f011ee70000-7f011ee77000 r--s 00000000 fd:11 796839 /builddir/build/BUILD/ruby-2.6.0-preview3/ruby
7f011ee77000-7f011ee7a000 r--p 00000000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f011ee7a000-7f011ee8c000 r-xp 00003000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f011ee8c000-7f011ee8f000 r--p 00015000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f011ee8f000-7f011ee90000 ---p 00018000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f011ee90000-7f011ee91000 r--p 00018000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f011ee91000-7f011ee92000 rw-p 00019000 fd:11 1179667 /usr/lib64/libgcc_s-8-20181105.so.1
7f011ee92000-7f011ee93000 r--p 00000000 00:3a 1065924 /tmp/_ruby_mjit_p5985u0.so (deleted)
7f011ee93000-7f011ee95000 r-xp 00001000 00:3a 1065924 /tmp/_ruby_mjit_p5985u0.so (deleted)
7f011ee95000-7f011ee96000 r--p 00003000 00:3a 1065924 /tmp/_ruby_mjit_p5985u0.so (deleted)
7f011ee96000-7f011ee97000 r--p 00003000 00:3a 1065924 /tmp/_ruby_mjit_p5985u0.so (deleted)
7f011ee97000-7f011ee98000 r--p 00000000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7f011ee98000-7f011ee9a000 r-xp 00001000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7f011ee9a000-7f011ee9b000 r--p 00003000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7f011ee9b000-7f011ee9c000 r--p 00003000 fd:11 786793 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/trans/transdb.so
7f011ee9c000-7f011ee9d000 rw-p 00000000 00:00 0
7f011ee9d000-7f011ee9e000 r--p 00000000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7f011ee9e000-7f011ee9f000 r-xp 00001000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7f011ee9f000-7f011eea0000 r--p 00002000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7f011eea0000-7f011eea1000 r--p 00002000 fd:11 786738 /builddir/build/BUILD/ruby-2.6.0-preview3/.ext/x86_64-linux/enc/encdb.so
7f011eea1000-7f011eea2000 rw-p 00000000 00:00 0
7f011eea2000-7f011eea3000 ---p 00000000 00:00 0
7f011eea3000-7f01217b0000 rw-p 00000000 00:00 0
7f01217b0000-7f01217bd000 r--p 00000000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7f01217bd000-7f0121858000 r-xp 0000d000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7f0121858000-7f01218f3000 r--p 000a8000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7f01218f3000-7f01218f4000 r--p 00142000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7f01218f4000-7f01218f5000 rw-p 00143000 fd:11 1181740 /usr/lib64/libm-2.28.9000.so
7f01218f5000-7f01218f7000 r--p 00000000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7f01218f7000-7f012190c000 r-xp 00002000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7f012190c000-7f0121926000 r--p 00017000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7f0121926000-7f0121927000 r--p 00030000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7f0121927000-7f0121928000 rw-p 00031000 fd:11 1182309 /usr/lib64/libcrypt.so.1.1.0
7f0121928000-7f0121932000 rw-p 00000000 00:00 0
7f0121932000-7f0121933000 r--p 00000000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7f0121933000-7f0121935000 r-xp 00001000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7f0121935000-7f0121936000 r--p 00003000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7f0121936000-7f0121937000 r--p 00003000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7f0121937000-7f0121938000 rw-p 00004000 fd:11 1181738 /usr/lib64/libdl-2.28.9000.so
7f0121938000-7f0121943000 r--p 00000000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f0121943000-7f012199b000 r-xp 0000b000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f012199b000-7f01219b2000 r--p 00063000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f01219b2000-7f01219b3000 ---p 0007a000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f01219b3000-7f01219b5000 r--p 0007a000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f01219b5000-7f01219b6000 rw-p 0007c000 fd:11 1182327 /usr/lib64/libgmp.so.10.3.2
7f01219b6000-7f01219b8000 r--p 00000000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7f01219b8000-7f01219bc000 r-xp 00002000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7f01219bc000-7f01219be000 r--p 00006000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7f01219be000-7f01219bf000 r--p 00007000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7f01219bf000-7f01219c0000 rw-p 00008000 fd:11 1181754 /usr/lib64/librt-2.28.9000.so
7f01219c0000-7f01219c6000 r--p 00000000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7f01219c6000-7f01219d6000 r-xp 00006000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7f01219d6000-7f01219dc000 r--p 00016000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7f01219dc000-7f01219dd000 r--p 0001b000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7f01219dd000-7f01219de000 rw-p 0001c000 fd:11 1181750 /usr/lib64/libpthread-2.28.9000.so
7f01219de000-7f01219e2000 rw-p 00000000 00:00 0
7f01219e2000-7f0121a04000 r--p 00000000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f0121a04000-7f0121b51000 r-xp 00022000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f0121b51000-7f0121b9d000 r--p 0016f000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f0121b9d000-7f0121b9e000 ---p 001bb000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f0121b9e000-7f0121ba2000 r--p 001bb000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f0121ba2000-7f0121ba4000 rw-p 001bf000 fd:11 1181736 /usr/lib64/libc-2.28.9000.so
7f0121ba4000-7f0121ba8000 rw-p 00000000 00:00 0
7f0121bac000-7f0121bd7000 r--p 00000000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f0121bd7000-7f0121db9000 r-xp 0002b000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f0121db9000-7f0121e97000 r--p 0020d000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f0121e97000-7f0121e98000 ---p 002eb000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f0121e98000-7f0121ea0000 r--p 002eb000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f0121ea0000-7f0121ea1000 rw-p 002f3000 fd:11 786661 /builddir/build/BUILD/ruby-2.6.0-preview3/libruby.so.2.6.0
7f0121ea1000-7f0121eb4000 rw-p 00000000 00:00 0
7f0121eb4000-7f0121eb5000 r--p 00000000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7f0121eb5000-7f0121ed5000 r-xp 00001000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7f0121ed5000-7f0121edd000 r--p 00021000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7f0121ede000-7f0121edf000 r--p 00029000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7f0121edf000-7f0121ee0000 rw-p 0002a000 fd:11 1181729 /usr/lib64/ld-2.28.9000.so
7f0121ee0000-7f0121ee1000 rw-p 00000000 00:00 0
7ffc0ff25000-7ffc10724000 rw-p 00000000 00:00 0 [stack]
7ffc107df000-7ffc107e2000 r--p 00000000 00:00 0 [vvar]
7ffc107e2000-7ffc107e4000 r-xp 00000000 00:00 0 [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall]

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

.
<true> expected but was
<nil>.

Finished tests in 387.440881s, 51.2207 tests/s, 6041.3836 assertions/s.
19845 tests, 2340679 assertions, 3 failures, 0 errors, 29 skips

Here are the configuration and build options:

---
Configuration summary for ruby version 2.6.0

   * Installation prefix: /usr
   * exec prefix:         /usr
   * arch:                x86_64-linux
   * site arch:           ${arch}
   * RUBY_BASE_NAME:      ruby
   * enable shared:       yes
   * ruby lib prefix:     ${exec_prefix}/share/ruby
   * site libraries path: ${sitearchlibdir}/${RUBY_BASE_NAME}
   * vendor path:         /usr/share/ruby/vendor_ruby
   * target OS:           linux
   * compiler:            gcc
   * with pthread:        yes
   * enable shared libs:  yes
   * dynamic library ext: so
   * CFLAGS:              ${optflags} ${debugflags} ${warnflags}
   * LDFLAGS:             -L. -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now \
                          -specs=/usr/lib/rpm/redhat/redhat-hardened-ld \
                          -fstack-protector-strong -rdynamic \
                          -Wl,-export-dynamic
   * DLDFLAGS:            -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now \
                          -specs=/usr/lib/rpm/redhat/redhat-hardened-ld
   * optflags:            -O3
   * debugflags:          -ggdb3
   * warnflags:           -Wall -Wextra -Wno-unused-parameter \
                          -Wno-long-long -Wno-missing-field-initializers \
                          -Wno-tautological-compare \
                          -Wno-parentheses-equality \
                          -Wno-constant-logical-operand -Wno-self-assign \
                          -Wno-cast-function-type -Wunused-variable \
                          -Werror=implicit-int -Werror=pointer-arith \
                          -Werror=write-strings \
                          -Werror=declaration-after-statement \
                          -Werror=implicit-function-declaration \
                          -Werror=deprecated-declarations \
                          -Werror=misleading-indentation \
                          -Wno-overlength-strings \
                          -Wno-packed-bitfield-compat \
                          -Wsuggest-attribute=noreturn \
                          -Wsuggest-attribute=format -Wmissing-noreturn \
                          -Wimplicit-fallthrough=0 -Werror=duplicated-cond \
                          -Werror=restrict
   * strip command:       strip -S -x
   * install doc:         yes
   * MJIT support:        yes
   * man page type:       doc

---
+ make -j4 'COPY=cp -p' Q=
    BASERUBY = echo executable host ruby is required.  use --with-baseruby option.; false
    CC = gcc
    LD = ld
    LDSHARED = gcc -shared
    CFLAGS = -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC -m64
    XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -DRUBY_DEVEL=1 -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -DCANONICALIZATION_FOR_MATHN
    CPPFLAGS =   -I. -I.ext/include/x86_64-linux -I./include -I. -I./enc/unicode/10.0.0 
    DLDFLAGS = -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-soname,libruby.so.2.6 -fstack-protector-strong  -m64
    SOLIBS = -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm 
    LANG = C
    LC_ALL = 
    LC_CTYPE = 

And some versions which might be relevant.

$ rpm -q gcc
gcc-8.2.1-5.fc30.x86_64

$ rpm -q glibc
glibc-2.28.9000-16.fc30.x86_64

Not sure what else could have influence

Updated by vo.x (Vit Ondruch) over 1 year ago

BTW output the code with some markup 1 is a nice idea, but apparently, it does the attached output unreadable in Redmine :/ Therefore please check the ruby-core:89812 if the output is not readable for you.

Updated by shevegen (Robert A. Heiler) over 1 year ago

BTW output the code with some markup 1 is a nice idea, but apparently,
it does the attached output unreadable in Redmine

Redmine can be a bit annoying. In that case it may have been possible
to perhaps write the initial code with proper indent, and add the
tests in a reply to it - but feel free to ignore this comment. It is
your issue request after all, not mine. :)

(I put the initial code next, just if someone wants to read it with
colours + indent):

def catch_true(paths, prefixes) # catch_except_p: TRUE
  prefixes.each do |prefix| # catch_except_p: TRUE
    paths.each do |path| # catch_except_p: FALSE
      return path
    end
  end
end

def wrapper(paths, prefixes)
  catch_true(paths, prefixes)
end

print wrapper(['1'], ['2'])

Edit: Strange ... the indent appears but not the colours. I wonder if
I did something wrong or whether something in redmine does not work;
I could swear that always used to work with four leading space ' '
characters ...

Updated by k0kubun (Takashi Kokubun) over 1 year ago

I'm not so familiar with redhat-hardened things. I have some questions:

  • Why are you using the "hardened" options? Is it default on your environment?
  • Do these tests succeed if you strip the hardened options on the same environment?
  • I downloaded the files in your link, but my ./configure CFLAGS="-specs=/tmp/redhat-annobin-cc1 -specs=/tmp/redhat-hardened-cc1" DLDFLAGS="-specs=/tmp/redhat-hardened-ld" failed and I couldn't reproduce your issue on my x86_64 Ubuntu. Should I use another Linux distribution to reproduce your problem?

Updated by vo.x (Vit Ondruch) over 1 year ago

k0kubun (Takashi Kokubun) wrote:

I'm not so familiar with redhat-hardened things. I have some questions:

  • Why are you using the "hardened" options? Is it default on your environment?

It is the default and mandatory settings for the build of all packages on Fedora/RHEL. The last hardening changes were proposed here:

https://fedoraproject.org/wiki/Changes/HardeningFlags28

Not sure if there is better documentation.

  • Do these tests succeed if you strip the hardened options on the same environment?

Good question. It should be easy to disable the hardening. I'll try that.

https://fedoraproject.org/wiki/Packaging:Guidelines#PIE

  • I downloaded the files in your link, but my ./configure CFLAGS="-specs=/tmp/redhat-annobin-cc1 -specs=/tmp/redhat-hardened-cc1" DLDFLAGS="-specs=/tmp/redhat-hardened-ld" failed and I couldn't reproduce your issue on my x86_64 Ubuntu. Should I use another Linux distribution to reproduce your problem?

Not sure. I guess the Annobin is Fedora specific stuff introduced in F28:

https://fedoraproject.org/wiki/Changes/Annobin

The rest should be quite generic with recent enough toolchain.

I am working with Fedora Rawhide, trying to prepare updated Ruby package, but Fedora 28 and newer should probably behave similarly.

Thx for looking into this issue.

Updated by vo.x (Vit Ondruch) over 1 year ago

I have tried to reduce the hardening options:

--- /a
+++ /b
@@ -16,12 +16,10 @@
    * enable shared libs:  yes
    * dynamic library ext: so
    * CFLAGS:              ${optflags} ${debugflags} ${warnflags}
-   * LDFLAGS:             -L. -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now \
-                          -specs=/usr/lib/rpm/redhat/redhat-hardened-ld \
+   * LDFLAGS:             -L. -Wl,-z,relro -Wl,--as-needed \
                           -fstack-protector-strong -rdynamic \
                           -Wl,-export-dynamic
-   * DLDFLAGS:            -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now \
-                          -specs=/usr/lib/rpm/redhat/redhat-hardened-ld
+   * DLDFLAGS:            -Wl,-z,relro -Wl,--as-needed  
    * optflags:            -O3
    * debugflags:          -ggdb3
    * warnflags:           -Wall -Wextra -Wno-unused-parameter \
@@ -53,10 +51,10 @@
    CC = gcc
    LD = ld
    LDSHARED = gcc -shared
-   CFLAGS = -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC -m64
+   CFLAGS = -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fPIC -m64
    XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -DRUBY_DEVEL=1 -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -DCANONICALIZATION_FOR_MATHN
    CPPFLAGS =   -I. -I.ext/include/x86_64-linux -I./include -I. -I./enc/unicode/10.0.0 
-   DLDFLAGS = -Wl,-z,relro -Wl,--as-needed  -Wl,-z,now -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -Wl,-soname,libruby.so.2.6 -fstack-protector-strong  -m64
+   DLDFLAGS = -Wl,-z,relro -Wl,--as-needed   -Wl,-soname,libruby.so.2.6 -fstack-protector-strong  -m64
    SOLIBS = -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm 
    LANG = C
    LC_ALL = 

Unfortunately, it does not change anything.

Updated by k0kubun (Takashi Kokubun) over 1 year ago

Could you try eliminating -fstack-protector-strong?

Updated by k0kubun (Takashi Kokubun) over 1 year ago

and possibly -fasynchronous-unwind-tables -fstack-clash-protection as well

Updated by vo.x (Vit Ondruch) over 1 year ago

It seems that -fcf-protection makes the difference. IOW this makes the test (specifically testing with test_lambda_longjmp) fail:

CFLAGS="-fcf-protection" \
CXXFLAGS="-fcf-protection" \
LDFLAGS="" \
FFLAGS="" \
FCFLAGS="" ./configure

This is the resulting configuration:

---
Configuration summary for ruby version 2.6.0

   * Installation prefix: /usr
   * exec prefix:         /usr
   * arch:                x86_64-linux
   * site arch:           ${arch}
   * RUBY_BASE_NAME:      ruby
   * enable shared:       yes
   * ruby lib prefix:     ${exec_prefix}/share/ruby
   * site libraries path: ${sitearchlibdir}/${RUBY_BASE_NAME}
   * vendor path:         /usr/share/ruby/vendor_ruby
   * target OS:           linux
   * compiler:            gcc
   * with pthread:        yes
   * enable shared libs:  yes
   * dynamic library ext: so
   * CFLAGS:              ${optflags} ${debugflags} ${warnflags}
   * LDFLAGS:             -L. -fstack-protector-strong -rdynamic \
                          -Wl,-export-dynamic
   * optflags:            -O3
   * debugflags:          -ggdb3
   * warnflags:           -Wall -Wextra -Wno-unused-parameter \
                          -Wno-long-long -Wno-missing-field-initializers \
                          -Wno-tautological-compare \
                          -Wno-parentheses-equality \
                          -Wno-constant-logical-operand -Wno-self-assign \
                          -Wno-cast-function-type -Wunused-variable \
                          -Werror=implicit-int -Werror=pointer-arith \
                          -Werror=write-strings \
                          -Werror=declaration-after-statement \
                          -Werror=implicit-function-declaration \
                          -Werror=deprecated-declarations \
                          -Werror=misleading-indentation \
                          -Wno-overlength-strings \
                          -Wno-packed-bitfield-compat \
                          -Wsuggest-attribute=noreturn \
                          -Wsuggest-attribute=format -Wmissing-noreturn \
                          -Wimplicit-fallthrough=0 -Werror=duplicated-cond \
                          -Werror=restrict
   * strip command:       strip -S -x
   * install doc:         yes
   * MJIT support:        yes
   * man page type:       doc

---
+ make -j4 'COPY=cp -p' Q=
    BASERUBY = echo executable host ruby is required.  use --with-baseruby option.; false
    CC = gcc
    LD = ld
    LDSHARED = gcc -shared
    CFLAGS = -fcf-protection -fPIC 
    XCFLAGS = -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-overflow -DRUBY_DEVEL=1 -fvisibility=hidden -fexcess-precision=standard -DRUBY_EXPORT -DCANONICALIZATION_FOR_MATHN
    CPPFLAGS =   -I. -I.ext/include/x86_64-linux -I./include -I. -I./enc/unicode/10.0.0 
    DLDFLAGS = -Wl,-soname,libruby.so.2.6  -fstack-protector-strong  
    SOLIBS = -lpthread -lrt -lrt -lgmp -ldl -lcrypt -lm 
    LANG = C
    LC_ALL = 
    LC_CTYPE = 

Updated by vo.x (Vit Ondruch) over 1 year ago

Just confirmed that removing just -fcf-protection from the initial flag set makes the test pass.

Updated by k0kubun (Takashi Kokubun) over 1 year ago

  • Subject changed from TestJIT#test_{catching_deep_exception,compile_insn_throw,lambda_longjmp} segfaults to TestJIT#test_{catching_deep_exception,compile_insn_throw,lambda_longjmp} segfaults with gcc-8 -fcf-protection

Cool, thanks a lot. It looks like a new option of gcc. I reproduced your issue with:

./configure CC="gcc-8" CFLAGS="-fcf-protection"

I'll think about how to deal with this.

#13

Updated by k0kubun (Takashi Kokubun) over 1 year ago

  • Status changed from Open to Closed

Applied in changeset trunk|r65815.


configure.ac: avoid crashing MJIT with -fcf-protection

by avoiding using __builtin_longjmp, like r64983.

[Bug #15307]

Updated by k0kubun (Takashi Kokubun) over 1 year ago

Could you try building and running test_jit with r65815?

Updated by k0kubun (Takashi Kokubun) over 1 year ago

Instead of r65815, please try the latest trunk (r65819).

Updated by vo.x (Vit Ondruch) over 1 year ago

Sorry for late response. I was not able to build/test ruby for various other failures. But finally, I was able to build/test r65928 and it seems to pass the tests just fine. Thx for the fix.

Also available in: Atom PDF