Ticket #552 (closed defect: fixed)
NSOperationQueue segfaults when more than one operation is being added
| Reported by: | mattaimonetti@… | Owned by: | lsansonetti@… |
|---|---|---|---|
| Priority: | blocker | Milestone: | MacRuby 0.6 |
| Component: | MacRuby | Keywords: | |
| Cc: |
Description (last modified by martinlagardette@…) (diff)
I might be doing something wrong but I can't manage to create a NSOperationQueue with more than 1 operation.
framework 'Foundation'
class MyOperation < NSOperation
attr_reader :name
def initWithName(name)
init
@name = name
self
end
def main
puts "Hello #{name}"
end
end
operation_heidi = MyOperation.alloc.initWithName('Heidi')
operation_matt = MyOperation.alloc.initWithName('Matt')
queue = NSOperationQueue.alloc.init
queue.addOperation operation_heidi
queue.addOperation operation_matt
NSRunLoop.currentRunLoop.runUntilDate(NSDate.dateWithTimeIntervalSinceNow(2.0))
stack trace:
Exception Type: EXC_BAD_ACCESS (SIGSEGV) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000008 Crashed Thread: 4 Dispatch queue: com.apple.root.default-priority Application Specific Information: Stack dump: 0. Running pass 'Combine redundant instructions' on function '@10' objc[14789]: garbage collection is ON Thread 0: Dispatch queue: com.apple.main-thread 0 libSystem.B.dylib 0x00007fff864f3e3a mach_msg_trap + 10 1 libSystem.B.dylib 0x00007fff864f44ad mach_msg + 59 2 com.apple.CoreFoundation 0x00007fff805ce7a2 __CFRunLoopRun + 1698 3 com.apple.CoreFoundation 0x00007fff805cdc2f CFRunLoopRunSpecific + 575 4 com.apple.Foundation 0x00007fff84c94a24 -[NSRunLoop(NSRunLoop) runMode:beforeDate:] + 270 5 com.apple.Foundation 0x00007fff84ce048a -[NSRunLoop(NSRunLoop) runUntilDate:] + 78 6 ??? 0x000000010111093c 0 + 4312860988 7 ??? 0x0000000101110448 0 + 4312859720 8 ??? 0x00000002000db160 0 + 8590831968 9 ??? 0x00007fff709bd638 OBJC_CLASS_$_NSOperation + 0 10 ??? 0x00007fff709bd610 OBJC_METACLASS_$_NSOperation + 0 11 ??? 0x00007fff700b24a8 OBJC_CLASS_$_NSObject + 0 12 ??? 0x00007fff700b24a8 OBJC_CLASS_$_NSObject + 0 13 ??? 0x00007fff700b24a8 OBJC_CLASS_$_NSObject + 0 14 ??? 0x00007fff700b24a8 OBJC_CLASS_$_NSObject + 0 [...] 510 ??? 0x00007fff700b24a8 OBJC_CLASS_$_NSObject + 0 511 ??? 0x00007fff700b24a8 OBJC_CLASS_$_NSObject + 0 Thread 1: Dispatch queue: com.apple.libdispatch-manager 0 libSystem.B.dylib 0x00007fff8650cbba kevent + 10 1 libSystem.B.dylib 0x00007fff8650ea85 _dispatch_mgr_invoke + 154 2 libSystem.B.dylib 0x00007fff8650e75c _dispatch_queue_invoke + 185 3 libSystem.B.dylib 0x00007fff8650e286 _dispatch_worker_thread2 + 244 4 libSystem.B.dylib 0x00007fff8650dbb8 _pthread_wqthread + 353 5 libSystem.B.dylib 0x00007fff8650da55 start_wqthread + 13 Thread 2: Dispatch queue: com.apple.root.default-priority 0 libSystem.B.dylib 0x00007fff86543bb2 write$NOCANCEL + 10 1 libSystem.B.dylib 0x00007fff86543ba4 __swrite + 16 2 libSystem.B.dylib 0x00007fff86543b2d _swrite + 97 3 libSystem.B.dylib 0x00007fff86543a72 __sflush + 70 4 libSystem.B.dylib 0x00007fff8650075d __vfprintf + 369 5 libSystem.B.dylib 0x00007fff865437db vfprintf_l + 111 6 libSystem.B.dylib 0x00007fff8654375e fprintf + 196 7 libSystem.B.dylib 0x00007fff865cfe2f __assert_rtn + 168 8 libmacruby.dylib 0x000000010074cab8 (anonymous namespace)::InstCombiner::DoOneIteration(llvm::Function&, unsigned int) + 4488 9 libmacruby.dylib 0x000000010074ccc3 (anonymous namespace)::InstCombiner::runOnFunction(llvm::Function&) + 163 10 libmacruby.dylib 0x00000001008d9c3a llvm::FPPassManager::runOnFunction(llvm::Function&) + 458 11 libmacruby.dylib 0x00000001008da254 llvm::FunctionPassManagerImpl::run(llvm::Function&) + 164 12 libmacruby.dylib 0x00000001008da592 llvm::FunctionPassManager::run(llvm::Function&) + 82 13 libmacruby.dylib 0x0000000100179ab8 RoxorCore::compile(llvm::Function*) + 136 (vm.cpp:486) 14 libmacruby.dylib 0x000000010017ddd3 RoxorCore::resolve_method(objc_class*, objc_selector*, llvm::Function*, rb_vm_arity_t const&, int, objc_object* (*)(objc_object*, objc_selector*, ...), objc_method*) + 627 (vm.cpp:1843) 15 libmacruby.dylib 0x000000010017df8b RoxorCore::resolve_methods(std::map<objc_class*, rb_vm_method_source_t*, std::less<objc_class*>, std::allocator<std::pair<objc_class* const, rb_vm_method_source_t*> > >*, objc_class*, objc_selector*) + 203 (stl_tree.h:192) 16 libmacruby.dylib 0x0000000100184297 rb_vm_resolve_method + 391 (vm.cpp:1931) 17 libmacruby.dylib 0x00000001001842dc resolveInstanceMethod_imp(void*, objc_selector*, objc_selector*) + 12 (vm.cpp:4681) 18 libobjc.A.dylib 0x00007fff88212937 _class_resolveMethod + 324 19 libmacruby.dylib 0x000000010016c88f rb_vm_dispatch + 815 (dispatcher.cpp:588) 20 ??? 0x0000000101110651 0 + 4312860241 21 com.apple.Foundation 0x00007fff84c82d23 ____startOperations_block_invoke_2 + 99 22 libSystem.B.dylib 0x00007fff8652fce8 _dispatch_call_block_and_release + 15 23 libSystem.B.dylib 0x00007fff8650e279 _dispatch_worker_thread2 + 231 24 libSystem.B.dylib 0x00007fff8650dbb8 _pthread_wqthread + 353 25 libSystem.B.dylib 0x00007fff8650da55 start_wqthread + 13 Thread 3: 0 libSystem.B.dylib 0x00007fff8650d9da __workq_kernreturn + 10 1 libSystem.B.dylib 0x00007fff8650ddec _pthread_wqthread + 917 2 libSystem.B.dylib 0x00007fff8650da55 start_wqthread + 13 Thread 4 Crashed: Dispatch queue: com.apple.root.default-priority 0 libmacruby.dylib 0x000000010070af9e AddReachableCodeToWorklist(llvm::BasicBlock*, llvm::SmallPtrSet<llvm::BasicBlock*, 64u>&, (anonymous namespace)::InstCombiner&, llvm::TargetData const*) + 846 1 libmacruby.dylib 0x000000010074ba53 (anonymous namespace)::InstCombiner::DoOneIteration(llvm::Function&, unsigned int) + 291 2 libmacruby.dylib 0x000000010074ccc3 (anonymous namespace)::InstCombiner::runOnFunction(llvm::Function&) + 163 3 libmacruby.dylib 0x00000001008d9c3a llvm::FPPassManager::runOnFunction(llvm::Function&) + 458 4 libmacruby.dylib 0x00000001008da254 llvm::FunctionPassManagerImpl::run(llvm::Function&) + 164 5 libmacruby.dylib 0x00000001008da592 llvm::FunctionPassManager::run(llvm::Function&) + 82 6 libmacruby.dylib 0x0000000100179ab8 RoxorCore::compile(llvm::Function*) + 136 (vm.cpp:486) 7 libmacruby.dylib 0x000000010017ddd3 RoxorCore::resolve_method(objc_class*, objc_selector*, llvm::Function*, rb_vm_arity_t const&, int, objc_object* (*)(objc_object*, objc_selector*, ...), objc_method*) + 627 (vm.cpp:1843) 8 libmacruby.dylib 0x000000010017df8b RoxorCore::resolve_methods(std::map<objc_class*, rb_vm_method_source_t*, std::less<objc_class*>, std::allocator<std::pair<objc_class* const, rb_vm_method_source_t*> > >*, objc_class*, objc_selector*) + 203 (stl_tree.h:192) 9 libmacruby.dylib 0x0000000100184297 rb_vm_resolve_method + 391 (vm.cpp:1931) 10 libmacruby.dylib 0x00000001001842dc resolveInstanceMethod_imp(void*, objc_selector*, objc_selector*) + 12 (vm.cpp:4681) 11 libobjc.A.dylib 0x00007fff88212937 _class_resolveMethod + 324 12 libmacruby.dylib 0x000000010016c88f rb_vm_dispatch + 815 (dispatcher.cpp:588) 13 ??? 0x0000000101110651 0 + 4312860241 14 com.apple.Foundation 0x00007fff84c82d23 ____startOperations_block_invoke_2 + 99 15 libSystem.B.dylib 0x00007fff8652fce8 _dispatch_call_block_and_release + 15 16 libSystem.B.dylib 0x00007fff8650e279 _dispatch_worker_thread2 + 231 17 libSystem.B.dylib 0x00007fff8650dbb8 _pthread_wqthread + 353 18 libSystem.B.dylib 0x00007fff8650da55 start_wqthread + 13 Thread 4 crashed with X86 Thread State (64-bit): rax: 0x0000000000000000 rbx: 0x0000000102076e30 rcx: 0x0000000000000000 rdx: 0x00000001014603d8 rdi: 0x000000010145e1e0 rsi: 0x0000000000000001 rbp: 0x000000010377fbf0 rsp: 0x000000010377f330 r8: 0x00000001014603d8 r9: 0x0000000100f28200 r10: 0x0000000100f28200 r11: 0x000000010377fbb0 r12: 0x00000001014603d8 r13: 0x0000000000000000 r14: 0x000000010145e1e0 r15: 0x000000010145e1e0 rip: 0x000000010070af9e rfl: 0x0000000000010202 cr2: 0x0000000000000008
Change History
Note: See
TracTickets for help on using
tickets.

