[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