[MacRuby-devel] [MacRuby] #164: MacRuby crashes Cocoa app with exception in CFEqual
MacRuby
ruby-noreply at macosforge.org
Tue Nov 18 03:59:30 PST 2008
#164: MacRuby crashes Cocoa app with exception in CFEqual
--------------------------------+-------------------------------------------
Reporter: self at mattmower.com | Owner: lsansonetti at 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/>
More information about the MacRuby-devel
mailing list