-
Notifications
You must be signed in to change notification settings - Fork 43
Closed
Description
Hi, libffi-3.4.2 recently landed in Fedora and since that time, I observe strange failures in Ruby test suite:
1) Failure:
TestAutoload#test_autoload_fork [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_autoload.rb:380]:
[ruby-core:86410] [Bug #14634].
Expected #<Test::Unit::AssertionFailedError: Expected #<Process::Status: pid 3249430 SIGABRT (signal 6) (core dumped)> to be success?.> to be nil.
2) Failure:
TestAutoload#test_autoload_fork [/builddir/build/BUILD/ruby-3.1.0/tool/lib/zombie_hunter.rb:6]:
Expected [[3249431, #<Process::Status: pid 3249431 SIGABRT (signal 6) (core dumped)>]] to be empty.
3) Failure:
TestRand#test_fork_shuffle [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_rand.rb:276]:
#<Process::Status: pid 3249809 SIGABRT (signal 6) (core dumped)>.
Expected #<Process::Status: pid 3249809 SIGABRT (signal 6) (core dumped)> to be success?.
4) Failure:
TestRand#test_rand_reseed_on_fork [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_rand.rb:306]:
[ruby-core:41209]
pid 3249817 killed by SIGABRT (signal 6) (core dumped)
5) Failure:
TestIO#test_copy_stream_socket7 [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_io.rb:995]:
Expected #<Process::Status: pid 3251775 SIGABRT (signal 6) (core dumped)> to be success?.
6) Failure:
JSONGeneratorTest#test_broken_bignum [/builddir/build/BUILD/ruby-3.1.0/test/json/json_generator_test.rb:305]:
Failed assertion, no message given.
7) Failure:
TestBeginEndBlock#test_internal_errinfo_at_exit [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_beginendblock.rb:175]:
Expected #<Process::Status: pid 3252235 SIGABRT (signal 6) (core dumped)> to not be signaled?.
8) Failure:
TestProcess#test_signals_work_after_exec_fail [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_process.rb:2428]:
Expected #<Process::Status: pid 3252558 SIGABRT (signal 6) (core dumped)> to be success?.
9) Failure:
TestProcess#test_threading_works_after_exec_fail [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_process.rb:2464]:
Expected #<Process::Status: pid 3252910 SIGABRT (signal 6) (core dumped)> to be success?.
10) Failure:
TestProcess#test_process_detach [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_process.rb:2348]:
Expected #<Process::Status: pid 3253011 SIGABRT (signal 6) (core dumped)> to be success?.
11) Failure:
TestThread#test_blocking_mutex_unlocked_on_fork [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_thread.rb:1223]:
[ruby-core:55102] [Bug #8433].
<false> expected but was
<nil>.
12) Failure:
TestThread#test_fork_in_thread [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_thread.rb:1243]:
[ruby-core:62070] [Bug #9751]
pid 3253221 killed by SIGABRT (signal 6) (core dumped).
Expected #<Process::Status: pid 3253221 SIGABRT (signal 6) (core dumped)> to not be signaled?.
13) Failure:
TestThread#test_fork_while_locked [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_thread.rb:1254]:
[ruby-core:85940] [Bug #14578].
Expected #<Process::Status: pid 3253241 SIGABRT (signal 6) (core dumped)> to be success?.
14) Failure:
TestThread#test_fork_while_locked [/builddir/build/BUILD/ruby-3.1.0/tool/lib/zombie_hunter.rb:6]:
Expected [[3253249, #<Process::Status: pid 3253249 SIGABRT (signal 6) (core dumped)>],
[3253250, #<Process::Status: pid 3253250 SIGABRT (signal 6) (core dumped)>]] to be empty.
Finished tests in 885.270988s, 24.2186 tests/s, 3106.1596 assertions/s.
21440 tests, 2749793 assertions, 14 failures, 0 errors, 56 skips
ruby -v: ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x86_64-linux]
make: *** [uncommon.mk:822: yes-test-all] Aborted (core dumped)
Executing the test on itself, they passes just fine, but testing e.g. test/ruby/test_autoload.rb -v -n '/TestAutoload#test_autoload_fork/'
together with test/fiddle/test_import.rb
makes the reproducer smaller.
Trying to reduce the issue even further, I have reduced the test/ruby/test_import.rb into the following shape:
# coding: US-ASCII
# frozen_string_literal: true
begin
require_relative 'helper'
require 'fiddle/import'
rescue LoadError
end
module Fiddle
module LIBC
extend Importer
dlload LIBC_SO, LIBM_SO
CallCallback = bind("void call_callback(void*, void*)"){ | ptr1, ptr2|
# f = Function.new(ptr1.to_i, [TYPE_VOIDP], TYPE_VOID)
# f.call(ptr2)
}
end
end if defined?(Fiddle)
And use just miniruby:
$ gdb --args ./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems" --excludes-dir=./test/excludes --name='!/memory_leak/' test/fiddle/test_import.rb test/ruby/test_autoload.rb -v -n '/TestAutoload#test_autoload_fork/'
GNU gdb (GDB) Fedora 11.1-6.fc36
Copyright (C) 2021 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./miniruby...
warning: File "/builddir/build/BUILD/ruby-3.1.0/.gdbinit" auto-loading has been declined by your `auto-load safe-path' set to "$debugdir:$datadir/auto-load".
To enable execution of this file add
add-auto-load-safe-path /builddir/build/BUILD/ruby-3.1.0/.gdbinit
line to your configuration file "/builddir/.config/gdb/gdbinit".
To completely disable this security protection add
set auto-load safe-path /
line to your configuration file "/builddir/.config/gdb/gdbinit".
For more information about this security protection see the
"Auto-loading safe path" section in the GDB manual. E.g., run from the shell:
info "(gdb)Auto-loading safe path"
(gdb) r
Starting program: /builddir/build/BUILD/ruby-3.1.0/miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems ./test/runner.rb --ruby=./miniruby\ -I./lib\ -I.\ -I.ext/common\ \ ./tool/runruby.rb\ --extout=.ext\ \ --\ --disable-gems --excludes-dir=./test/excludes --name=\!/memory_leak/ test/fiddle/test_import.rb test/ruby/test_autoload.rb -v -n /TestAutoload\#test_autoload_fork/
Download failed: No route to host. Continuing without debug info for /builddir/build/BUILD/ruby-3.1.0/system-supplied DSO at 0x7ffff7fc4000.
Download failed: No route to host. Continuing without debug info for /lib64/libz.so.1.
Download failed: No route to host. Continuing without debug info for /lib64/libgmp.so.10.
Download failed: No route to host. Continuing without debug info for /lib64/libcrypt.so.2.
Download failed: No route to host. Continuing without debug info for /lib64/libm.so.6.
Download failed: No route to host. Continuing without debug info for /lib64/libc.so.6.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
process 13364 is executing new program: /builddir/build/BUILD/ruby-3.1.0/ruby
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.34.9000-36.fc36.x86_64 gmp-6.2.1-1.fc36.x86_64 libxcrypt-4.4.27-1.fc36.x86_64 zlib-1.2.11-30.fc35.x86_64
Download failed: No route to host. Continuing without debug info for /lib64/libz.so.1.
Download failed: No route to host. Continuing without debug info for /lib64/libgmp.so.10.
Download failed: No route to host. Continuing without debug info for /lib64/libcrypt.so.2.
Download failed: No route to host. Continuing without debug info for /lib64/libm.so.6.
Download failed: No route to host. Continuing without debug info for /lib64/libc.so.6.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
Run options:
--seed=54837
"--ruby=./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems"
--excludes-dir=./test/excludes
--name=!/memory_leak/
-v
-n
/TestAutoload#test_autoload_fork/
# Running tests:
[Detaching after vfork from child process 13401]
[1/0] TestAutoload#test_autoload_fork[New Thread 0x7ffff4ccf640 (LWP 13402)]
[New Thread 0x7ffff4bae640 (LWP 13403)]
[New Thread 0x7ffff4a8d640 (LWP 13404)]
[New Thread 0x7ffff496c640 (LWP 13405)]
[New Thread 0x7ffff484b640 (LWP 13406)]
[New Thread 0x7ffff472a640 (LWP 13407)]
[Detaching after fork from child process 13408]
[Detaching after fork from child process 13409]
[Detaching after fork from child process 13410]
= 0.39 s
1) Failure:
TestAutoload#test_autoload_fork [/builddir/build/BUILD/ruby-3.1.0/test/ruby/test_autoload.rb:380]:
[ruby-core:86410] [Bug #14634].
Expected #<Test::Unit::AssertionFailedError: Expected #<Process::Status: pid 13409 SIGABRT (signal 6) (core dumped)> to be success?.> to be nil.
2) Failure:
TestAutoload#test_autoload_fork [/builddir/build/BUILD/ruby-3.1.0/tool/lib/zombie_hunter.rb:6]:
Expected [[13410, #<Process::Status: pid 13410 SIGABRT (signal 6) (core dumped)>]] to be empty.
Finished tests in 0.392854s, 2.5455 tests/s, 12.7274 assertions/s.
1 tests, 5 assertions, 2 failures, 0 errors, 0 skips
ruby -v: ruby 3.1.0p0 (2021-12-25 revision fb4df44d16) [x86_64-linux]
Thread 1 "ruby" received signal SIGABRT, Aborted.
0x00007ffff78a764c in __pthread_kill_implementation () from /lib6
5F4B
4/libc.so.6
Missing separate debuginfos, use: dnf debuginfo-install glibc-2.34.9000-36.fc36.x86_64 gmp-6.2.1-1.fc36.x86_64 libxcrypt-4.4.27-1.fc36.x86_64 zlib-1.2.11-30.fc35.x86_64
(gdb) bt
#0 0x00007ffff78a764c in __pthread_kill_implementation () from /lib64/libc.so.6
#1 0x00007ffff785a656 in raise () from /lib64/libc.so.6
#2 0x00007ffff7844833 in abort () from /lib64/libc.so.6
#3 0x00007ffff4d0a5b8 in dlfree (mem=0x7ffff7bf1010) at ../src/dlmalloc.c:4350
#4 0x00007ffff4d190b1 in dealloc (ptr=0x5555558c1c00) at /builddir/build/BUILD/ruby-3.1.0/ext/fiddle/closure.c:32
#5 0x00007ffff7cb7801 in run_final (zombie=140737300557440, objspace=0x55555555d800) at /builddir/build/BUILD/ruby-3.1.0/gc.c:4011
#6 finalize_list (objspace=objspace@entry=0x55555555d800, zombie=140737300557440) at /builddir/build/BUILD/ruby-3.1.0/gc.c:4030
#7 0x00007ffff7cb80cc in rb_objspace_call_finalizer (objspace=0x55555555d800) at /builddir/build/BUILD/ruby-3.1.0/gc.c:4194
#8 0x00007ffff7ca56eb in rb_ec_finalize (ec=0x55555555dd70) at /builddir/build/BUILD/ruby-3.1.0/eval.c:164
#9 rb_ec_cleanup (ec=ec@entry=0x55555555dd70, ex0=<optimized out>) at /builddir/build/BUILD/ruby-3.1.0/eval.c:256
#10 0x00007ffff7ca5c14 in ruby_run_node (n=0x7ffff7699660) at /builddir/build/BUILD/ruby-3.1.0/eval.c:321
#11 0x000055555555518f in main (argc=<optimized out>, argv=<optimized out>) at ./main.c:47
(gdb) f 3
#3 0x00007ffff4d0a5b8 in dlfree (mem=0x7ffff7bf1010) at ../src/dlmalloc.c:4350
4350 USAGE_ERROR_ACTION(fm, p);
(gdb) l
4345 check_free_chunk(fm, p);
4346 goto postaction;
4347 }
4348 }
4349 erroraction:
4350 USAGE_ERROR_ACTION(fm, p);
4351 postaction:
4352 POSTACTION(fm);
4353 }
4354 }
Metadata
Metadata
Assignees
Labels
No labels