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