O bug está no MythTV. A análise do argumento da linha de comando aparentemente está causando o GCD ser iniciado como um efeito colateral. A solução é simples. Mova o loop "for ()" que fecha todos os descritores para o topo de main ().
Conforme a edição do back-end da MythTV em:
quando executando o MythTV backend no MacOS X 10.6.2, ele trava com:
BUG IN CLIENT OF LIBDISPATCH: Do not close random Unix descriptors
Esta mensagem parece vir do 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
Como o código no MythTV para isso é bem cedo no main (), só podemos imaginar que a vinculação de bibliotecas do Grand Central Dispatch esteja automaticamente fazendo com que algum segmento em segundo plano seja executado, monitorando algum descritor de arquivo especial. O problema é que o backend MythTV está fechando todos os descritores de arquivo de 3 para cima e presumivelmente está fechando este descritor de arquivo especial também.
A questão é, existe alguma maneira de configurar o MacOS X para não usar o Grand Central Dispatch e usar o que já foi usado no MacOS X 10.5 para tentar evitar esse problema até que o pessoal do MythTV possa ser incomodado olhando para ele? alterações no código.
Separadamente, alguém pode explicar se o Grand Central Dispatch está usando algum descritor de arquivo especial como eu raciocino.
O bug está no MythTV. A análise do argumento da linha de comando aparentemente está causando o GCD ser iniciado como um efeito colateral. A solução é simples. Mova o loop "for ()" que fecha todos os descritores para o topo de main ().