Это необычный вопрос, но вот:
В моем коде я где-то случайно разыменовываю NULL. Но вместо сбоя приложения из-за segfault оно, кажется, останавливает выполнение текущей функции и просто возвращает управление пользовательскому интерфейсу. Это затрудняет отладку, потому что обычно я хотел бы получать предупреждения о сбое, чтобы я мог подключить отладчик.
Что может быть причиной этого?
В частности, мой код представляет собой драйвер ODBC (т.е. DLL). Мое тестовое приложение — ODBC Test (odbct32w.exe), которое позволяет мне явно вызывать функции ODBC API в моей библиотеке DLL. Когда я вызываю одну из функций с известным segfault, вместо сбоя приложения ODBC Test просто возвращает управление пользовательскому интерфейсу, не печатая результат вызова функции. Затем я могу снова вызвать любую функцию в моем драйвере.
Я знаю, что технически приложение вызывает диспетчер драйверов ODBC, который загружает и вызывает функции в моем драйвере. Но это не имеет значения, так как мой segfault (или что-то еще) приводит к тому, что функция диспетчера драйверов также не возвращается (о чем свидетельствует приложение, не печатающее результат).
Один из моих коллег с похожей машиной испытывает ту же проблему, а другой - нет, но мы не смогли определить каких-либо конкретных различий.