As exceções "EXC_BREAKPOINT (SIGTRAP)" são causadas pela depuração de pontos de interrupção?

Eu tenho um aplicativo multithread que é muito estável em todas as minhas máquinas de teste e parece ser estável para quase todos os meus usuários (com base nas queixas de falhas). O aplicativo falha com frequência para um usuário, que teve a gentileza de enviar relatórios de falha. Todos os relatórios de falhas (~ 10 relatórios consecutivos) parecem essencialmente idênticos:

Date/Time:       2010-04-06 11:44:56.106 -0700
OS Version:      Mac OS X 10.6.3 (10D573)
Report Version:  6

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000002, 0x0000000000000000
Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Thread 0 Crashed:  Dispatch queue: com.apple.main-thread
0   com.apple.CoreFoundation        0x90ab98d4 __CFBasicHashRehash + 3348
1   com.apple.CoreFoundation        0x90adf610 CFBasicHashRemoveValue + 1264
2   com.apple.CoreText              0x94e0069c TCFMutableSet::Intersect(__CFSet const*) const + 126
3   com.apple.CoreText              0x94dfe465 TDescriptorSource::CopyMandatoryMatchableRequest(__CFDictionary const*, __CFSet const*) + 115
4   com.apple.CoreText              0x94dfdda6 TDescriptorSource::CopyDescriptorsForRequest(__CFDictionary const*, __CFSet const*, long (*)(void const*, void const*, void*), void*, unsigned long) const + 40
5   com.apple.CoreText              0x94e00377 TDescriptor::CreateMatchingDescriptors(__CFSet const*, unsigned long) const + 135
6   com.apple.AppKit                0x961f5952 __NSFontFactoryWithName + 904
7   com.apple.AppKit                0x961f54f0 +[NSFont fontWithName:size:] + 39

(.... mais texto segue)

Primeiro, passei muito tempo investigando [NSFont fontWithName: size:]. Imaginei que talvez as fontes do usuário tivessem sido danificadas de alguma forma, de modo que [NSFont fontWithName: size:] estava solicitando algo inexistente e falhando por esse motivo. Adicionei um monte de código usando [[NSFontManager sharedFontManager] availableFontNamesWithTraits: NSItalicFontMask] para verificar a disponibilidade da fonte com antecedência. Infelizmente, essas mudanças não resolveram o problema.

Agora notei que esqueci de remover alguns pontos de interrupção de depuração, incluindo _NSLockError, [NSException raise] e objc_exception_throw. No entanto, o aplicativo foi definitivamente criado usando "Release" como a configuração de compilação ativa. Suponho que o uso da configuração "Release" impeça a configuração de quaisquer pontos de interrupção - mas, novamente, não tenho certeza exatamente como os pontos de interrupção funcionam ou se o programa precisa ser executado no gdb para que os pontos de interrupção tenham algum efeito.

Minhas perguntas são: poderia eu ter deixado os pontos de interrupção definidos ser a causa das falhas observadas pelo usuário? Em caso afirmativo, por que os pontos de interrupção causariam um problema apenas para esse usuário? Caso contrário, alguém mais teve problemas semelhantes com [NSFont fontWithName: size:]?

Provavelmente tentarei remover os pontos de interrupção e enviar de volta para o usuário, mas não tenho certeza de quanto dinheiro me resta com esse usuário. E eu gostaria de entender de maneira mais geral se deixar o conjunto de pontos de interrupção pode causar um problema (quando o aplicativo é criado usando a configuração "Release").

questionAnswers(4)

yourAnswerToTheQuestion