Project

General

Profile

Actions

Bug #18746

closed

/TestGCCompact#test_(ast_compacts|compact_count|complex_hash_keys|gc_compact_stats)/ fails on PPC

Added by vo.x (Vit Ondruch) 5 months ago. Updated 5 months ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [powerpc64le-linux]
[ruby-core:108317]

Description

With Ruby 3.0.4, I observe the following segfault, which was not the case for Ruby 3.0.2, neither this is issue for Ruby 3.1.2:

... snip ...

[ 8892/21302] TestGCCompact#test_ast_compacts<internal:gc>:213: [BUG] Couldn't unprotect page 0x0000000158eac000
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [powerpc64le-linux]
-- Control frame information -----------------------------------------------
c:0031 p:0003 s:0175 e:000174 METHOD <internal:gc>:213
c:0030 p:0031 s:0171 e:000169 METHOD /builddir/build/BUILD/ruby-3.0.4/test/ruby/test_gc_compact.rb:146
c:0029 p:0052 s:0165 e:000164 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1286
c:0028 p:0065 s:0159 e:000158 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1324
c:0027 p:0013 s:0150 e:000149 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit/testcase.rb:18
c:0026 p:0077 s:0145 e:000144 BLOCK  /builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:973 [FINISH]
c:0025 p:---- s:0138 e:000137 CFUNC  :map
c:0024 p:0006 s:0134 e:000133 BLOCK  /builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:966
c:0023 p:0163 s:0130 E:001d60 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:993
c:0022 p:0042 s:0118 e:000117 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1139
c:0021 p:0010 s:0111 e:000109 BLOCK  /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:630 [FINISH]
c:0020 p:---- s:0105 e:000104 CFUNC  :each
c:0019 p:0054 s:0101 E:000b58 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:628
c:0018 p:0008 s:0094 E:001908 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:665
c:0017 p:0140 s:0087 E:000148 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:908
c:0016 p:0016 s:0074 E:000d08 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1076
c:0015 p:0005 s:0069 E:000c10 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1141
c:0014 p:0006 s:0065 E:000dd8 BLOCK  /builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1128 [FINISH]
c:0013 p:---- s:0061 e:000060 CFUNC  :each
c:0012 p:0047 s:0057 E:001288 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1127
c:0011 p:0013 s:0052 E:002658 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1115
c:0010 p:0008 s:0047 E:000d80 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:850
c:0009 p:0008 s:0041 E:0001c0 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:698
c:0008 p:0015 s:0035 E:0005e8 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:34
c:0007 p:0006 s:0030 E:000658 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1178
c:0006 p:0032 s:0025 E:001c50 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1248
c:0005 p:0009 s:0021 E:001da8 METHOD /builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1252
c:0004 p:0172 s:0016 E:001c38 TOP    /builddir/build/BUILD/ruby-3.0.4/tool/test/runner.rb:23 [FINISH]
c:0003 p:---- s:0011 e:000010 CFUNC  :require_relative
c:0002 p:0092 s:0006 E:000140 EVAL   ./test/runner.rb:11 [FINISH]
c:0001 p:0000 s:0003 E:000700 (none) [FINISH]
-- Ruby level backtrace information ----------------------------------------
./test/runner.rb:11:in `<main>'
./test/runner.rb:11:in `require_relative'
/builddir/build/BUILD/ruby-3.0.4/tool/test/runner.rb:23:in `<top (required)>'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1252:in `run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1248:in `run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1178:in `run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:34:in `run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:698:in `run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:850:in `run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1115:in `run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1127:in `_run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1127:in `each'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1128:in `block in _run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1141:in `run_tests'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1076:in `_run_anything'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:908:in `_run_anything'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:665:in `_run_suites'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:628:in `_run_suites'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:628:in `each'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:630:in `block in _run_suites'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1139:in `_run_suite'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:993:in `_run_suite'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:966:in `block in _run_suite'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:966:in `map'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:973:in `block (2 levels) in _run_suite'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit/testcase.rb:18:in `run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/minitest/unit.rb:1324:in `run'
/builddir/build/BUILD/ruby-3.0.4/tool/lib/test/unit.rb:1286:in `run_test'
/builddir/build/BUILD/ruby-3.0.4/test/ruby/test_gc_compact.rb:146:in `test_ast_compacts'
<internal:gc>:213:in `compact'
-- C level backtrace information -------------------------------------------
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_vm_bugreport+0xc0) [0x7fffbd88cf10] vm_dump.c:758
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_bug_without_die+0x90) [0x7fffbd65a590] error.c:764
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(die+0x0) [0x7fffbd5c0594] error.c:772
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_bug) error.c:774
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(gc_sweep_step+0x1514) [0x7fffbd68c674] gc.c:4503
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(gc_sweep_rest+0x24) [0x7fffbd68c7ac] gc.c:5151
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(gc_sweep) gc.c:5268
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(gc_start+0x8c8) [0x7fffbd689d98] gc.c:7463
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(garbage_collect+0x60) [0x7fffbd68a380] gc.c:8200
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(gc_compact+0x48) [0x7fffbd68d3c8] gc.c:8543
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(builtin_invoker0+0x24) [0x7fffbd855a74] vm_insnhelper.c:5442
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_exec_core+0x19d0) [0x7fffbd873200] insns.def:1482
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_vm_exec+0x140) [0x7fffbd877770] vm.c:2171
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(invoke_block_from_c_bh+0x3a8) [0x7fffbd87bc08] vm.c:1263
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_yield+0x48) [0x7fffbd87d540] vm.c:1398
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_yield_0) vm_eval.c:1331
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_yield) vm_eval.c:1347
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_ary_collect+0x74) [0x7fffbd5cc094] array.c:3635
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(ractor_safe_call_cfunc_0+0x24) [0x7fffbd8552f4] vm_insnhelper.c:2745
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_call_cfunc_with_frame+0x14c) [0x7fffbd86a74c] vm_insnhelper.c:2928
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_sendish+0x3cc) [0x7fffbd86d47c] vm_insnhelper.c:4529
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_exec_core+0x198) [0x7fffbd8719c8] insns.def:770
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_vm_exec+0x140) [0x7fffbd877770] vm.c:2171
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(invoke_block_from_c_bh+0x3a8) [0x7fffbd87bc08] vm.c:1263
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_yield+0x48) [0x7fffbd87d540] vm.c:1398
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_yield_0) vm_eval.c:1331
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_yield) vm_eval.c:1347
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_ary_each+0x20) [0x7fffbd5c2a44] array.c:2523
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_ary_each) array.c:2517
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(ractor_safe_call_cfunc_0+0x24) [0x7fffbd8552f4] vm_insnhelper.c:2745
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_call_cfunc_with_frame+0x14c) [0x7fffbd86a74c] vm_insnhelper.c:2928
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_call_method_each_type+0x6c8) [0x7fffbd879e68] vm_insnhelper.c:3397
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_sendish+0x3cc) [0x7fffbd86d47c] vm_insnhelper.c:4529
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_exec_core+0x198) [0x7fffbd8719c8] insns.def:770
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_vm_exec+0x140) [0x7fffbd877770] vm.c:2171
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(invoke_block_from_c_bh+0x3a8) [0x7fffbd87bc08] vm.c:1263
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_yield+0x48) [0x7fffbd87d540] vm.c:1398
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_yield_0) vm_eval.c:1331
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_yield) vm_eval.c:1347
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_ary_each+0x20) [0x7fffbd5c2a44] array.c:2523
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_ary_each) array.c:2517
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(ractor_safe_call_cfunc_0+0x24) [0x7fffbd8552f4] vm_insnhelper.c:2745
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_call_cfunc_with_frame+0x14c) [0x7fffbd86a74c] vm_insnhelper.c:2928
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_call_method_each_type+0x6c8) [0x7fffbd879e68] vm_insnhelper.c:3397
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_sendish+0x3cc) [0x7fffbd86d47c] vm_insnhelper.c:4529
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_exec_core+0x198) [0x7fffbd8719c8] insns.def:770
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_vm_exec+0x140) [0x7fffbd877770] vm.c:2171
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_iseq_eval+0x154) [0x7fffbd878a24] vm.c:2408
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(require_internal+0x7f8) [0x7fffbd6cf438] load.c:638
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_require_string+0x44) [0x7fffbd6d0e34] load.c:1186
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_f_require_relative+0x48) [0x7fffbd6d0f58] load.c:901
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(ractor_safe_call_cfunc_1+0x28) [0x7fffbd855348] vm_insnhelper.c:2752
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_call_cfunc_with_frame+0x14c) [0x7fffbd86a74c] vm_insnhelper.c:2928
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_sendish+0x3cc) [0x7fffbd86d47c] vm_insnhelper.c:4529
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(vm_exec_core+0x12c) [0x7fffbd87195c] insns.def:789
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_vm_exec+0x140) [0x7fffbd877770] vm.c:2171
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_iseq_eval_main+0xec) [0x7fffbd878b6c] vm.c:2419
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(rb_ec_exec_node+0xbc) [0x7fffbd66206c] eval.c:317
/builddir/build/BUILD/ruby-3.0.4/libruby.so.3.0.4(ruby_run_node+0x7c) [0x7fffbd66672c] eval.c:375
/builddir/build/BUILD/ruby-3.0.4/ruby(main+0x78) [0x11e650a88] ./main.c:50
-- Other runtime information ----------------------------------------------

... snip ...

Related issues 2 (1 open1 closed)

Related to Ruby master - Bug #18394: Backports for read barrier for GC compaction for Ruby 3.0ClosedActions
Related to Ruby master - Bug #18133: LTO: TestGCCompact#test_ast_compacts segfaults on i686AssignedActions

Updated by vo.x (Vit Ondruch) 5 months ago

There will be probably more like this, e.g. [ 8892/21298] TestGCCompact#test_compact_count<internal:gc>:213: [BUG] Couldn't unprotect page 0x0000000146808000

Actions #2

Updated by vo.x (Vit Ondruch) 5 months ago

  • Subject changed from TestGCCompact#test_ast_compacts on PPC to /TestGCCompact#test_(ast_compacts|compact_count|complex_hash_keys|gc_compact_stats)/ fails on PPC

Updated by vo.x (Vit Ondruch) 5 months ago

I think this is related to #18133 and #18394

Actions #4

Updated by vo.x (Vit Ondruch) 5 months ago

  • Related to Bug #18394: Backports for read barrier for GC compaction for Ruby 3.0 added
Actions #5

Updated by vo.x (Vit Ondruch) 5 months ago

  • Related to Bug #18133: LTO: TestGCCompact#test_ast_compacts segfaults on i686 added

Updated by vo.x (Vit Ondruch) 5 months ago

  • Status changed from Open to Closed
  • Backport changed from 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN to 2.7: DONTNEED, 3.0: REQUIRED, 3.1: DONTNEED

Closing this to trigger backport. Either the https://github.com/ruby/ruby/pull/4227 or the patch from #18394 should be applied.

Actions

Also available in: Atom PDF