“API MISUSE:对象的复活”

时间:2016-05-16 17:54:22

标签: objective-c macos

我的应用程序对我和几乎所有用户都正常工作,但我的两个用户(都是El Capitan用户)报告了类似但奇怪的崩溃。

这是例外:

Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY

Application Specific Information:
API MISUSE: Resurrection of an object

这些都是相应的崩溃线程。来自第一个用户:

Thread 11 Crashed:: Dispatch queue: com.apple.root.user-initiated-qos
0 libdispatch.dylib 0x00007fff93e901b3 _os_object_retain + 45
1 com.apple.audio.CoreAudio 0x00007fff8c497063 void std::__1::vector >::__push_back_slow_path(CADispatchQueue::EventSource&&) + 243
2 com.apple.audio.CoreAudio 0x00007fff8c496ed6 CADispatchQueue::InstallMachPortDeathNotification(unsigned int, void () block_pointer) + 174
3 com.apple.audio.CoreAudio 0x00007fff8c492202 HALC_ProxyObject::HALC_ProxyObject(unsigned int, unsigned int, unsigned int, unsigned int) + 154
4 com.apple.audio.CoreAudio 0x00007fff8c49e558 HALC_ProxyObjectMap::_CreateObject(unsigned int, unsigned int, unsigned int, unsigned int) + 188
5 com.apple.audio.CoreAudio 0x00007fff8c491be8 HALC_ProxyObjectMap::_CopyObjectByObjectID(unsigned int) + 248
6 com.apple.audio.CoreAudio 0x00007fff8c491a47 HALC_ProxyObjectMap::CopyObjectByObjectID(unsigned int) + 67
7 com.apple.audio.CoreAudio 0x00007fff8c4a4998 HALC_ShellDevice::RebuildControlList(bool) + 478
8 com.apple.audio.CoreAudio 0x00007fff8c4b29b9 HALC_ShellDevice::_ProxyObject_GroupPropertiesChanged(unsigned int, unsigned int, unsigned int const*, unsigned int, unsigned int const*, unsigned int, AudioObjectPropertyAddress const*) + 309
9 com.apple.audio.CoreAudio 0x00007fff8c4b287e ___ZN16HALC_ShellDevice34ProxyObject_GroupPropertiesChangedEjjPKjjS1_jPK26AudioObjectPropertyAddress_block_invoke + 60
10 com.apple.audio.CoreAudio 0x00007fff8c4a0913 HALB_CommandGate::ExecuteCommand(void () block_pointer) const + 33
11 com.apple.audio.CoreAudio 0x00007fff8c4b283c HALC_ShellDevice::ProxyObject_GroupPropertiesChanged(unsigned int, unsigned int, unsigned int const*, unsigned int, unsigned int const*, unsigned int, AudioObjectPropertyAddress const*) + 102
12 com.apple.audio.CoreAudio 0x00007fff8c4b2775 ___ZN23HALC_ProxyNotifications27_SendGroupPropertiesChangedEjjPKjjS1_jPK26AudioObjectPropertyAddressb_block_invoke + 77
13 libdispatch.dylib 0x00007fff93e9b93d _dispatch_call_block_and_release + 12
14 libdispatch.dylib 0x00007fff93e9040b _dispatch_client_callout + 8
15 libdispatch.dylib 0x00007fff93e9429b _dispatch_root_queue_drain + 1890
16 libdispatch.dylib 0x00007fff93e93b00 _dispatch_worker_thread3 + 91
17 libsystem_pthread.dylib 0x00007fff8cdc44de _pthread_wqthread + 1129
18 libsystem_pthread.dylib 0x00007fff8cdc2341 start_wqthread + 13

来自第二位用户:

Thread 14 Crashed:: Dispatch queue: com.apple.root.user-initiated-qos
0 libdispatch.dylib 0x00007fff8f9be0e7 _os_object_retain + 45
1 com.apple.audio.CoreAudio 0x00007fff90d57063 void std::__1::vector >::__push_back_slow_path(CADispatchQueue::EventSource&&) + 243
2 com.apple.audio.CoreAudio 0x00007fff90d56ed6 CADispatchQueue::InstallMachPortDeathNotification(unsigned int, void () block_pointer) + 174
3 com.apple.audio.CoreAudio 0x00007fff90d52202 HALC_ProxyObject::HALC_ProxyObject(unsigned int, unsigned int, unsigned int, unsigned int) + 154
4 com.apple.audio.CoreAudio 0x00007fff90d5e558 HALC_ProxyObjectMap::_CreateObject(unsigned int, unsigned int, unsigned int, unsigned int) + 188
5 com.apple.audio.CoreAudio 0x00007fff90d51be8 HALC_ProxyObjectMap::_CopyObjectByObjectID(unsigned int) + 248
6 com.apple.audio.CoreAudio 0x00007fff90d51a47 HALC_ProxyObjectMap::CopyObjectByObjectID(unsigned int) + 67
7 com.apple.audio.CoreAudio 0x00007fff90d64998 HALC_ShellDevice::RebuildControlList(bool) + 478
8 com.apple.audio.CoreAudio 0x00007fff90d729b9 HALC_ShellDevice::_ProxyObject_GroupPropertiesChanged(unsigned int, unsigned int, unsigned int const*, unsigned int, unsigned int const*, unsigned int, AudioObjectPropertyAddress const*) + 309
9 com.apple.audio.CoreAudio 0x00007fff90d7287e ___ZN16HALC_ShellDevice34ProxyObject_GroupPropertiesChangedEjjPKjjS1_jPK26AudioObjectPropertyAddress_block_invoke + 60
10 com.apple.audio.CoreAudio 0x00007fff90d60913 HALB_CommandGate::ExecuteCommand(void () block_pointer) const + 33
11 com.apple.audio.CoreAudio 0x00007fff90d7283c HALC_ShellDevice::ProxyObject_GroupPropertiesChanged(unsigned int, unsigned int, unsigned int const*, unsigned int, unsigned int const*, unsigned int, AudioObjectPropertyAddress const*) + 102
12 com.apple.audio.CoreAudio 0x00007fff90d72775 ___ZN23HALC_ProxyNotifications27_SendGroupPropertiesChangedEjjPKjjS1_jPK26AudioObjectPropertyAddressb_block_invoke + 77
13 libdispatch.dylib 0x00007fff8f9c9871 _dispatch_call_block_and_release + 12
14 libdispatch.dylib 0x00007fff8f9be33f _dispatch_client_callout + 8
15 libdispatch.dylib 0x00007fff8f9c21cf _dispatch_root_queue_drain + 1890
16 libdispatch.dylib 0x00007fff8f9c1a34 _dispatch_worker_thread3 + 91
17 libsystem_pthread.dylib 0x00007fff9766568f _pthread_wqthread + 1129
18 libsystem_pthread.dylib 0x00007fff97663365 start_wqthread + 13

基本上他们遇到了同样的崩溃,而且它与CoreAudio有关,但我甚至在我的应用程序中都没有使用CoreAudio。我的应用程序中使用声音的唯一地方是我使用NSSound:

[[NSSound soundNamed:@"Pop"] play];

当我将声音归因于NSUserNotification时:

notification.soundName = NSUserNotificationDefaultSoundName;

当我将麦克风输入添加到屏幕录制功能时(mSession是AVCaptureSession):

AVCaptureDevice *audioDevice = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio];
AVCaptureDeviceInput * audioInput = [AVCaptureDeviceInput deviceInputWithDevice:audioDevice error:nil];
if ([mSession canAddInput:audioInput]) [mSession addInput:audioInput];

但是,这些函数似乎都没有在崩溃报告的任何其他线程中调用过。

我在Chromium上发现了一个非常类似的崩溃报告: https://bugs.chromium.org/p/chromium/issues/detail?id=549667

根据最后一条消息,可能与应用程序运行时拔出的音频设备有关。有人有那个bug吗?我该如何解决?提前谢谢。

我认为可能会有所帮助的一些信息:

  • 我的OS X目标版本是10.8

  • 它正在使用10.11 SDK

  • 正在使用ARC

1 个答案:

答案 0 :(得分:0)

这似乎是操作系统中的一个错误。 在抽出耳机时,Xcode或Chrome或其他一些应用程序可能会崩溃为“HALC_ProxyObjectMap API MISUSE:对象的复活”