Сбой NSSound при попытке загрузить системный звук - PullRequest
1 голос
/ 27 сентября 2011

Иногда мое приложение Какао падает при попытке загрузить системный звук.Я не смог воспроизвести это сам, но несколько пользователей прислали мне отчеты о сбоях.

Трассировка стека всегда одинакова (см. Ниже).Приложение открывает модальное диалоговое окно, пользователь нажимает кнопку ОК, звук загружается и вылетает:

[NSSound soundNamed:@"Hero"];

В Интернете есть несколько упоминаний об этой проблеме [1], но нет разрешений.Обратите внимание, что я загружаю звук из основного потока и не пытаюсь воспроизвести его.Это сразу падает.Кроме того, сам звуковой файл не поврежден (у меня было письмо от одного пользователя, и он совпадает с тем, который я установил).

Отрывок журнала сбоя:

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGBUS)
Exception Codes: KERN_PROTECTION_FAILURE at 0x0000000009a0d204

VM Regions Near 0x9a0d204:
    shared memory          0000000009310000-0000000009511000 [ 2052K] r--/r-- SM=SHM  
--> MALLOC_TINY            0000000009a00000-0000000009c00000 [ 2048K] rw-/rwx SM=COW  
    MALLOC_LARGE           0000000009c00000-000000000bc9c000 [ 32.6M] rw-/rwx SM=PRV  

Application Specific Information:
objc[8625]: garbage collection is OFF
Performing @selector(ok:) from sender NSButton 0x236510

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   ???                             0x09a0d204 0 + 161534468
1   com.apple.audio.units.Components    0x7000ed9d AUHAL::AUHAL(ComponentInstanceRecord*, unsigned long, bool) + 775
2   com.apple.audio.units.Components    0x7002feff ComponentEntryPoint<DefaultOutputAU>::Dispatch(ComponentParameters*, DefaultOutputAU*) + 144
3   com.apple.CoreServices.CarbonCore   0x98487949 CallComponent + 223
4   com.apple.CoreServices.CarbonCore   0x98487992 CallComponentDispatch + 29
5   com.apple.CoreServices.CarbonCore   0x984f3b6c CallComponentOpen + 43
6   com.apple.CoreServices.CarbonCore   0x98486608 OpenAComponent + 426
7   com.apple.CoreServices.CarbonCore   0x98486688 OpenComponent + 24
8   com.apple.AppKit                0x9b810cd3 _initializeCA + 1115
9   com.apple.AppKit                0x9b811c23 -[NSSound _postInitialization] + 349
10  com.apple.AppKit                0x9b810609 -[NSSound initWithContentsOfURL:byReference:] + 263
11  com.apple.AppKit                0x9b812767 +[NSSound _searchForSoundNamed:] + 1044
12  com.apple.AppKit                0x9b8122de +[NSSound soundNamed:] + 227

1: http://lists.apple.com/archives/Cocoa-dev/2007/Oct/msg01159.html

1 Ответ

0 голосов
/ 28 сентября 2011

Решения (или, скорее, обходные пути) упомянутой вами проблемы были применены в Transmission changeset 3540 : не разрешать пользовательские звуки и позже в changeset 5577 : поддержка пользовательских звуков пользователя на Leopard .

К сожалению, следы не совпадают, и ваш журнал сбоев получен от Snow Leopard или Lion, поэтому эти решения, вероятно, не подходят для вас. Я бы предложил вам подать сообщение об ошибке в Apple.

...