Почему мой код не выполняет segfault в Windows 7?

Это необычный вопрос, который нужно задать, но вот он:

В моем коде Я случайно где-то разыменую NULL. Но вместо того, чтобы приложение вылетало из-за ошибки segfault, похоже, что оно останавливает выполнение текущей функции и просто возвращает управление пользовательскому интерфейсу. Это затрудняет отладку, потому что обычно я хотел бы получить предупреждение о сбое, чтобы я мог подключить отладчик.

Что могло быть причиной этого?

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

Я знаю, что технически приложение вызывает диспетчер драйверов ODBC, который загружает и вызывает функции в моем драйвере. Но это не относится к делу, так как мой segfault (или что-то еще) приводит к тому, что функция диспетчера драйверов также не возвращает (о чем свидетельствует то, что приложение не выводит результат).

Один из моих коллег с похожей машиной испытывает эта же проблема, а другая - нет, но мы не смогли определить какие-либо конкретные различия.

14
задан Trevor 7 January 2011 в 19:41
поделиться