OCIEnvCreateでGetLastError=998
BoorokuFeb 22 2012 — edited Feb 22 2012お世話になります。
【環境】
Windows7 Professional SP1 32bit
Oracle11g 11.2.0.1.0
【問題点】
COBOLで作成されたEXEからC言語で作成したdllを経由してDBアクセスしています。
C言語で作成したdllでは、プロセスアタッチ時にOCIEnvCreateしています。
ところが、OCIEnvCreateが失敗してしまいます(GetLastError=998)
これまでは問題なくDB接続できていたのですが、COBOLのEXEから呼び出す
別のDLLを修正したところこのような現象が発生してしまいました。
WinDbgで確認したところ、RtlpWaitOnCriticalSectionで、Access violation
c0000005が発生し、998がSetLastErrorされておりました。
調査ポイントなどご教授いただけますでしょうか。
よろしくお願いいたします。
※Call stackは以下のとおりです。
------------------
00 ntdll!RtlpWaitOnCriticalSection+0xbd
01 ntdll!RtlEnterCriticalSection+0x150
02 WS2_32!WSACleanup+0x15
03 oranl11.dl!snlsmDscToString
04 oranl11!snltmgcs+0x5201
...
06 ntdll!LdrpRunInitializeRoutines+0x26f
07 ntdll!LdrLoadDll+0x92
...
0c OCI!koptdumptds_check+0x1495
0d OCI!OCIEnvCreate+0x14
0e xxxxx!DllMain+0x30
------------------
Edited by: Booroku on 2012/02/22 18:53