From: "xtkoba (Tee KOBAYASHI)" Date: 2021-09-18T18:51:26+00:00 Subject: [ruby-core:105344] [Ruby master Bug#17882] bootstraptest/test_ractor.rb:224 segfaults on Cygwin Issue #17882 has been updated by xtkoba (Tee KOBAYASHI). This no longer happens as of commit:4cc44bd819, though not bisected. Thanks. ---------------------------------------- Bug #17882: bootstraptest/test_ractor.rb:224 segfaults on Cygwin https://bugs.ruby-lang.org/issues/17882#change-93759 * Author: xtkoba (Tee KOBAYASHI) * Status: Open * Priority: Normal * ruby -v: ruby 3.1.0dev (2021-05-21T09:28:24Z master 50a534a152) [x86_64-cygwin] * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN ---------------------------------------- The attached test code is excerpted from `bootstraptest/test_ractor.rb:224`. This code causes a segmentation fault every time when run on `x86_64-cygwin`. There are at least 3 types of dying messages, as shown below. I have no idea whether this is relevant to #17878, which is an issue with the very same test code. Type 1 (null pointer dereference): ``` Thread 6 received signal SIGSEGV, Segmentation fault. [Switching to Thread 5368] VM_CF_BLOCK_HANDLER (cfp=0x0) at ../vm.c:115 115 const VALUE *ep = VM_CF_LEP(cfp); (gdb) bt #0 VM_CF_BLOCK_HANDLER (cfp=0x0) at ../vm.c:115 #1 0x00007ff6acedb495 in rb_vm_frame_block_handler (cfp=) at ../vm.c:128 #2 0x00007ff6acdd954e in pass_passed_block_handler (ec=0x80012bba0) at ../eval_intern.h:17 #3 rb_obj_call_init_kw (obj=obj@entry=123145240968920, argc=argc@entry=1, argv=argv@entry=0xffd0ca08, kw_splat=kw_splat@entry=0) at ../eval.c:1724 #4 0x00007ff6ace3efc2 in rb_class_new_instance (argc=argc@entry=1, argv=argv@entry=0xffd0ca08, klass=klass@entry=123145300575160) at ../object.c:2192 #5 0x00007ff6acdd1c30 in rb_exc_new_str (etype=etype@entry=123145300575160, str=) at ../error.c:1123 #6 0x00007ff6acdd29ad in rb_vraise (exc=123145300575160, fmt=, ap=) at ../error.c:2922 #7 0x00007ff6acdd29e5 in rb_raise (exc=0, fmt=0x0) at ../error.c:2930 #8 0x00007ff6acdf90e8 in rb_io_check_initialized (fptr=0x0) at ../io.c:767 #9 rb_io_check_initialized (fptr=) at ../io.c:764 #10 0x00007ff6acdf90fb in rb_io_check_closed (fptr=0x0) at ../io.c:774 #11 0x00007ff6ace011ec in prep_stdio (f=0x18023acb8 , fmode=fmode@entry=1, klass=123145300573360, klass@entry=140697440105184, path=path@entry=0x7ff6acf158e0 "") at ../io.c:8239 #12 0x00007ff6ace0122f in rb_io_prep_stdin () at ../io.c:8255 #13 0x00007ff6acebc980 in thread_start_func_2 (th=0x0, th@entry=0x80011cbf0, stack_start=stack_start@entry=0xffd0ccf8) at ../thread.c:801 #14 0x00007ff6acebd032 in thread_start_func_1 (th_ptr=) at ../thread_pthread.c:1035 #15 0x000000018016d45f in pthread::thread_init_wrapper(void*) () from target:/usr/bin/cygwin1.dll #16 0x00000001800ddbba in pthread_wrapper () from target:/usr/bin/cygwin1.dll #17 0x0000000000000000 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) ``` Type 2 (`rb_gc_mark()`: `
` is `T_ZOMBIE`): ``` Thread 7 hit Breakpoint 1, rb_bug (fmt=0x7ff6acf1396a "rb_gc_mark(): %p is T_ZOMBIE") at ../error.c:782 782 { (gdb) bt #0 rb_bug (fmt=0x7ff6acf1396a "rb_gc_mark(): %p is T_ZOMBIE") at ../error.c:782 #1 0x00007ff6acdeae8f in gc_mark_children (objspace=objspace@entry=0x800053970, obj=obj@entry=123145240171400) at ../gc.c:6934 #2 0x00007ff6acdeafb0 in gc_mark_stacked_objects (objspace=0x800053970, incremental=incremental@entry=0, count=count@entry=0) at ../gc.c:6961 #3 0x00007ff6acded415 in gc_mark_stacked_objects_all (objspace=0x800053970) at ../gc.c:7001 #4 gc_marks_rest (objspace=objspace@entry=0x800053970) at ../gc.c:7972 #5 0x00007ff6acdec08c in gc_marks (full_mark=, objspace=0x800053970) at ../gc.c:8028 #6 gc_start (objspace=objspace@entry=0x800053970, reason=, reason@entry=256) at ../gc.c:8862 #7 0x00007ff6acdee522 in heap_prepare (heap=0x800053998, objspace=0x800053970) at ../gc.c:2153 #8 heap_next_freepage (heap=0x800053998, objspace=0x800053970) at ../gc.c:2444 #9 ractor_cache_slots (objspace=objspace@entry=0x800053970, cr=cr@entry=0x800135d60) at ../gc.c:2476 #10 0x00007ff6acdee61a in newobj_slowpath (alloc_size=, wb_protected=0, cr=0x800135d60, objspace=0x800053970, flags=11, klass=123145300573360) at ../gc.c:2517 #11 newobj_slowpath_wb_unprotected (klass=123145300573360, flags=11, objspace=0x800053970, cr=0x800135d60, alloc_size=) at ../gc.c:2547 #12 0x00007ff6acdee815 in newobj_of0 (klass=klass@entry=123145300573360, flags=flags@entry=11, wb_protected=wb_protected@entry=0, cr=, alloc_size=) at ../gc.c:2585 #13 0x00007ff6acdee86d in newobj_of (klass=klass@entry=123145300573360, flags=flags@entry=11, v1=v1@entry=0, v2=v2@entry=0, v3=v3@entry=0, wb_protected=wb_protected@entry=0, alloc_size=40) at ../gc.c:2594 #14 0x00007ff6acdeec23 in rb_wb_unprotected_newobj_of (klass=klass@entry=123145300573360, flags=flags@entry=11, size=40, size@entry=0) at ../gc.c:2610 #15 0x00007ff6acdf666c in io_alloc (klass=klass@entry=123145300573360) at ../io.c:1038 #16 0x00007ff6acdfbca9 in prep_io (fd=2, fmode=fmode@entry=65546, klass=klass@entry=123145300573360, path=path@entry=0x7ff6acf158f1 "") at ../io.c:8206 #17 0x00007ff6ace011d4 in prep_stdio (f=0x18023ae28 , fmode=fmode@entry=10, klass=123145300573360, klass@entry=34361007456, path=path@entry=0x7ff6acf158f1 "") at ../io.c:8237 #18 0x00007ff6ace01295 in rb_io_prep_stderr () at ../io.c:8267 #19 0x00007ff6acebc9a6 in thread_start_func_2 (th=0x0, th@entry=0x800134550, stack_start=stack_start@entry=0xffa0ccf8) at ../thread.c:803 #20 0x00007ff6acebd032 in thread_start_func_1 (th_ptr=) at ../thread_pthread.c:1035 #21 0x000000018016d45f in pthread::thread_init_wrapper(void*) () from target:/usr/bin/cygwin1.dll #22 0x00000001800ddbba in pthread_wrapper () from target:/usr/bin/cygwin1.dll #23 0x0000000000000000 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) ``` Type 3 (try to mark `T_NONE` object): ``` 0x00006fffffe7fb70 [0 M ] T_NONE ------------------------------------------------------------------------ Thread 7 hit Breakpoint 1, rb_bug (fmt=fmt@entry=0x7ff6acf138a0 "try to mark T_NONE object") at ../error.c:782 782 { (gdb) bt #0 rb_bug (fmt=fmt@entry=0x7ff6acf138a0 "try to mark T_NONE object") at ../error.c:782 #1 0x00007ff6acdea5c9 in gc_mark_ptr (objspace=0x800053970, obj=123145300736880) at ../gc.c:6581 #2 0x00007ff6ace672ea in ractor_mark (ptr=0x800117240) at ../ractor.c:197 #3 0x00007ff6acdeafb0 in gc_mark_stacked_objects (objspace=objspace@entry=0x800053970, incremental=incremental@entry=1, count=count@entry=2147483647) at ../gc.c:6961 #4 0x00007ff6acded3f9 in gc_mark_stacked_objects_incremental (count=2147483647, objspace=0x800053970) at ../gc.c:6995 #5 gc_marks_rest (objspace=objspace@entry=0x800053970) at ../gc.c:7968 #6 0x00007ff6acdee4f1 in gc_marks_continue (heap=0x800053998, objspace=0x800053970) at ../gc.c:8012 #7 heap_prepare (heap=0x800053998, objspace=0x800053970) at ../gc.c:2148 #8 heap_next_freepage (heap=0x800053998, objspace=0x800053970) at ../gc.c:2444 #9 ractor_cache_slots (objspace=objspace@entry=0x800053970, cr=cr@entry=0x800129350) at ../gc.c:2476 #10 0x00007ff6acdee61a in newobj_slowpath (alloc_size=, wb_protected=0, cr=0x800129350, objspace=0x800053970, flags=11, klass=123145300573360) at ../gc.c:2517 #11 newobj_slowpath_wb_unprotected (klass=123145300573360, flags=11, objspace=0x800053970, cr=0x800129350, alloc_size=) at ../gc.c:2547 #12 0x00007ff6acdee815 in newobj_of0 (klass=klass@entry=123145300573360, flags=flags@entry=11, wb_protected=wb_protected@entry=0, cr=, alloc_size=) at ../gc.c:2585 #13 0x00007ff6acdee86d in newobj_of (klass=klass@entry=123145300573360, flags=flags@entry=11, v1=v1@entry=0, v2=v2@entry=0, v3=v3@entry=0, wb_protected=wb_protected@entry=0, alloc_size=40) at ../gc.c:2594 #14 0x00007ff6acdeec23 in rb_wb_unprotected_newobj_of (klass=klass@entry=123145300573360, flags=flags@entry=11, size=40, size@entry=0) at ../gc.c:2610 #15 0x00007ff6acdf666c in io_alloc (klass=klass@entry=123145300573360) at ../io.c:1038 #16 0x00007ff6acdfbca9 in prep_io (fd=0, fmode=fmode@entry=65537, klass=klass@entry=123145300573360, path=path@entry=0x7ff6acf158e0 "") at ../io.c:8206 #17 0x00007ff6ace011d4 in prep_stdio (f=0x18023acb8 , fmode=fmode@entry=1, klass=123145300573360, klass@entry=140697440105184, path=path@entry=0x7ff6acf158e0 "") at ../io.c:8237 #18 0x00007ff6ace0122f in rb_io_prep_stdin () at ../io.c:8255 #19 0x00007ff6acebc980 in thread_start_func_2 (th=0x0, th@entry=0x80010dcb0, stack_start=stack_start@entry=0xffa0ccf8) at ../thread.c:801 #20 0x00007ff6acebd032 in thread_start_func_1 (th_ptr=) at ../thread_pthread.c:1035 #21 0x000000018016d45f in pthread::thread_init_wrapper(void*) () from target:/usr/bin/cygwin1.dll #22 0x00000001800ddbba in pthread_wrapper () from target:/usr/bin/cygwin1.dll #23 0x0000000000000000 in ?? () Backtrace stopped: previous frame inner to this frame (corrupt stack?) ``` ---Files-------------------------------- bootstraptest-test_ractor-line224.rb (402 Bytes) -- https://bugs.ruby-lang.org/ Unsubscribe: