По вопросу о бэкэнде MythTV по адресу:
http://svn.mythtv.org/trac/ticket/7582
при запуске бэкэнда MythTV на MacOS X 10.6.2 происходит сбой:
BUG IN CLIENT OF LIBDISPATCH: Do not close random Unix descriptors
Это сообщение пришло от Grand Central Dispatch.
Exception Type: EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes: 0x0000000000000001, 0x0000000000000000
Crashed Thread: 1 Dispatch queue: com.apple.libdispatch-manager
Application Specific Information:
BUG IN CLIENT OF LIBDISPATCH: Do not close random Unix descriptors
Thread 1 Crashed: Dispatch queue: com.apple.libdispatch-manager
0 libSystem.B.dylib 0x9481ea51 _dispatch_mgr_invoke + 804
1 libSystem.B.dylib 0x9481dcc3 _dispatch_queue_invoke + 163
2 libSystem.B.dylib 0x9481da68 _dispatch_worker_thread2 + 234
3 libSystem.B.dylib 0x9481d4f1 _pthread_wqthread + 390
4 libSystem.B.dylib 0x9481d336 start_wqthread + 30
Поскольку код в MythTV для этого находится довольно рано в main (), можно только представить, что связывание библиотек Grand Central Dispatch автоматически вызывает запуск некоторого фонового потока, который отслеживает некоторый специальный дескриптор файла. Проблема в том, что бэкэнд MythTV закрывает все файловые дескрипторы, начиная с 3 и выше, и, вероятно, закрывает и этот специальный файловый дескриптор.
Вопрос в том, есть ли способ настроить MacOS X, чтобы не использовать Grand Central Dispatch и использовать то, что когда-либо использовалось в MacOS X 10.5, чтобы попытаться избежать этой проблемы, пока люди MythTV не будут беспокоиться, глядя на это и вносящие изменения в код .
Отдельно, может ли кто-нибудь объяснить, использует ли Grand Central Dispatch какой-то специальный файловый дескриптор, как я считаю.
Ошибка находится в MythTV. Разбор аргументов командной строки, по-видимому, вызывает запуск GCD в качестве побочного эффекта. Решение простое. Переместите цикл «for ()», закрывающий все дескрипторы, в самый верх main ().