Qualquer maneira de desabilitar o Grand Central Dispatch e recuar para o modo mais antigo de fazer as coisas

1

Conforme a edição do back-end da MythTV em:

link

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.

    
por Graham Dumpleton 24.11.2009 / 06:23

1 resposta

1

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 ().

    
por 29.11.2009 / 17:47