#749: Regexp issues / crashes affecting StringScanner ------------------------------------+--------------------------------------- Reporter: kitchen.andy@… | Owner: lsansonetti@… Type: defect | Status: new Priority: minor | Milestone: Component: MacRuby | Keywords: ------------------------------------+--------------------------------------- Comment(by martinlagardette@…): Yep, still regexp1 and regexp2 both still crash: {{{ [...] Program received signal EXC_BAD_ACCESS, Could not access memory. Reason: KERN_INVALID_ADDRESS at address: 0x0000007300000000 [Switching to process 84323] 0x00007fff86d4a13e in objc_msgSend () (gdb) thread apply all bt Thread 3 (process 84323): #0 0x00007fff86d4a13e in objc_msgSend () #1 0x00007fff86d50f67 in finalizeOneObject () #2 0x00007fff852653d5 in Auto::foreach_block_do () #3 0x00007fff86d50b5c in batchFinalize () #4 0x00007fff8525f1e7 in Auto::Zone::invalidate_garbage () #5 0x00007fff8524fbd1 in auto_collect_internal () #6 0x00007fff8525016d in auto_collection_work () #7 0x00007fff801611b0 in _dispatch_call_block_and_release () #8 0x00007fff8013fd52 in _dispatch_queue_drain () #9 0x00007fff8013fbb4 in _dispatch_queue_invoke () #10 0x00007fff8013f75e in _dispatch_worker_thread2 () #11 0x00007fff8013f088 in _pthread_wqthread () #12 0x00007fff8013ef25 in start_wqthread () Thread 2 (process 84323): #0 0x00007fff8013e08a in kevent () #1 0x00007fff8013ff5d in _dispatch_mgr_invoke () #2 0x00007fff8013fc34 in _dispatch_queue_invoke () #3 0x00007fff8013f75e in _dispatch_worker_thread2 () #4 0x00007fff8013f088 in _pthread_wqthread () #5 0x00007fff8013ef25 in start_wqthread () Thread 1 (process 84323): #0 0x00007fff85265941 in Auto::Zone::block_start () #1 0x00007fff85252d28 in auto_zone_set_write_barrier () #2 0x00000001000b365f in str_replace_with_bytes (self=0x2003c9bc0, bytes=0x1035da792 ", ", len=2, enc=<value temporarily unavailable, due to optimizations>) at string.c:239 #3 0x00000001000c3816 in rb_str_new (cstr=0x1035da792 ", ", len=2) at string.c:6041 #4 0x0000000103595a18 in ?? () #5 0x0000000100131016 in rb_vm_dispatch (_vm=0x100f1e4a0, cache=0x100e55640, top=0, self=8590893792, klass=0x200250260, sel=0x101166180, block=0x0, opt=2 '\002', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbfa3e8) at dispatcher.cpp:159 #6 0x00000001000eff70 in rb_f_send (recv=8590893792, sel=<value temporarily unavailable, due to optimizations>, argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbfa3e0) at vm.h:594 #7 0x00000001001310b9 in rb_vm_dispatch (_vm=0x100f1e4a0, cache=0x100e5c240, top=8590893792, self=8590893792, klass=0x200250260, sel=0x100f60440, block=0x0, opt=0 '\0', argc=1, argv=0x7fff5fbfa3e0) at dispatcher.cpp:435 #8 0x000000010355a820 in ?? () #9 0x00000001035947b5 in ?? () #10 0x0000000100130ffb in rb_vm_dispatch (_vm=0x100f1e4a0, cache=0x100e53ed0, top=8592104480, self=8590893792, klass=0x200250260, sel=0x7fff850fb103, block=0x0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbfb170) at dispatcher.cpp:161 #11 0x000000010355a820 in ?? () #12 0x0000000103593ec7 in ?? () #13 0x0000000100133bc7 in rb_vm_yield_args (_vm=0x100f1e4a0, argc=<value temporarily unavailable, due to optimizations>, argv=0x200250260) at dispatcher.cpp:100 #14 0x00000001000edc58 in rb_yield (val=8592794976) at vm_eval.c:196 #15 0x0000000100004fdd in rary_each (ary=8590895104, sel=<value temporarily unavailable, due to optimizations>) at array.c:1064 #16 0x0000000100131016 in rb_vm_dispatch (_vm=0x100f1e4a0, cache=0x100e58280, top=8592104480, self=8590895104, klass=0x20006d540, sel=0x100f51810, block=0x2000e5b60, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #17 0x000000010355a820 in ?? () #18 0x00000001035933bf in ?? () #19 0x0000000100133bc7 in rb_vm_yield_args (_vm=0x100f1e4a0, argc=<value temporarily unavailable, due to optimizations>, argv=0x20006d540) at dispatcher.cpp:100 #20 0x00000001000edc58 in rb_yield (val=8592360032) at vm_eval.c:196 #21 0x0000000100004fdd in rary_each (ary=8590852992, sel=<value temporarily unavailable, due to optimizations>) at array.c:1064 #22 0x0000000100131016 in rb_vm_dispatch (_vm=0x100f1e4a0, cache=0x100e58280, top=8592104480, self=8590852992, klass=0x20006d540, sel=0x100f51810, block=0x2000f4500, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x0) at dispatcher.cpp:159 #23 0x000000010355a820 in ?? () #24 0x0000000103592ba7 in ?? () #25 0x0000000100130ffb in rb_vm_dispatch (_vm=0x100f1e4a0, cache=0x100e5bd00, top=8592104480, self=8592104480, klass=0x200279c80, sel=0x10530d060, block=0x0, opt=2 '\002', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbfe328) at dispatcher.cpp:161 #26 0x000000010355a820 in ?? () #27 0x0000000103587fc5 in ?? () #28 0x0000000100130ffb in rb_vm_dispatch (_vm=0x100f1e4a0, cache=0x100e57b90, top=8592530560, self=8592104480, klass=0x200279c80, sel=0x7fff850fb103, block=0x0, opt=0 '\0', argc=<value temporarily unavailable, due to optimizations>, argv=0x7fff5fbff090) at dispatcher.cpp:161 #29 0x000000010355a820 in ?? () #30 0x00000001035879e1 in ?? () #31 0x00000001001329a9 in rb_vm_block_eval (b=0x100f1e4a0, argc=<value temporarily unavailable, due to optimizations>, argv=0x1) at dispatcher.cpp:98 #32 0x00000001001419ca in rb_rescue2 (b_proc=<value temporarily unavailable, due to optimizations>, data1=<value temporarily unavailable, due to optimizations>, r_proc=0x10002f8d0 <rb_end_proc_call_catch>, data2=0) at vm.cpp:3361 #33 0x000000010002fea0 in rb_exec_end_proc [inlined] () at /Users/naixn/Documents/Projets/MacRuby/eval_jump.c:483 #34 ruby_finalize_0 [inlined] () at /Users/naixn/Documents/Projets/MacRuby/eval.c:83 #35 0x000000010002fea0 in ruby_finalize () at eval_jump.c:97 #36 0x000000010008fd60 in rb_exit (status=0) at process.c:2473 #37 0x0000000100000cff in main (argc=2, argv=0x100f1de00, envp=<value temporarily unavailable, due to optimizations>) at main.cpp:40 (gdb) }}} When reading the console, I sometimes get that: {{{ Thread 0 Crashed: Dispatch queue: com.apple.main-thread 0 libicucore.A.dylib 0x00007fff88fbd048 icu::RegexMatcher::~RegexMatcher() + 106 1 libmacruby.dylib 0x00000001000a7e43 rb_unicode_regex_new_retained + 2243 2 libmacruby.dylib 0x00000001000a7eee rb_unicode_regex_new_retained + 2414 3 libmacruby.dylib 0x00000001001310b9 rb_vm_dispatch + 6793 4 ??? 0x0000000102f00820 0 + 4344252448 5 ??? 0x0000000102f2303e 0 + 4344393790 }}} But not always. Also, it does not always crash. But when it doesn't crash, it goes into infinite loop, which isn't expected at all either (just like in regexp1). -- Ticket URL: <http://www.macruby.org/trac/ticket/749#comment:4> MacRuby <http://macruby.org/>