Project

General

Profile

Bug #13168

Marshaling broken with GCC 7.x

Added by vo.x (Vit Ondruch) over 2 years ago. Updated over 2 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
[ruby-core:79306]

Description

Builds of Ruby 2.4 recently started to fail in Fedora CI when GCC 7.0.1 landed (please see the build logs 1). The Ruby either segfaults when generating documentation:

Generating RI format into /builddir/build/BUILD/ruby-2.4.0/.ext/rdoc...
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/store.rb:855: [BUG] Segmentation fault at 0x00000000000014
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-linux]
-- Control frame information -----------------------------------------------
c:0012 p:---- s:0064 e:000063 CFUNC  :dump
c:0011 p:0515 s:0059 e:000058 METHOD /builddir/build/BUILD/ruby-2.4.0/lib/rdoc/store.rb:855
c:0010 p:0010 s:0043 e:000042 BLOCK  /builddir/build/BUILD/ruby-2.4.0/lib/rdoc/store.rb:739 [FINISH]
c:0009 p:---- s:0039 e:000038 CFUNC  :each
c:0008 p:0019 s:0035 e:000034 METHOD /builddir/build/BUILD/ruby-2.4.0/lib/rdoc/store.rb:738
c:0007 p:0010 s:0031 e:000030 METHOD /builddir/build/BUILD/ruby-2.4.0/lib/rdoc/generator/ri.rb:27
c:0006 p:0064 s:0027 e:000026 BLOCK  /builddir/build/BUILD/ruby-2.4.0/lib/rdoc/rdoc.rb:529 [FINISH]
c:0005 p:---- s:0024 e:000023 CFUNC  :chdir
c:0004 p:0021 s:0019 e:000018 METHOD /builddir/build/BUILD/ruby-2.4.0/lib/rdoc/rdoc.rb:524
c:0003 p:0407 s:0015 e:000014 METHOD /builddir/build/BUILD/ruby-2.4.0/lib/rdoc/rdoc.rb:507
c:0002 p:0053 s:0008 E:0009f0 EVAL   ./bin/rdoc:20 [FINISH]
c:0001 p:0000 s:0003 E:0022d0 (none) [FINISH]
-- Ruby level backtrace information ----------------------------------------
./bin/rdoc:20:in `<main>'
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/rdoc.rb:507:in `document'
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/rdoc.rb:524:in `generate'
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/rdoc.rb:524:in `chdir'
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/rdoc.rb:529:in `block in generate'
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/generator/ri.rb:27:in `generate'
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/store.rb:738:in `save'
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/store.rb:738:in `each'
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/store.rb:739:in `block in save'
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/store.rb:855:in `save_class'
/builddir/build/BUILD/ruby-2.4.0/lib/rdoc/store.rb:855:in `dump'
-- Machine register context ------------------------------------------------
 RIP: 0x00007f407bbb79fc RBP: 0x0000559d2de13760 RSP: 0x00007ffe1e01a100
 RAX: 0x0000000000000000 RBX: 0x000000010000000a RCX: 0x0000000000000062
 RDX: 0x0000000000000001 RDI: 0x00000000ffffffff RSI: 0x00007ffe1e01a187
  R8: 0x0000559d2c28f298  R9: 0x000000000000000e R10: 0x0000559d2596f3d0
 R11: 0x0000559d23981550 R12: 0x00007ffe1e01a187 R13: 0x0000000000000001
 R14: 0x0000559d23981550 R15: 0x0000559d21dc34a8 EFL: 0x0000000000010202
-- C level backtrace information -------------------------------------------
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(rb_print_backtrace+0x15) [0x7f407bc0bed5] vm_dump.c:679
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(rb_vm_bugreport+0x21c) [0x7f407bc0c10c] vm_dump.c:988
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(rb_bug_context+0xd4) [0x7f407bae5eb4] error.c:426
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(sigsegv+0x3e) [0x7f407bba180e] signal.c:907
/lib64/libpthread.so.0 [0x7f407b852b50]
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(str_buf_cat+0x1c) [0x7f407bbb79fc] string.c:2571
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(w_nbyte+0x1a) [0x7f407bb237ca] marshal.c:270
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(w_class+0x8a) [0x7f407bb24a4a] marshal.c:281
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(w_object+0xb24) [0x7f407bb25604] marshal.c:733
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(rb_marshal_dump_limited+0xe8) [0x7f407bb25e28] marshal.c:1051
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_call_cfunc+0xf3) [0x7f407bbf6313] vm_insnhelper.c:1752
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_exec_core+0x480) [0x7f407bbf9060] insns.def:1066
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_exec+0x88) [0x7f407bbff858] vm.c:1712
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(rb_yield+0x428) [0x7f407bc02958] vm.c:969
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(rb_ary_each+0x3c) [0x7f407ba8d0cc] array.c:1824
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_call_cfunc+0xf3) [0x7f407bbf6313] vm_insnhelper.c:1752
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_call_method+0xd3) [0x7f407bc045f3] vm_insnhelper.c:2291
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_exec_core+0x610) [0x7f407bbf91f0] insns.def:967
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_exec+0x88) [0x7f407bbff858] vm.c:1712
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(rb_yield+0x428) [0x7f407bc02958] vm.c:969
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(rb_ensure+0xba) [0x7f407baebd5a] eval.c:926
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(dir_s_chdir+0xb4) [0x7f407bad6024] dir.c:1043
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_call_cfunc+0xf3) [0x7f407bbf6313] vm_insnhelper.c:1752
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_call_method+0xd3) [0x7f407bc045f3] vm_insnhelper.c:2291
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_exec_core+0x610) [0x7f407bbf91f0] insns.def:967
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(vm_exec+0x88) [0x7f407bbff858] vm.c:1712
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(ruby_exec_internal+0xad) [0x7f407bae935d] eval.c:244
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(ruby_exec_node+0x1d) [0x7f407baeaf9d] eval.c:308
/builddir/build/BUILD/ruby-2.4.0/libruby.so.2.4.0(ruby_run_node+0x1e) [0x7f407baecf5e] eval.c:300
/builddir/build/BUILD/ruby-2.4.0/ruby(main+0x4b) [0x559d2199c8cb] main.c:36

Or the marshal test fails:

  1) Failure:
TestMarshal#test_context_switch [/builddir/build/BUILD/ruby-2.4.0/test/ruby/test_marshal.rb:368]:
[StopIteration] exception expected, not.
Class: <RuntimeError>
Message: <"Marshal.dump reentered at marshal_dump">
---Backtrace---
/builddir/build/BUILD/ruby-2.4.0/test/ruby/test_marshal.rb:345:in `dump'
/builddir/build/BUILD/ruby-2.4.0/test/ruby/test_marshal.rb:345:in `dump_each'
./test/runner.rb: TestMarshal#test_context_switch:1:in `each'
---------------
  2) Failure:
TestMarshal#test_gc [/builddir/build/BUILD/ruby-2.4.0/test/ruby/test_marshal.rb:187]:
Exception raised:
<#<RuntimeError: Marshal.dump reentered at _dump>>.

I reported this as an GCC error 2, but the GCC maintainers believe this is bug in Ruby (until proven otherwise).


Related issues

Is duplicate of Ruby trunk - Bug #13150: TestMarshal failures on FreeBSD with gcc7 because of GCClosedActions

History

#1

Updated by nobu (Nobuyoshi Nakada) over 2 years ago

  • Is duplicate of Bug #13150: TestMarshal failures on FreeBSD with gcc7 because of GC added

Updated by vo.x (Vit Ondruch) over 2 years ago

  • Status changed from Open to Closed

Also available in: Atom PDF