Исключение отладки c ++ c0000139 - PullRequest
       18

Исключение отладки c ++ c0000139

0 голосов
/ 30 октября 2009

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

Приложение аварийно завершает работу, за исключением c0000139 (документации о нем не так уж много).

CallCack выглядит так

ntdll.dll!_RtlRaiseStatus@4()  + 0x26 bytes 
ntdll.dll!_LdrpSnapThunk@32()  + 0x26f48 bytes  
ntdll.dll!_LdrpSnapIAT@16()  + 0xd9 bytes   
ntdll.dll!_LdrpHandleOneOldFormatImportDescriptor@16()  + 0x7a bytes    
ntdll.dll!_LdrpHandleOldFormatImportDescriptors@16()  + 0x2e bytes  
ntdll.dll!_LdrpWalkImportDescriptor@8()  + 0x11d bytes  
ntdll.dll!_LdrpLoadDll@24()  - 0x265 bytes  
ntdll.dll!_LdrLoadDll@16()  + 0x110 bytes   
kernel32.dll!_LoadLibraryExW@12()  + 0xc8 bytes 
odbc32.dll!_ODBCLoadLibraryEx@12()  + 0x29 bytes    
odbc32.dll!_LoadDriver@12()  + 0x119f bytes 
odbc32.dll!_SQLDriverConnectW@32()  + 0x1be bytes   
odbc32.dll!_SQLDriverConnect@32()  + 0x125 bytes

Похоже, что программа пытается создать соединение с базой данных (к Oracle через ODBC) и каким-то образом не может найти DLL или обнаружила DLL с неверной точкой входа.

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

Заранее спасибо

Рич

Ответы [ 3 ]

0 голосов
/ 30 октября 2009

Включите привязки загрузчика (gflags -i yourapp.exe + sls) и определите библиотеку, которую не удалось найти / загрузить (запуск программы из-за отладчика изменит всю диагностику загрузчика).

Либо получите имя библиотеки из аварийного дампа, проверив параметры вызова LoadLibraryExW.

0 голосов
/ 30 октября 2009

Спасибо за все ответы.

Оказывается (по крайней мере, похоже, что это была проблема), что у нас была проблема с конфигурацией. Половина программного обеспечения была настроена для загрузки драйверов 9i, а половина программного обеспечения ожидала драйверов 10g.

Пока еще рано, и нам нужно проверить это, однако, вполне вероятно, что это было причиной.

Приветствие Рич

0 голосов
/ 30 октября 2009

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

Для того, чтобы показать, что требуется для DLL, используйте зависящий от него файл.exe.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...