[MacRuby-devel] [MacRuby] #551: NSThread.alloc.initWithTarget segfaulting

MacRuby ruby-noreply at macosforge.org
Mon Jan 11 19:42:06 PST 2010


#551: NSThread.alloc.initWithTarget segfaulting
-------------------------------------+--------------------------------------
 Reporter:  mattaimonetti@…          |       Owner:  lsansonetti@…        
     Type:  defect                   |      Status:  new                  
 Priority:  blocker                  |   Milestone:  MacRuby 0.5          
Component:  MacRuby                  |    Keywords:                       
-------------------------------------+--------------------------------------
 I can't seem to get the same stack trace twice, here is the code:

 {{{
 framework 'Foundation'

 class ExpensiveCalculation
   def start(to_process)
     loop{ print '*' }
   end
 end

 calculation = ExpensiveCalculation.new
 thread = NSThread.alloc.initWithTarget(calculation, selector:'start:',
 object:'dummy_obj')
 thread.start

 1.upto(10_000) do
   print '.'
 end

 thread.dummy
 exit
 }}}

 Disabling the GC makes the crash even more obvious.

 example of a stack trace:

 {{{
 Stack dump:
 0.      Running pass 'Global Value Numbering' on function '@__ruby_scope3'

 objc[14056]: garbage collection is ON

 Thread 0:  Dispatch queue: com.apple.main-thread
 0   libmacruby.dylib                    0x0000000100506bc3
 llvm::RegsForValue::getCopyToRegs(llvm::SDValue, llvm::SelectionDAG&,
 llvm::DebugLoc, llvm::SDValue&, llvm::SDValue*) const + 355
 1   libmacruby.dylib                    0x000000010050dda9
 llvm::SelectionDAGLowering::CopyValueToVirtualRegister(llvm::Value*,
 unsigned int) + 1001
 2   libmacruby.dylib                    0x00000001005103d9
 llvm::SelectionDAGISel::LowerArguments(llvm::BasicBlock*) + 3625
 3   libmacruby.dylib                    0x0000000100548a53
 llvm::SelectionDAGISel::SelectAllBasicBlocks(llvm::Function&,
 llvm::MachineFunction&, llvm::MachineModuleInfo*, llvm::DwarfWriter*,
 llvm::TargetInstrInfo const&) + 3123
 4   libmacruby.dylib                    0x000000010054943d
 llvm::SelectionDAGISel::runOnMachineFunction(llvm::MachineFunction&) +
 1581
 5   libmacruby.dylib                    0x000000010062240b
 llvm::MachineFunctionPass::runOnFunction(llvm::Function&) + 91
 6   libmacruby.dylib                    0x00000001008d9c3a
 llvm::FPPassManager::runOnFunction(llvm::Function&) + 458
 7   libmacruby.dylib                    0x00000001008da254
 llvm::FunctionPassManagerImpl::run(llvm::Function&) + 164
 8   libmacruby.dylib                    0x00000001008da592
 llvm::FunctionPassManager::run(llvm::Function&) + 82
 9   libmacruby.dylib                    0x00000001005a774a
 llvm::JIT::runJITOnFunctionUnlocked(llvm::Function*, llvm::MutexGuard
 const&) + 42
 10  libmacruby.dylib                    0x00000001005a8bef
 llvm::JIT::getPointerToFunction(llvm::Function*) + 943
 11  libmacruby.dylib                    0x0000000100179ac5
 RoxorCore::compile(llvm::Function*) + 149 (vm.cpp:486)
 12  libmacruby.dylib                    0x0000000100162d0e
 rb_vm_prepare_block + 1198 (dispatcher.cpp:1725)
 13  ???                                 0x00000001011102bf 0 + 4312859327
 14  libmacruby.dylib                    0x0000000100040f49 ruby_run_node +
 73 (eval.c:199)
 15  macruby                             0x0000000100000dd8 main + 152
 (main.cpp:42)
 16  macruby                             0x0000000100000d34 start + 52

 Thread 1:
 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 2:  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 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:
 0   libmacruby.dylib                    0x000000010070147d (anonymous
 namespace)::GVN::iterateOnFunction(llvm::Function&) + 3261
 1   libmacruby.dylib                    0x0000000100701aac (anonymous
 namespace)::GVN::runOnFunction(llvm::Function&) + 300
 2   libmacruby.dylib                    0x00000001008d9c3a
 llvm::FPPassManager::runOnFunction(llvm::Function&) + 458
 3   libmacruby.dylib                    0x00000001008da254
 llvm::FunctionPassManagerImpl::run(llvm::Function&) + 164
 4   libmacruby.dylib                    0x00000001008da592
 llvm::FunctionPassManager::run(llvm::Function&) + 82
 5   libmacruby.dylib                    0x0000000100179ab8
 RoxorCore::compile(llvm::Function*) + 136 (vm.cpp:486)
 6   libmacruby.dylib                    0x0000000100162d0e
 rb_vm_prepare_block + 1198 (dispatcher.cpp:1725)
 7   ???                                 0x00000001011107eb 0 + 4312860651
 8   libSystem.B.dylib                   0x00007fff8652cf8e _pthread_start
 + 331
 9   libSystem.B.dylib                   0x00007fff8652ce41 thread_start +
 13
 }}}

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/551>
MacRuby <http://macruby.org/>



More information about the MacRuby-devel mailing list