GC在未注册的线程上操作

时间:2011-08-10 11:43:03

标签: objective-c cocoa gdb malloc

我在我的应用程序中的OS X Lion 10.7上收到以下错误。我已经确定了导致错误的原因,但是想知道这是否是10.7中的错误,或者是否发生了一些我失踪的错误。

malloc: *** auto malloc[3677]: error: GC operation on unregistered thread. Thread registered implicitly. Break on auto_zone_thread_registration_error() to debug.

在断点上运行bt时来自GDB的堆栈跟踪:

#0  0x00007fff90742b44 in auto_zone_thread_registration_error ()
#1  0x00007fff9073a9a4 in auto_zone_allocate_object ()
#2  0x00007fff8f36335e in _Block_copy_internal ()
#3  0x00007fff8a9d7e9d in HALC_ProxyIOContext::StopIOProc ()
#4  0x00007fff8a9d7dc6 in __HAL_HardwarePlugIn_DeviceStop_block_invoke_30 ()
#5  0x00007fff8a9b8521 in HALB_Executor::DoIt ()
#6  0x00007fff8a9b84ce in HALB_Executor::Run ()
#7  0x00007fff8a9d7ce9 in HAL_HardwarePlugIn_DeviceStop ()
#8  0x00007fff8a9d7c6d in HALPlugIn::DeviceStopIOProc ()
#9  0x00007fff8a9d7bb1 in AudioDeviceStop ()
#10 0x00000001044b381c in AUHAL::StopHardware ()
#11 0x00000001044b397e in AUHAL::AUIOProc ()
#12 0x00007fff8a9d5362 in HALC_ProxyIOContext::IOWorkLoop ()
#13 0x00007fff8a9d4ac9 in HALC_ProxyIOContext::IOThreadEntry ()
#14 0x00007fff8a9d4984 in HALB_IOThread::Entry ()
#15 0x00007fff8fb2f8bf in _pthread_start ()
#16 0x00007fff8fb32b75 in thread_start ()`

导致此垃圾收集线程错误的代码是:

NSSound *completedSound = [NSSound soundNamed:@"Glass"];
[completedSound play] //this line is causing the error;

该行所做的就是播放用户选择的系统中注册的系统声音之一。对我而言,这似乎是一个错误,我已经提交了一个错误报告以防万一。

还有其他人经历过这个吗?

3 个答案:

答案 0 :(得分:0)

是的,的确,我有。堆栈跟踪看起来非常相似。这似乎发生在声音文件停止播放时,我很确定它不会在10.6下发生。但它似乎并没有影响我的应用程序的实际运行。

还有其他一些此类错误(主要是WebKit)在我查找原因时出现在谷歌上,并且他们都暗示这不是真正的任何问题。

错误报告编号是什么?

答案 1 :(得分:0)

检查是否安装了任何第三方音频插件,然后逐个删除它们。崩溃报告将显示所有已加载的包。

答案 2 :(得分:0)

我在语音合成器停止时看到相同的消息。

相关问题