0

我正在使用最新的 Xcode(4.6.3),我的 iPhone 游戏应用程序有一个大问题。游戏使用 Cocos2D for iPhone (2.1) 制作。当我运行游戏时,它有时会因 LLVM::something 之类的错误而崩溃,这(我相信)具有 CCSprite 背景。现在我有一个 SIGABRT,向我的控制台输出一行: UNREACHABLE 已执行!

(lldb) bt
* thread #6: tid = 0x2503, 0x99f92a6a libsystem_kernel.dylib`__pthread_kill + 10, stop reason = signal SIGABRT
    frame #0: 0x99f92a6a libsystem_kernel.dylib`__pthread_kill + 10
    frame #1: 0x93e42b2f libsystem_c.dylib`pthread_kill + 101
    frame #2: 0x03acc5eb libLLVMContainer.dylib`abort + 27
    frame #3: 0x03abbcc5 libLLVMContainer.dylib`llvm::llvm_unreachable_internal(char const*, char const*, unsigned int) + 485
    frame #4: 0x03a49922 libLLVMContainer.dylib`llvm::ValueHandleBase::ValueIsDeleted(llvm::Value*) + 578
    frame #5: 0x03a496a7 libLLVMContainer.dylib`llvm::Value::~Value() + 39
    frame #6: 0x03a24cb1 libLLVMContainer.dylib`llvm::BinaryOperator::~BinaryOperator() + 17
    frame #7: 0x037e2c4e libLLVMContainer.dylib`(anonymous namespace)::LSRInstance::LSRInstance(llvm::TargetLowering const*, llvm::Loop*, llvm::Pass*) + 28830
    frame #8: 0x037db8f7 libLLVMContainer.dylib`(anonymous namespace)::LoopStrengthReduce::runOnLoop(llvm::Loop*, llvm::LPPassManager&) + 39
    frame #9: 0x03913148 libLLVMContainer.dylib`llvm::LPPassManager::runOnFunction(llvm::Function&) + 936
    frame #10: 0x03a3767c libLLVMContainer.dylib`llvm::FPPassManager::runOnFunction(llvm::Function&) + 284
    frame #11: 0x03a37036 libLLVMContainer.dylib`llvm::FunctionPassManagerImpl::run(llvm::Function&) + 198
    frame #12: 0x03a36f3a libLLVMContainer.dylib`llvm::FunctionPassManager::run(llvm::Function&) + 122
    frame #13: 0x0341d982 libLLVMContainer.dylib`llvm::JIT::getPointerToFunction(llvm::Function*) + 338
    frame #14: 0x03392589 libCoreVMClient.dylib`cvmsCompBuildMonolithicFunction + 1614
    frame #15: 0x033952c0 libCoreVMClient.dylib`cvmsServerBuildMonolithicFunction + 235
    frame #16: 0x03393b22 libCoreVMClient.dylib`CVMSBuildMonolithicFunction + 99
    frame #17: 0x0338aeea libCVMSPluginSupport.dylib`cvm_deferred_build_monolithic(void*) + 148
    frame #18: 0x0338a5e0 libCVMSPluginSupport.dylib`cvmDoWork + 57
    frame #19: 0x93e415b7 libsystem_c.dylib`_pthread_start + 344

这个问题经常发生,大约 3 次运行 10 次。也许你们知道这个问题,是什么原因造成的?我在一些线程上从堆栈中提供图像,以更全面地了解这个问题。 线程 6

主线程

还有一个经常发生的错误:EXC_BAD_ACCESS。它具有相同的背景([CCSprite draw])。回溯:

    (lldb) bt 
* thread #6: tid = 0x2503, 0x03a40f6b libLLVMContainer.dylib`llvm::PointerType::get(llvm::Type const*, unsigned int) + 27, stop reason = EXC_BAD_ACCESS (code=2, address=0xc)
    frame #0: 0x03a40f6b libLLVMContainer.dylib`llvm::PointerType::get(llvm::Type const*, unsigned int) + 27
    frame #1: 0x033bdab4 libLLVMContainer.dylib`llvm::GetElementPtrInst::GetElementPtrInst<llvm::Value**>(llvm::Value*, llvm::Value**, llvm::Value**, unsigned int, llvm::Twine const&, llvm::Instruction*) + 132
    frame #2: 0x0341106c libLLVMContainer.dylib`llvm::BitcodeReader::ParseFunctionBody(llvm::Function*) + 3292
    frame #3: 0x034153ad libLLVMContainer.dylib`llvm::BitcodeReader::Materialize(llvm::GlobalValue*, std::string*) + 381
    frame #4: 0x03a3060b libLLVMContainer.dylib`llvm::Module::Materialize(llvm::GlobalValue*, std::string*) + 43
    frame #5: 0x03a0bbaf libLLVMContainer.dylib`llvm::GlobalValue::Materialize(std::string*) + 31
    frame #6: 0x0eef0f47 libGLVMPlugin.dylib`cvmLookupModularFunction + 72
    frame #7: 0x0ef2e288 libGLVMPlugin.dylib`glvmBuildFPTransformFunction + 424
    frame #8: 0x0ef416da libGLVMPlugin.dylib`cvmsModularBuilder + 166
    frame #9: 0x0339278d libCoreVMClient.dylib`cvmsCompBuildModularFunction + 179
    frame #10: 0x033956bf libCoreVMClient.dylib`cvmsServerBuildModularFunction + 245
    frame #11: 0x03393bcf libCoreVMClient.dylib`CVMSBuildModularFunction + 112
    frame #12: 0x0338a78f libCVMSPluginSupport.dylib`cvm_deferred_build_modular(void*) + 247
    frame #13: 0x0338a5e0 libCVMSPluginSupport.dylib`cvmDoWork + 57
    frame #14: 0x93e415b7 libsystem_c.dylib`_pthread_start + 344

LLVM 运行时代码中的另一个 EXC_BAD_ACCESS: SelectionDAG llvm 指令

当我挂起线程 6 时,一切都很好,没有崩溃。但是 FPS 速率下降了一半。我不知道问题的根源是什么。我检查了我的内存泄漏并修复了它们,即使它们很小(例如,在 5 分钟的应用程序运行中只有几个字节)。我已将我的源代码缩减为一些基础知识,但这并没有帮助。崩溃仍然存在。有人有想法吗?

4

0 回答 0