[MacRuby] #164: MacRuby crashes Cocoa app with exception in CFEqual
#164: MacRuby crashes Cocoa app with exception in CFEqual --------------------------------+------------------------------------------- Reporter: self@mattmower.com | Owner: lsansonetti@apple.com Type: defect | Status: new Priority: blocker | Milestone: MacRuby 0.4 Component: MacRuby | Keywords: crash,cfequal --------------------------------+------------------------------------------- Cocoa application built using MacRuby r746 on OS 10.5.5 with a Core 2 Duo MBP with 4GB of RAM. I am invoking a ruby proc using performRubySelector as follows: callSelector = @selector(call:); proc = [[MacRuby sharedRuntime] evaluateString:[NSString stringWithFormat:@"proc %@", source]]; return [proc performRubySelector:callSelector withArguments:_arg1_,_arg2_,nil]; in this case I am passing two Objective-C objects, part of my application data model, into the proc. The source of the proc is: do |generateTool,player| if rand < 0.5 generateTool.directionKnob.value = 1 else generateTool.directionKnob.value = 5 end end At some point the application crashes with the following stack trace: (gdb) thread apply all bt Thread 6 (process 59831 thread 0x6f17): #0 0x9063c68e in __semwait_signal () #1 0x90667986 in _pthread_cond_wait () #2 0x9066736d in pthread_cond_wait$UNIX2003 () #3 0x900db692 in -[NSCondition wait] () #4 0x9009402a in -[NSObject(NSThreadPerformAdditions) performSelector:onThread:withObject:waitUntilDone:modes:] () #5 0x900e7648 in -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:] () #6 0x0001cf7e in -[ELTool run:] (self=0x22afa80, _cmd=0x96884ee0, _playhead_=0x0) at /Users/matt/Projects/LucidMac/Elysium/src/tools/ELTool.m:83 #7 0x000087bc in -[ELLayer pulse] (self=0x2246630, _cmd=0x2b27f) at /Users/matt/Projects/LucidMac/Elysium/src/datamodel/ELLayer.m:245 #8 0x00007f9f in -[ELLayer run] (self=0x2246630, _cmd=0x96884a24) at /Users/matt/Projects/LucidMac/Elysium/src/datamodel/ELLayer.m:155 #9 0x000081ca in -[ELLayer runLayer] (self=0x2246630, _cmd=0x2b203) at /Users/matt/Projects/LucidMac/Elysium/src/datamodel/ELLayer.m:177 #10 0x90093bad in -[NSThread main] () #11 0x90093754 in __NSThread__main__ () #12 0x906666f5 in _pthread_start () #13 0x906665b2 in thread_start () Thread 5 (process 59831 thread 0x5403): #0 0x9063c68e in __semwait_signal () #1 0x9063c50f in nanosleep$UNIX2003 () #2 0x002ec71e in thread_timer (dummy=0x0) at thread_pthread.c:571 #3 0x906666f5 in _pthread_start () #4 0x906665b2 in thread_start () Thread 4 (process 59831 thread 0x4d03): #0 0x906354a6 in mach_msg_trap () #1 0x9063cc9c in mach_msg () #2 0x00098f0f in XServerMachPort::ReceiveMessage () #3 0x0008b477 in MIDIInPortThread::Run () #4 0x0008f07d in XThread::RunHelper () #5 0x000999ee in CAPThread::Entry () #6 0x906666f5 in _pthread_start () #7 0x906665b2 in thread_start () Thread 3 (process 59831 thread 0x3d03): #0 0x906354a6 in mach_msg_trap () #1 0x9063cc9c in mach_msg () #2 0x011a7c39 in __ape_agent () #3 0x906666f5 in _pthread_start () #4 0x906665b2 in thread_start () Thread 2 (process 59831 thread 0x2a03): #0 0x9063c68e in __semwait_signal () #1 0x90667986 in _pthread_cond_wait () #2 0x9066736d in pthread_cond_wait$UNIX2003 () #3 0x93f36bcf in auto_collection_thread () #4 0x906666f5 in _pthread_start () #5 0x906665b2 in thread_start () Thread 1 (process 59831 thread 0x10b): #0 0x92fce036 in CFEqual () #1 0x900b917f in -[NSKeyValueUnnestedProperty _keyPathIfAffectedByValueForKey:exactMatch:] () #2 0x900b9015 in -[NSKeyValueUnnestedProperty keyPathIfAffectedByValueForKey:exactMatch:] () #3 0x9008fe81 in -[NSObject(NSKeyValueObserverNotification) willChangeValueForKey:] () #4 0x9016c96d in _NSSetIntValueAndNotify () #5 0x903dc1dd in .LCFI1 () #6 0x903dc771 in ffi_call () #7 0x002fd3e0 in rb_objc_call2 (recv=36326752, klass=501521904, sel=0x1283530, imp=0x9016c8f0 <_NSSetIntValueAndNotify>, sig=0x202e630, bs_method=0x0, argc=1, argv=0x14e0058) at objc.m:1296 #8 0x002e64d3 in vm_call_method (th=0x203b6b0, cfp=0x155ff50, num=1, blockptr=0x0, flag=97, id=<value temporarily unavailable, due to optimizations>, recv=36326752, klass=501521904, mcache=0x202e620) at vm_insnhelper.c:662 #9 0x002d6759 in vm_eval (th=0x203b6b0, initial=<value temporarily unavailable, due to optimizations>) at insns.def:1067 #10 0x002e0f6b in vm_eval_body (th=0x203b6b0) at vm.c:1033 #11 0x002e14db in vm_invoke_proc (th=0x203b6b0, proc=0x22a3530, self=33777776, argc=1, argv=0xbfffe5b0, blockptr=0x0) at vm.c:449 #12 0x0020ab6f in proc_call (argc=1, argv=0x1, procval=1) at proc.c:506 #13 0x002cf035 in call_cfunc (func=0x20ab10 <proc_call>, recv=36301072, len=<value temporarily unavailable, due to optimizations>, argc=1, argv=0xbfffe5b0) at vm_insnhelper.c:289 #14 0x002e2539 in vm_call0 (th=0x203b6b0, klass=19322032, recv=36301072, id=128335, oid=4, argc=1, argv=0xbfffe5b0, body=0x2069c40, nosuper=0) at vm_eval.c:75 #15 0x002f4db8 in performRuby_safe (arg=1) at objc.m:3545 #16 0x002052a9 in rb_rescue2 (b_proc=0x2f4d60 <performRuby_safe>, data1=3221218812, r_proc=0x2f4dc0 <performRuby_rescue>, data2=0) at eval.c:662 #17 0x002f8f47 in -[NSObject(MacRubyAdditions) performRubySelector:withArguments:count:] (self=0x229e910, _cmd=0x30fd70, sel=0x2f1a0, argv=0xbfffe660, argc=1) at objc.m:3609 #18 0x002f4ea0 in -[NSObject(MacRubyAdditions) performRubySelector:withArguments:] (self=0x1, _cmd=0x30fd4c, sel=0x1, firstArg=0x22afa80) at objc.m:3649 #19 0x0001e42a in -[RubyBlock evalWithArg:arg:] (self=0x23b5ec0, _cmd=0x2ef72, _arg1_=0x22afa80, _arg2_=0x0) at /Users/matt/Projects/LucidMac/Elysium/src/scripting/RubyBlock.m:55 #20 0x0001d0bf in -[ELTool runWillRunScript:] (self=0x22afa80, _cmd=0x2effc, _playhead_=0x0) at /Users/matt/Projects/LucidMac/Elysium/src/tools/ELTool.m:104 #21 0x9009475c in __NSThreadPerformPerform () #22 0x92fcb615 in CFRunLoopRunSpecific () #23 0x92fcbcf8 in CFRunLoopRunInMode () #24 0x946a1480 in RunCurrentEventLoopInMode () #25 0x946a1299 in ReceiveNextEventCommon () #26 0x946a110d in BlockUntilNextEventMatchingListInMode () #27 0x927073ed in _DPSNextEvent () #28 0x92706ca0 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] () #29 0x926ffcdb in -[NSApplication run] () #30 0x926ccf14 in NSApplicationMain () #31 0x00002670 in main (argc=3, argv=0xbffff6ac) at /Users/matt/Projects/LucidMac/Elysium/main.m:13 (gdb) then crashed with an EXC_BAD_ACCESS signal. This problem is blocking the next release of my app which utilizes a lot of Ruby scripting. -- Ticket URL: <http://www.macruby.org/trac/ticket/164> MacRuby <http://macruby.org/>
#164: MacRuby crashes Cocoa app with exception in CFEqual --------------------------------+------------------------------------------- Reporter: self@mattmower.com | Owner: lsansonetti@apple.com Type: defect | Status: new Priority: blocker | Milestone: MacRuby 0.4 Component: MacRuby | Resolution: Keywords: crash,cfequal | --------------------------------+------------------------------------------- Comment(by self@mattmower.com): Well that mangled the formatting quite nicely. For a clean version check [http://gist.github.com/26119 here]. -- Ticket URL: <http://www.macruby.org/trac/ticket/164#comment:1> MacRuby <http://macruby.org/>
#164: MacRuby crashes Cocoa app with exception in CFEqual --------------------------------+------------------------------------------- Reporter: self@mattmower.com | Owner: lsansonetti@apple.com Type: defect | Status: new Priority: blocker | Milestone: MacRuby 0.4 Component: MacRuby | Resolution: Keywords: crash,cfequal | --------------------------------+------------------------------------------- Old description:
Cocoa application built using MacRuby r746 on OS 10.5.5 with a Core 2 Duo MBP with 4GB of RAM.
I am invoking a ruby proc using performRubySelector as follows:
callSelector = @selector(call:); proc = [[MacRuby sharedRuntime] evaluateString:[NSString stringWithFormat:@"proc %@", source]]; return [proc performRubySelector:callSelector withArguments:_arg1_,_arg2_,nil];
in this case I am passing two Objective-C objects, part of my application data model, into the proc. The source of the proc is:
do |generateTool,player| if rand < 0.5 generateTool.directionKnob.value = 1 else generateTool.directionKnob.value = 5 end end
At some point the application crashes with the following stack trace:
(gdb) thread apply all bt
Thread 6 (process 59831 thread 0x6f17): #0 0x9063c68e in __semwait_signal () #1 0x90667986 in _pthread_cond_wait () #2 0x9066736d in pthread_cond_wait$UNIX2003 () #3 0x900db692 in -[NSCondition wait] () #4 0x9009402a in -[NSObject(NSThreadPerformAdditions) performSelector:onThread:withObject:waitUntilDone:modes:] () #5 0x900e7648 in -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:] () #6 0x0001cf7e in -[ELTool run:] (self=0x22afa80, _cmd=0x96884ee0, _playhead_=0x0) at /Users/matt/Projects/LucidMac/Elysium/src/tools/ELTool.m:83 #7 0x000087bc in -[ELLayer pulse] (self=0x2246630, _cmd=0x2b27f) at /Users/matt/Projects/LucidMac/Elysium/src/datamodel/ELLayer.m:245 #8 0x00007f9f in -[ELLayer run] (self=0x2246630, _cmd=0x96884a24) at /Users/matt/Projects/LucidMac/Elysium/src/datamodel/ELLayer.m:155 #9 0x000081ca in -[ELLayer runLayer] (self=0x2246630, _cmd=0x2b203) at /Users/matt/Projects/LucidMac/Elysium/src/datamodel/ELLayer.m:177 #10 0x90093bad in -[NSThread main] () #11 0x90093754 in __NSThread__main__ () #12 0x906666f5 in _pthread_start () #13 0x906665b2 in thread_start ()
Thread 5 (process 59831 thread 0x5403): #0 0x9063c68e in __semwait_signal () #1 0x9063c50f in nanosleep$UNIX2003 () #2 0x002ec71e in thread_timer (dummy=0x0) at thread_pthread.c:571 #3 0x906666f5 in _pthread_start () #4 0x906665b2 in thread_start ()
Thread 4 (process 59831 thread 0x4d03): #0 0x906354a6 in mach_msg_trap () #1 0x9063cc9c in mach_msg () #2 0x00098f0f in XServerMachPort::ReceiveMessage () #3 0x0008b477 in MIDIInPortThread::Run () #4 0x0008f07d in XThread::RunHelper () #5 0x000999ee in CAPThread::Entry () #6 0x906666f5 in _pthread_start () #7 0x906665b2 in thread_start ()
Thread 3 (process 59831 thread 0x3d03): #0 0x906354a6 in mach_msg_trap () #1 0x9063cc9c in mach_msg () #2 0x011a7c39 in __ape_agent () #3 0x906666f5 in _pthread_start () #4 0x906665b2 in thread_start ()
Thread 2 (process 59831 thread 0x2a03): #0 0x9063c68e in __semwait_signal () #1 0x90667986 in _pthread_cond_wait () #2 0x9066736d in pthread_cond_wait$UNIX2003 () #3 0x93f36bcf in auto_collection_thread () #4 0x906666f5 in _pthread_start () #5 0x906665b2 in thread_start ()
Thread 1 (process 59831 thread 0x10b): #0 0x92fce036 in CFEqual () #1 0x900b917f in -[NSKeyValueUnnestedProperty _keyPathIfAffectedByValueForKey:exactMatch:] () #2 0x900b9015 in -[NSKeyValueUnnestedProperty keyPathIfAffectedByValueForKey:exactMatch:] () #3 0x9008fe81 in -[NSObject(NSKeyValueObserverNotification) willChangeValueForKey:] () #4 0x9016c96d in _NSSetIntValueAndNotify () #5 0x903dc1dd in .LCFI1 () #6 0x903dc771 in ffi_call () #7 0x002fd3e0 in rb_objc_call2 (recv=36326752, klass=501521904, sel=0x1283530, imp=0x9016c8f0 <_NSSetIntValueAndNotify>, sig=0x202e630, bs_method=0x0, argc=1, argv=0x14e0058) at objc.m:1296 #8 0x002e64d3 in vm_call_method (th=0x203b6b0, cfp=0x155ff50, num=1, blockptr=0x0, flag=97, id=<value temporarily unavailable, due to optimizations>, recv=36326752, klass=501521904, mcache=0x202e620) at vm_insnhelper.c:662 #9 0x002d6759 in vm_eval (th=0x203b6b0, initial=<value temporarily unavailable, due to optimizations>) at insns.def:1067 #10 0x002e0f6b in vm_eval_body (th=0x203b6b0) at vm.c:1033 #11 0x002e14db in vm_invoke_proc (th=0x203b6b0, proc=0x22a3530, self=33777776, argc=1, argv=0xbfffe5b0, blockptr=0x0) at vm.c:449 #12 0x0020ab6f in proc_call (argc=1, argv=0x1, procval=1) at proc.c:506 #13 0x002cf035 in call_cfunc (func=0x20ab10 <proc_call>, recv=36301072, len=<value temporarily unavailable, due to optimizations>, argc=1, argv=0xbfffe5b0) at vm_insnhelper.c:289 #14 0x002e2539 in vm_call0 (th=0x203b6b0, klass=19322032, recv=36301072, id=128335, oid=4, argc=1, argv=0xbfffe5b0, body=0x2069c40, nosuper=0) at vm_eval.c:75 #15 0x002f4db8 in performRuby_safe (arg=1) at objc.m:3545 #16 0x002052a9 in rb_rescue2 (b_proc=0x2f4d60 <performRuby_safe>, data1=3221218812, r_proc=0x2f4dc0 <performRuby_rescue>, data2=0) at eval.c:662 #17 0x002f8f47 in -[NSObject(MacRubyAdditions) performRubySelector:withArguments:count:] (self=0x229e910, _cmd=0x30fd70, sel=0x2f1a0, argv=0xbfffe660, argc=1) at objc.m:3609 #18 0x002f4ea0 in -[NSObject(MacRubyAdditions) performRubySelector:withArguments:] (self=0x1, _cmd=0x30fd4c, sel=0x1, firstArg=0x22afa80) at objc.m:3649 #19 0x0001e42a in -[RubyBlock evalWithArg:arg:] (self=0x23b5ec0, _cmd=0x2ef72, _arg1_=0x22afa80, _arg2_=0x0) at /Users/matt/Projects/LucidMac/Elysium/src/scripting/RubyBlock.m:55 #20 0x0001d0bf in -[ELTool runWillRunScript:] (self=0x22afa80, _cmd=0x2effc, _playhead_=0x0) at /Users/matt/Projects/LucidMac/Elysium/src/tools/ELTool.m:104 #21 0x9009475c in __NSThreadPerformPerform () #22 0x92fcb615 in CFRunLoopRunSpecific () #23 0x92fcbcf8 in CFRunLoopRunInMode () #24 0x946a1480 in RunCurrentEventLoopInMode () #25 0x946a1299 in ReceiveNextEventCommon () #26 0x946a110d in BlockUntilNextEventMatchingListInMode () #27 0x927073ed in _DPSNextEvent () #28 0x92706ca0 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] () #29 0x926ffcdb in -[NSApplication run] () #30 0x926ccf14 in NSApplicationMain () #31 0x00002670 in main (argc=3, argv=0xbffff6ac) at /Users/matt/Projects/LucidMac/Elysium/main.m:13 (gdb)
then crashed with an EXC_BAD_ACCESS signal.
This problem is blocking the next release of my app which utilizes a lot of Ruby scripting.
New description: Cocoa application built using MacRuby r746 on OS 10.5.5 with a Core 2 Duo MBP with 4GB of RAM. I am invoking a ruby proc using performRubySelector as follows: {{{ #!ruby callSelector = @selector(call:); proc = [[MacRuby sharedRuntime] evaluateString:[NSString stringWithFormat:@"proc %@", source]]; return [proc performRubySelector:callSelector withArguments:_arg1_,_arg2_,nil]; }}} in this case I am passing two Objective-C objects, part of my application data model, into the proc. The source of the proc is: {{{ #!ruby do |generateTool,player| if rand < 0.5 generateTool.directionKnob.value = 1 else generateTool.directionKnob.value = 5 end end }}} At some point the application crashes with the following stack trace: {{{ (gdb) thread apply all bt Thread 6 (process 59831 thread 0x6f17): #0 0x9063c68e in __semwait_signal () #1 0x90667986 in _pthread_cond_wait () #2 0x9066736d in pthread_cond_wait$UNIX2003 () #3 0x900db692 in -[NSCondition wait] () #4 0x9009402a in -[NSObject(NSThreadPerformAdditions) performSelector:onThread:withObject:waitUntilDone:modes:] () #5 0x900e7648 in -[NSObject(NSThreadPerformAdditions) performSelectorOnMainThread:withObject:waitUntilDone:] () #6 0x0001cf7e in -[ELTool run:] (self=0x22afa80, _cmd=0x96884ee0, _playhead_=0x0) at /Users/matt/Projects/LucidMac/Elysium/src/tools/ELTool.m:83 #7 0x000087bc in -[ELLayer pulse] (self=0x2246630, _cmd=0x2b27f) at /Users/matt/Projects/LucidMac/Elysium/src/datamodel/ELLayer.m:245 #8 0x00007f9f in -[ELLayer run] (self=0x2246630, _cmd=0x96884a24) at /Users/matt/Projects/LucidMac/Elysium/src/datamodel/ELLayer.m:155 #9 0x000081ca in -[ELLayer runLayer] (self=0x2246630, _cmd=0x2b203) at /Users/matt/Projects/LucidMac/Elysium/src/datamodel/ELLayer.m:177 #10 0x90093bad in -[NSThread main] () #11 0x90093754 in __NSThread__main__ () #12 0x906666f5 in _pthread_start () #13 0x906665b2 in thread_start () Thread 5 (process 59831 thread 0x5403): #0 0x9063c68e in __semwait_signal () #1 0x9063c50f in nanosleep$UNIX2003 () #2 0x002ec71e in thread_timer (dummy=0x0) at thread_pthread.c:571 #3 0x906666f5 in _pthread_start () #4 0x906665b2 in thread_start () Thread 4 (process 59831 thread 0x4d03): #0 0x906354a6 in mach_msg_trap () #1 0x9063cc9c in mach_msg () #2 0x00098f0f in XServerMachPort::ReceiveMessage () #3 0x0008b477 in MIDIInPortThread::Run () #4 0x0008f07d in XThread::RunHelper () #5 0x000999ee in CAPThread::Entry () #6 0x906666f5 in _pthread_start () #7 0x906665b2 in thread_start () Thread 3 (process 59831 thread 0x3d03): #0 0x906354a6 in mach_msg_trap () #1 0x9063cc9c in mach_msg () #2 0x011a7c39 in __ape_agent () #3 0x906666f5 in _pthread_start () #4 0x906665b2 in thread_start () Thread 2 (process 59831 thread 0x2a03): #0 0x9063c68e in __semwait_signal () #1 0x90667986 in _pthread_cond_wait () #2 0x9066736d in pthread_cond_wait$UNIX2003 () #3 0x93f36bcf in auto_collection_thread () #4 0x906666f5 in _pthread_start () #5 0x906665b2 in thread_start () Thread 1 (process 59831 thread 0x10b): #0 0x92fce036 in CFEqual () #1 0x900b917f in -[NSKeyValueUnnestedProperty _keyPathIfAffectedByValueForKey:exactMatch:] () #2 0x900b9015 in -[NSKeyValueUnnestedProperty keyPathIfAffectedByValueForKey:exactMatch:] () #3 0x9008fe81 in -[NSObject(NSKeyValueObserverNotification) willChangeValueForKey:] () #4 0x9016c96d in _NSSetIntValueAndNotify () #5 0x903dc1dd in .LCFI1 () #6 0x903dc771 in ffi_call () #7 0x002fd3e0 in rb_objc_call2 (recv=36326752, klass=501521904, sel=0x1283530, imp=0x9016c8f0 <_NSSetIntValueAndNotify>, sig=0x202e630, bs_method=0x0, argc=1, argv=0x14e0058) at objc.m:1296 #8 0x002e64d3 in vm_call_method (th=0x203b6b0, cfp=0x155ff50, num=1, blockptr=0x0, flag=97, id=<value temporarily unavailable, due to optimizations>, recv=36326752, klass=501521904, mcache=0x202e620) at vm_insnhelper.c:662 #9 0x002d6759 in vm_eval (th=0x203b6b0, initial=<value temporarily unavailable, due to optimizations>) at insns.def:1067 #10 0x002e0f6b in vm_eval_body (th=0x203b6b0) at vm.c:1033 #11 0x002e14db in vm_invoke_proc (th=0x203b6b0, proc=0x22a3530, self=33777776, argc=1, argv=0xbfffe5b0, blockptr=0x0) at vm.c:449 #12 0x0020ab6f in proc_call (argc=1, argv=0x1, procval=1) at proc.c:506 #13 0x002cf035 in call_cfunc (func=0x20ab10 <proc_call>, recv=36301072, len=<value temporarily unavailable, due to optimizations>, argc=1, argv=0xbfffe5b0) at vm_insnhelper.c:289 #14 0x002e2539 in vm_call0 (th=0x203b6b0, klass=19322032, recv=36301072, id=128335, oid=4, argc=1, argv=0xbfffe5b0, body=0x2069c40, nosuper=0) at vm_eval.c:75 #15 0x002f4db8 in performRuby_safe (arg=1) at objc.m:3545 #16 0x002052a9 in rb_rescue2 (b_proc=0x2f4d60 <performRuby_safe>, data1=3221218812, r_proc=0x2f4dc0 <performRuby_rescue>, data2=0) at eval.c:662 #17 0x002f8f47 in -[NSObject(MacRubyAdditions) performRubySelector:withArguments:count:] (self=0x229e910, _cmd=0x30fd70, sel=0x2f1a0, argv=0xbfffe660, argc=1) at objc.m:3609 #18 0x002f4ea0 in -[NSObject(MacRubyAdditions) performRubySelector:withArguments:] (self=0x1, _cmd=0x30fd4c, sel=0x1, firstArg=0x22afa80) at objc.m:3649 #19 0x0001e42a in -[RubyBlock evalWithArg:arg:] (self=0x23b5ec0, _cmd=0x2ef72, _arg1_=0x22afa80, _arg2_=0x0) at /Users/matt/Projects/LucidMac/Elysium/src/scripting/RubyBlock.m:55 #20 0x0001d0bf in -[ELTool runWillRunScript:] (self=0x22afa80, _cmd=0x2effc, _playhead_=0x0) at /Users/matt/Projects/LucidMac/Elysium/src/tools/ELTool.m:104 #21 0x9009475c in __NSThreadPerformPerform () #22 0x92fcb615 in CFRunLoopRunSpecific () #23 0x92fcbcf8 in CFRunLoopRunInMode () #24 0x946a1480 in RunCurrentEventLoopInMode () #25 0x946a1299 in ReceiveNextEventCommon () #26 0x946a110d in BlockUntilNextEventMatchingListInMode () #27 0x927073ed in _DPSNextEvent () #28 0x92706ca0 in -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] () #29 0x926ffcdb in -[NSApplication run] () #30 0x926ccf14 in NSApplicationMain () #31 0x00002670 in main (argc=3, argv=0xbffff6ac) at /Users/matt/Projects/LucidMac/Elysium/main.m:13 (gdb) }}} then crashed with an EXC_BAD_ACCESS signal. This problem is blocking the next release of my app which utilizes a lot of Ruby scripting. -- Comment(by wsiegrist@apple.com): You should use [https://www.macruby.org/trac/wiki/WikiFormatting wiki formatting] to preserve pre-formatted whitespace. I've cleaned up the description for you. -- Ticket URL: <http://www.macruby.org/trac/ticket/164#comment:2> MacRuby <http://macruby.org/>
#164: MacRuby crashes Cocoa app with exception in CFEqual --------------------------------+------------------------------------------- Reporter: self@mattmower.com | Owner: lsansonetti@apple.com Type: defect | Status: new Priority: blocker | Milestone: MacRuby 0.4 Component: MacRuby | Resolution: Keywords: crash,cfequal | --------------------------------+------------------------------------------- Comment(by self@mattmower.com): So the problem is related to KVO. When I add KVO notifications to the object being manipulated by the Ruby code it explodes, remove the addObserver call and everything is fine. Unfortunately in my real-life case the KVO is essential for that property so I can't work around it. -- Ticket URL: <http://www.macruby.org/trac/ticket/164#comment:3> MacRuby <http://macruby.org/>
#164: MacRuby crashes Cocoa app with exception in CFEqual --------------------------------+------------------------------------------- Reporter: self@… | Owner: ben@… Type: defect | Status: new Priority: blocker | Milestone: MacRuby 0.4 Component: MacRuby | Keywords: crash,cfequal --------------------------------+------------------------------------------- Changes (by ben@…): * owner: lsansonetti@… => ben@… Comment: My bet is that this is caused by the automagic subclasses that KVO inserts. -- Ticket URL: <http://www.macruby.org/trac/ticket/164#comment:4> MacRuby <http://macruby.org/>
#164: MacRuby crashes Cocoa app with exception in CFEqual --------------------------------+------------------------------------------- Reporter: self@… | Owner: lsansonetti@… Type: defect | Status: new Priority: blocker | Milestone: MacRuby 0.4 Component: MacRuby | Keywords: crash,cfequal --------------------------------+------------------------------------------- Changes (by lsansonetti@…): * owner: ben@… => lsansonetti@… Comment: A temporary fix has been committed as r758. I will improve this fix later. Let me know if it fixes your problem. -- Ticket URL: <http://www.macruby.org/trac/ticket/164#comment:5> MacRuby <http://macruby.org/>
#164: MacRuby crashes Cocoa app with exception in CFEqual --------------------------------+------------------------------------------- Reporter: self@… | Owner: lsansonetti@… Type: defect | Status: closed Priority: blocker | Milestone: MacRuby 0.4 Component: MacRuby | Resolution: fixed Keywords: crash,cfequal | --------------------------------+------------------------------------------- Changes (by lsansonetti@…): * status: new => closed * resolution: => fixed Comment: Finally I don't think the fix should be improved. Currently we cache the original implementation so that at the very next call we will be direct. I considered the creation of a convenience method on the Ruby side that would simply call the objc original implementation, but it sounded too much overkill. Matt confirmed that r758 fixes the problem, so I'm closing this bug! -- Ticket URL: <http://www.macruby.org/trac/ticket/164#comment:6> MacRuby <http://macruby.org/>
participants (1)
-
MacRuby