Project

General

Profile

Actions

Bug #21276

closed

Regression segfault instead of exception `require': cannot load such file

Added by wsfulton (William Fulton) 2 months ago. Updated 2 months ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:121696]

Description

A segfault occurs instead of a Ruby exception in one of the test cases we have in SWIG. I've run a git bisect on the 3.2 releases to identify commit 2aaa9af75989bb0993a44e9690ed2ca890b2ff91 for when the segfault begins:

commit 2aaa9af75989bb0993a44e9690ed2ca890b2ff91
Author: nagachika <[email protected]>
Date:   Thu Nov 9 17:36:42 2023 +0900

    merge revision(s) 4329554f171fdb483cafa672df5f2a08741940c5,b5c74d548872388921402ff2db36be15e924a89b: [Backport #19985]
    
            [Bug #19985] Raise LoadError with the converted feature name
    
            `Kernel#require` converts feature name objects that have the `to_path`
            method such as `Pathname`, but had used the original object on error
            and had resulted in an unexpected `TypeError`.
            ---
             load.c                    | 14 +++++++++++---
             test/ruby/test_require.rb | 26 +++++++++++++++++++++-----
             2 files changed, 32 insertions(+), 8 deletions(-)
    
            Ease the `Encoding::CompatibilityError` test failure
    
            At the time this test first started using `assert_raise_with_message`,
            it did not touch `Encoding.default_internal`.
            ---
             test/ruby/test_require.rb | 3 ++-
             1 file changed, 2 insertions(+), 1 deletion(-)

So, ruby-3.2.2 is okay and 3.2.3 has the regression. Still present with ruby-3.2.8.

I'll provide two ways to replicate.

  1. Using SWIG built from source:
    1a. clone SWIG from github and build SWIG using steps 1. and 2. from https://swig.org/svn.html. Note that you can specify a custom build of ruby to use with: ./configure --with-ruby=/my-path-to-ruby-installation/bin/ruby
    1b. cd Examples/test-suite/ruby
    1c. make import_fragments.cpptest CXXFLAGS=-g

This is my output using ruby version 3.2.3 (ruby git tag v3_2_3):

~/swig/github/wsfulton/swig/Examples/test-suite/ruby (master >)$ make import_fragments.cpptest CXXFLAGS=-g 
if [ -f ./import_fragments_runme.rb ]; then echo "checking ruby testcase import_fragments (with run test)" ; else echo "checking ruby testcase import_fragments" ; fi
checking ruby testcase import_fragments (with run test)
make -f ../../../Examples/Makefile SRCDIR='./' CXXSRCS='' SWIG_LIB_DIR='../../../Lib' SWIGEXE='../../../swig' INCLUDES='-I../../../Examples/test-suite' SWIGOPT='-outcurrentdir -I../../../Examples/test-suite -w801 -noautorename -features autodoc=4 -Werror' NOLINK=true TARGET='import_fragments' INTERFACEDIR='../' INTERFACE='import_fragments.i' ruby_cpp
make[1]: Entering directory '/home/william/swig/github/wsfulton/swig/Examples/test-suite/ruby'
env SWIG_LIB=../../../Lib  ../../../swig -c++ -ruby -outcurrentdir -I../../../Examples/test-suite -w801 -noautorename -features autodoc=4 -Werror -o import_fragments_wrap.cxx ./../import_fragments.i
g++ -c -fPIC -I. -I./  -g -fPIC  import_fragments_wrap.cxx   -I../../../Examples/test-suite -I/home/william/install/ruby-3_2_3-debug/include/ruby-3.2.0 -I/home/william/install/ruby-3_2_3-debug/include/ruby-3.2.0/x86_64-linux
g++ -shared  -g    import_fragments_wrap.o    -o import_fragments.so
make[1]: Leaving directory '/home/william/swig/github/wsfulton/swig/Examples/test-suite/ruby'
if [ -f ./import_fragments_runme.rb ]; then env LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH  /home/william/install/ruby-3_2_3-debug/bin/ruby  -I.:. ./import_fragments_runme.rb; elif [ -f ./import_fragments.so ] ; then env LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH  /home/william/install/ruby-3_2_3-debug/bin/ruby  -I.:. -r./import_fragments.so -e '' ; fi
<internal:/home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:151: [BUG] Segmentation fault at 0x000000000000000a
ruby 3.2.3 (2024-01-18 revision 52bb2ac0a6) [x86_64-linux]

-- Control frame information -----------------------------------------------
c:0004 p:0018 s:0029 e:000026 RESCUE <internal:/home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:151
c:0003 p:0275 s:0023 e:000022 METHOD <internal:/home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:40
c:0002 p:0014 s:0008 E:002010 EVAL   ./import_fragments_runme.rb:15 [FINISH]
c:0001 p:0000 s:0003 E:000bf0 DUMMY  [FINISH]

-- Ruby level backtrace information ----------------------------------------
./import_fragments_runme.rb:15:in `<main>'
<internal:/home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:40:in `require'
<internal:/home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/core_ext/kernel_require.rb>:151:in `rescue in require'

-- Machine register context ------------------------------------------------
 RIP: 0x000057fa8949081d RBP: 0x00007ffdd0182518 RSP: 0x00007ffdd0182518
 RAX: 0x000000000000000a RBX: 0x000057fa94261250 RCX: 0x000000000000008c
 RDX: 0x000000000000008c RDI: 0x000000000000000a RSI: 0x000000000000008c
  R8: 0x0000000000000845  R9: 0x0000000000000020 R10: 0x000057fa94071fc0
 R11: 0x0000000000000040 R12: 0x0000000000000003 R13: 0x0000000000000000
 R14: 0x000057fa94261260 R15: 0x00007b246ad86f10 EFL: 0x0000000000010283

-- C level backtrace information -------------------------------------------
/home/william/install/ruby-3_2_3-debug/bin/ruby(rb_print_backtrace+0x20) [0x57fa8950f75c] ../vm_dump.c:785
/home/william/install/ruby-3_2_3-debug/bin/ruby(rb_vm_bugreport+0x198) [0x57fa8950fd07] ../vm_dump.c:1080
/home/william/install/ruby-3_2_3-debug/bin/ruby(rb_bug_for_fatal_signal+0x12c) [0x57fa895b3000]
/home/william/install/ruby-3_2_3-debug/bin/ruby(sigsegv+0x74) [0x57fa8945b1be] ../signal.c:964
/home/william/install/ruby-3_2_3-debug/bin/ruby(sigill) (null):0
/lib/x86_64-linux-gnu/libc.so.6(0x7b246aa45330) [0x7b246aa45330]
/home/william/install/ruby-3_2_3-debug/bin/ruby(hash_table_index+0x13) [0x57fa8949081d] ../id_table.c:132
/home/william/install/ruby-3_2_3-debug/bin/ruby(rb_id_table_lookup+0x38) [0x57fa89490bb5] ../id_table.c:230
/home/william/install/ruby-3_2_3-debug/bin/ruby(vm_search_cc+0x6e) [0x57fa894db233] ../vm_insnhelper.c:1988
/home/william/install/ruby-3_2_3-debug/bin/ruby(rb_vm_search_method_slowpath+0x51) [0x57fa894db4b3] ../vm_insnhelper.c:2084
/home/william/install/ruby-3_2_3-debug/bin/ruby(vm_search_method_slowpath0+0x2e) [0x57fa894db51a] ../vm_insnhelper.c:2106
/home/william/install/ruby-3_2_3-debug/bin/ruby(vm_search_method_fastpath+0x66) [0x57fa894db614] ../vm_insnhelper.c:2172
/home/william/install/ruby-3_2_3-debug/bin/ruby(vm_search_method) ../vm_insnhelper.c:2182
/home/william/install/ruby-3_2_3-debug/bin/ruby(vm_method_cfunc_is+0x2f) [0x57fa894db693] ../vm_insnhelper.c:2237
/home/william/install/ruby-3_2_3-debug/bin/ruby(opt_equality+0x6a) [0x57fa894db990] ../vm_insnhelper.c:2324
/home/william/install/ruby-3_2_3-debug/bin/ruby(vm_exec_core+0x5983) [0x57fa894efa06] ../insns.def:1174
/home/william/install/ruby-3_2_3-debug/bin/ruby(rb_vm_exec+0x1a8) [0x57fa8950499c] ../vm.c:2383
/home/william/install/ruby-3_2_3-debug/bin/ruby(rb_iseq_eval_main+0x42) [0x57fa89505731] ../vm.c:2633
/home/william/install/ruby-3_2_3-debug/bin/ruby(rb_ec_exec_node+0x125) [0x57fa892deeb9] ../eval.c:289
/home/william/install/ruby-3_2_3-debug/bin/ruby(ruby_run_node+0x96) [0x57fa892df026] ../eval.c:330
/home/william/install/ruby-3_2_3-debug/bin/ruby(rb_main+0x4c) [0x57fa892da455] ../main.c:38
/home/william/install/ruby-3_2_3-debug/bin/ruby(main+0x62) [0x57fa892da4cd] ../main.c:57

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

* Loaded script: ./import_fragments_runme.rb

* Loaded features:

    0 enumerator.so
    1 thread.rb
    2 fiber.so
    3 rational.so
    4 complex.so
    5 ruby2_keywords.rb
    6 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/encdb.so
    7 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/trans/transdb.so
    8 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/rbconfig.rb
    9 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/compatibility.rb
   10 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/defaults.rb
   11 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/deprecate.rb
   12 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/errors.rb
   13 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/unknown_command_spell_checker.rb
   14 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/exceptions.rb
   15 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/basic_specification.rb
   16 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/stub_specification.rb
   17 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/platform.rb
   18 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/util/list.rb
   19 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/version.rb
   20 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/requirement.rb
   21 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/specification.rb
   22 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/util.rb
   23 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems/core_ext/kernel_gem.rb
   24 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/monitor.so
   25 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/monitor.rb
   26 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/rubygems.rb
   27 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/error_highlight/version.rb
   28 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/error_highlight/base.rb
   29 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/error_highlight/formatter.rb
   30 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/error_highlight/core_ext.rb
   31 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/error_highlight.rb
   32 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/version.rb
   33 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/core_ext/name_error.rb
   34 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/levenshtein.rb
   35 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/jaro_winkler.rb
   36 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/spell_checker.rb
   37 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/spell_checkers/name_error_checkers/class_name_checker.rb
   38 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/spell_checkers/name_error_checkers/variable_name_checker.rb
   39 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/spell_checkers/name_error_checkers.rb
   40 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/spell_checkers/method_name_checker.rb
   41 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/spell_checkers/key_error_checker.rb
   42 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/spell_checkers/null_checker.rb
   43 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/tree_spell_checker.rb
   44 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/spell_checkers/require_path_checker.rb
   45 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/spell_checkers/pattern_key_name_checker.rb
   46 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean/formatter.rb
   47 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/did_you_mean.rb
   48 /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/syntax_suggest/core_ext.rb
   49 /home/william/swig/github/wsfulton/swig/Examples/test-suite/ruby/swig_assert.rb

* Process memory map:

57fa892aa000-57fa892d9000 r--p 00000000 103:06 30818930                  /home/william/install/ruby-3_2_3-debug/bin/ruby
57fa892d9000-57fa895c5000 r-xp 0002f000 103:06 30818930                  /home/william/install/ruby-3_2_3-debug/bin/ruby
57fa895c5000-57fa8974e000 r--p 0031b000 103:06 30818930                  /home/william/install/ruby-3_2_3-debug/bin/ruby
57fa8974e000-57fa89757000 r--p 004a4000 103:06 30818930                  /home/william/install/ruby-3_2_3-debug/bin/ruby
57fa89757000-57fa89758000 rw-p 004ad000 103:06 30818930                  /home/william/install/ruby-3_2_3-debug/bin/ruby
57fa89758000-57fa8976d000 rw-p 00000000 00:00 0 
57fa94047000-57fa9435c000 rw-p 00000000 00:00 0                          [heap]
7b2464200000-7b2464407000 r--s 00000000 103:04 407927                    /usr/lib/x86_64-linux-gnu/libc.so.6
7b2464600000-7b24650bb000 r--s 00000000 103:06 30818930                  /home/william/install/ruby-3_2_3-debug/bin/ruby
7b2465200000-7b246529d000 r--p 00000000 103:04 408519                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7b246529d000-7b24653e5000 r-xp 0009d000 103:04 408519                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7b24653e5000-7b246546c000 r--p 001e5000 103:04 408519                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7b246546c000-7b2465477000 r--p 0026b000 103:04 408519                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7b2465477000-7b246547a000 rw-p 00276000 103:04 408519                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.33
7b246547a000-7b246547e000 rw-p 00000000 00:00 0 
7b24655b7000-7b24655b8000 ---p 00000000 00:00 0 
7b24655b8000-7b2465659000 rw-p 00000000 00:00 0 
7b2465659000-7b246565a000 ---p 00000000 00:00 0 
7b246565a000-7b24656fb000 rw-p 00000000 00:00 0 
7b24656fb000-7b24656fc000 ---p 00000000 00:00 0 
7b24656fc000-7b246579d000 rw-p 00000000 00:00 0 
7b246579d000-7b246579e000 ---p 00000000 00:00 0 
7b246579e000-7b246583f000 rw-p 00000000 00:00 0 
7b246583f000-7b2465840000 ---p 00000000 00:00 0 
7b2465840000-7b24658e1000 rw-p 00000000 00:00 0 
7b24658e1000-7b24658e2000 ---p 00000000 00:00 0 
7b24658e2000-7b2465983000 rw-p 00000000 00:00 0 
7b2465983000-7b2465984000 ---p 00000000 00:00 0 
7b2465984000-7b2465a25000 rw-p 00000000 00:00 0 
7b2465a25000-7b2465a26000 ---p 00000000 00:00 0 
7b2465a26000-7b2465ac7000 rw-p 00000000 00:00 0 
7b2465ac7000-7b2465ac8000 ---p 00000000 00:00 0 
7b2465ac8000-7b2465b69000 rw-p 00000000 00:00 0 
7b2465b69000-7b2465b6a000 ---p 00000000 00:00 0 
7b2465b6a000-7b2465c0b000 rw-p 00000000 00:00 0 
7b2465c0b000-7b2465c0c000 ---p 00000000 00:00 0 
7b2465c0c000-7b2465cad000 rw-p 00000000 00:00 0 
7b2465cad000-7b2465cae000 ---p 00000000 00:00 0 
7b2465cae000-7b2465d4f000 rw-p 00000000 00:00 0 
7b2465d4f000-7b2465d50000 ---p 00000000 00:00 0 
7b2465d50000-7b2465df1000 rw-p 00000000 00:00 0 
7b2465df1000-7b2465df2000 ---p 00000000 00:00 0 
7b2465df2000-7b2465e93000 rw-p 00000000 00:00 0 
7b2465e93000-7b2465e94000 ---p 00000000 00:00 0 
7b2465e94000-7b2465f35000 rw-p 00000000 00:00 0 
7b2465f35000-7b2465f36000 ---p 00000000 00:00 0 
7b2465f36000-7b2465fd7000 rw-p 00000000 00:00 0 
7b2465fd7000-7b2465fd8000 ---p 00000000 00:00 0 
7b2465fd8000-7b2466079000 rw-p 00000000 00:00 0 
7b2466079000-7b246607a000 ---p 00000000 00:00 0 
7b246607a000-7b246611b000 rw-p 00000000 00:00 0 
7b246611b000-7b246611c000 ---p 00000000 00:00 0 
7b246611c000-7b24661bd000 rw-p 00000000 00:00 0 
7b24661bd000-7b24661be000 ---p 00000000 00:00 0 
7b24661be000-7b246625f000 rw-p 00000000 00:00 0 
7b246625f000-7b2466260000 ---p 00000000 00:00 0 
7b2466260000-7b2466301000 rw-p 00000000 00:00 0 
7b2466301000-7b2466302000 ---p 00000000 00:00 0 
7b2466302000-7b24663a3000 rw-p 00000000 00:00 0 
7b24663a3000-7b24663a4000 ---p 00000000 00:00 0 
7b24663a4000-7b2466445000 rw-p 00000000 00:00 0 
7b2466445000-7b2466446000 ---p 00000000 00:00 0 
7b2466446000-7b24664e7000 rw-p 00000000 00:00 0 
7b24664e7000-7b24664e8000 ---p 00000000 00:00 0 
7b24664e8000-7b2466589000 rw-p 00000000 00:00 0 
7b2466589000-7b246658a000 ---p 00000000 00:00 0 
7b246658a000-7b246662b000 rw-p 00000000 00:00 0 
7b246662b000-7b246662c000 ---p 00000000 00:00 0 
7b246662c000-7b24666cd000 rw-p 00000000 00:00 0 
7b24666cd000-7b24666ce000 ---p 00000000 00:00 0 
7b24666ce000-7b246676f000 rw-p 00000000 00:00 0 
7b246676f000-7b2466770000 ---p 00000000 00:00 0 
7b2466770000-7b2466811000 rw-p 00000000 00:00 0 
7b2466811000-7b2466812000 ---p 00000000 00:00 0 
7b2466812000-7b24668b3000 rw-p 00000000 00:00 0 
7b24668b3000-7b24668b4000 ---p 00000000 00:00 0 
7b24668b4000-7b2466955000 rw-p 00000000 00:00 0 
7b2466955000-7b2466956000 ---p 00000000 00:00 0 
7b2466956000-7b24669f7000 rw-p 00000000 00:00 0 
7b24669f7000-7b2469a00000 rw-p 00000000 00:00 0 
7b2469a12000-7b2469a16000 r--p 00000000 103:04 408078                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7b2469a16000-7b2469a3a000 r-xp 00004000 103:04 408078                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7b2469a3a000-7b2469a3e000 r--p 00028000 103:04 408078                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7b2469a3e000-7b2469a3f000 r--p 0002b000 103:04 408078                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7b2469a3f000-7b2469a40000 rw-p 0002c000 103:04 408078                    /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
7b2469a40000-7b2469a70000 rw-p 00000000 00:00 0 
7b2469aa0000-7b2469b80000 rw-p 00000000 00:00 0 
7b2469b8f000-7b2469c00000 rw-p 00000000 00:00 0 
7b2469c00000-7b246a9ec000 r--p 00000000 103:04 398501                    /usr/lib/locale/locale-archive
7b246aa00000-7b246aa28000 r--p 00000000 103:04 407927                    /usr/lib/x86_64-linux-gnu/libc.so.6
7b246aa28000-7b246abb0000 r-xp 00028000 103:04 407927                    /usr/lib/x86_64-linux-gnu/libc.so.6
7b246abb0000-7b246abff000 r--p 001b0000 103:04 407927                    /usr/lib/x86_64-linux-gnu/libc.so.6
7b246abff000-7b246ac03000 r--p 001fe000 103:04 407927                    /usr/lib/x86_64-linux-gnu/libc.so.6
7b246ac03000-7b246ac05000 rw-p 00202000 103:04 407927                    /usr/lib/x86_64-linux-gnu/libc.so.6
7b246ac05000-7b246ac12000 rw-p 00000000 00:00 0 
7b246ac26000-7b246ac28000 r--p 00000000 103:06 5909120                   /home/william/swig/github/wsfulton/swig/Examples/test-suite/ruby/import_fragments.so
7b246ac28000-7b246ac2c000 r-xp 00002000 103:06 5909120                   /home/william/swig/github/wsfulton/swig/Examples/test-suite/ruby/import_fragments.so
7b246ac2c000-7b246ac2e000 r--p 00006000 103:06 5909120                   /home/william/swig/github/wsfulton/swig/Examples/test-suite/ruby/import_fragments.so
7b246ac2e000-7b246ac2f000 r--p 00007000 103:06 5909120                   /home/william/swig/github/wsfulton/swig/Examples/test-suite/ruby/import_fragments.so
7b246ac2f000-7b246ac30000 rw-p 00008000 103:06 5909120                   /home/william/swig/github/wsfulton/swig/Examples/test-suite/ruby/import_fragments.so
7b246ac30000-7b246ac80000 rw-p 00000000 00:00 0 
7b246ac87000-7b246ad8d000 rw-p 00000000 00:00 0 
7b246ad8d000-7b246ad9d000 r--p 00000000 103:04 408271                    /usr/lib/x86_64-linux-gnu/libm.so.6
7b246ad9d000-7b246ae1c000 r-xp 00010000 103:04 408271                    /usr/lib/x86_64-linux-gnu/libm.so.6
7b246ae1c000-7b246ae74000 r--p 0008f000 103:04 408271                    /usr/lib/x86_64-linux-gnu/libm.so.6
7b246ae74000-7b246ae75000 r--p 000e7000 103:04 408271                    /usr/lib/x86_64-linux-gnu/libm.so.6
7b246ae75000-7b246ae76000 rw-p 000e8000 103:04 408271                    /usr/lib/x86_64-linux-gnu/libm.so.6
7b246ae76000-7b246ae78000 r--p 00000000 103:04 407962                    /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
7b246ae78000-7b246ae8d000 r-xp 00002000 103:04 407962                    /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
7b246ae8d000-7b246aea6000 r--p 00017000 103:04 407962                    /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
7b246aea6000-7b246aea7000 r--p 0002f000 103:04 407962                    /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
7b246aea7000-7b246aea8000 rw-p 00030000 103:04 407962                    /usr/lib/x86_64-linux-gnu/libcrypt.so.1.1.0
7b246aea8000-7b246aeb0000 rw-p 00000000 00:00 0 
7b246aeb0000-7b246aeba000 r--p 00000000 103:04 408107                    /usr/lib/x86_64-linux-gnu/libgmp.so.10.5.0
7b246aeba000-7b246af1d000 r-xp 0000a000 103:04 408107                    /usr/lib/x86_64-linux-gnu/libgmp.so.10.5.0
7b246af1d000-7b246af32000 r--p 0006d000 103:04 408107                    /usr/lib/x86_64-linux-gnu/libgmp.so.10.5.0
7b246af32000-7b246af33000 r--p 00081000 103:04 408107                    /usr/lib/x86_64-linux-gnu/libgmp.so.10.5.0
7b246af33000-7b246af34000 rw-p 00082000 103:04 408107                    /usr/lib/x86_64-linux-gnu/libgmp.so.10.5.0
7b246af34000-7b246af36000 r--p 00000000 103:04 408661                    /usr/lib/x86_64-linux-gnu/libz.so.1.3
7b246af36000-7b246af48000 r-xp 00002000 103:04 408661                    /usr/lib/x86_64-linux-gnu/libz.so.1.3
7b246af48000-7b246af4e000 r--p 00014000 103:04 408661                    /usr/lib/x86_64-linux-gnu/libz.so.1.3
7b246af4e000-7b246af4f000 r--p 0001a000 103:04 408661                    /usr/lib/x86_64-linux-gnu/libz.so.1.3
7b246af4f000-7b246af50000 rw-p 0001b000 103:04 408661                    /usr/lib/x86_64-linux-gnu/libz.so.1.3
7b246af56000-7b246af57000 r--p 00000000 103:06 30823100                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/monitor.so
7b246af57000-7b246af58000 r-xp 00001000 103:06 30823100                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/monitor.so
7b246af58000-7b246af59000 r--p 00002000 103:06 30823100                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/monitor.so
7b246af59000-7b246af5a000 r--p 00002000 103:06 30823100                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/monitor.so
7b246af5a000-7b246af5b000 rw-p 00003000 103:06 30823100                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/monitor.so
7b246af5b000-7b246af5c000 r--p 00000000 103:06 31620633                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/trans/transdb.so
7b246af5c000-7b246af5e000 r-xp 00001000 103:06 31620633                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/trans/transdb.so
7b246af5e000-7b246af5f000 r--p 00003000 103:06 31620633                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/trans/transdb.so
7b246af5f000-7b246af60000 r--p 00003000 103:06 31620633                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/trans/transdb.so
7b246af60000-7b246af61000 rw-p 00004000 103:06 31620633                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/trans/transdb.so
7b246af61000-7b246af62000 r--p 00000000 103:06 30818979                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/encdb.so
7b246af62000-7b246af64000 r-xp 00001000 103:06 30818979                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/encdb.so
7b246af64000-7b246af65000 r--p 00003000 103:06 30818979                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/encdb.so
7b246af65000-7b246af66000 r--p 00003000 103:06 30818979                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/encdb.so
7b246af66000-7b246af67000 rw-p 00004000 103:06 30818979                  /home/william/install/ruby-3_2_3-debug/lib/ruby/3.2.0/x86_64-linux/enc/encdb.so
7b246af67000-7b246af6e000 r--s 00000000 103:04 409682                    /usr/lib/x86_64-linux-gnu/gconv/gconv-modules.cache
7b246af6e000-7b246af70000 rw-p 00000000 00:00 0 
7b246af70000-7b246af74000 r--p 00000000 00:00 0                          [vvar]
7b246af74000-7b246af76000 r-xp 00000000 00:00 0                          [vdso]
7b246af76000-7b246af77000 r--p 00000000 103:04 407739                    /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7b246af77000-7b246afa2000 r-xp 00001000 103:04 407739                    /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7b246afa2000-7b246afac000 r--p 0002c000 103:04 407739                    /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7b246afac000-7b246afae000 r--p 00036000 103:04 407739                    /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7b246afae000-7b246afb0000 rw-p 00038000 103:04 407739                    /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
7ffdcf987000-7ffdd0186000 rw-p 00000000 00:00 0                          [stack]
ffffffffff600000-ffffffffff601000 --xp 00000000 00:00 0                  [vsyscall]


Aborted (core dumped)
make: *** [Makefile:82: import_fragments.cpptest] Error 134
  1. Using attached tarball
    2a. tar -xf ruby-crash.tar.bz2
    2b. cd ruby-crash
    2c. Adjust RUBY_ROOT in Makefile to your Ruby installation
    2c. make

Files

ruby-crash.tar.bz2 (21 KB) ruby-crash.tar.bz2 wsfulton (William Fulton), 04/20/2025 09:54 PM
ruby-crash-valgrind.txt (6.59 KB) ruby-crash-valgrind.txt wsfulton (William Fulton), 04/20/2025 10:12 PM

Updated by wsfulton (William Fulton) 2 months ago

I've attached a valgrind report which shows a few problems when running:

env LD_LIBRARY_PATH=. valgrind --tool=memcheck --trace-children=yes --track-origins=yes --log-file=./ruby-crash-valgrind.txt /home/william/install/ruby-3_2_3-debug/bin/ruby -I.:. ./import_fragments_runme.rb

Actions #2

Updated by byroot (Jean Boussier) 2 months ago

  • Description updated (diff)

Updated by hsbt (Hiroshi SHIBATA) 2 months ago

Can you confirm to reproduce this with the current master branch?

Updated by wsfulton (William Fulton) 2 months ago

master as of 22 April 2025 (888820c581065c7d5cbcd4a137af1e66a708979c) is okay and does NOT have the bug.

Another observation is that we observed the bug in 3.1.5 but it was okay in 3.1.4 and earlier. I've just checked latest 3.1.x:

ruby 3.1.7p261 (2025-03-26 revision 0a3704f218) [x86_64-linux]

which also fails, but sightly differently with:

<internal:/home/runner/.rvm/rubies/ruby-3.1.7/lib/ruby/3.1.0/rubygems/core_ext/kernel_require.rb>:153:in `require': machine stack overflow in critical region (fatal)

Updated by hsbt (Hiroshi SHIBATA) 2 months ago

  • Status changed from Open to Closed

Thanks for your confirmation.

Unfortunately, Ruby 3.2 is already security maintenance status. It means I will not backport commit for bugfix. I recommend to use Ruby 3.3 or 3.4.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0