Hi
I still try to find the reason for the exception in my app while loading an ocx. But I don't seem to make much progress. Here is a new trace:
08153fd8:Call kernel32.lstrlenA(40791300 "") ret=5f587c81 08153fd8:Ret kernel32.lstrlenA() retval=00000000 ret=5f587c81 08153fd8:Call kernel32.MultiByteToWideChar(00000000,00000000,40791300 "",ffffffff,405c45fc,00000001) ret=5f5010de 08153fd8:Ret kernel32.MultiByteToWideChar() retval=00000001 ret=5f5010de 08153fd8:Call kernel32.GetProcAddress(65340000,00000002) ret=5f54db21 08153fd8:Ret kernel32.GetProcAddress() retval=65341408 ret=5f54db21 08153fd8:Call kernel32.IsBadReadPtr(405c469c,00000020) ret=40c27bce 08153fd8:Ret kernel32.IsBadReadPtr() retval=00000000 ret=40c27bce 08153fd8:Call kernel32.IsBadReadPtr(405c467c,00000004) ret=40c27bce 08153fd8:Ret kernel32.IsBadReadPtr() retval=00000000 ret=40c27bce 08153fd8:Call ntdll.RtlSizeHeap(40360000,00000000,403c0850) ret=65f019c3 trace:heap:RtlSizeHeap (40360000,00000002,403c0850): returning 00000020 08153fd8:Ret ntdll.RtlSizeHeap() retval=00000020 ret=65f019c3 08153fd8:Call kernel32.IsBadReadPtr(41986f50,00000020) ret=10214168 08153fd8:Ret kernel32.IsBadReadPtr() retval=00000000 ret=10214168 08153fd8:Call kernel32.IsBadWritePtr(41986f50,00000020) ret=10214180 08153fd8:Ret kernel32.IsBadWritePtr() retval=00000000 ret=10214180 08153fd8:Call kernel32.OutputDebugStringA(405c2154 "Warning: constructing COleException, scode = DISP_E_MEMBERNOTFOUND ($80020003).\r\n") ret=10215139 08073540:Ret kernel32.ContinueDebugEvent() retval=00000001 ret=404c3ee2 08073540:Call kernel32.WaitForDebugEvent(40615e0c,ffffffff) ret=404c3ef8 08073540:Ret kernel32.WaitForDebugEvent() retval=00000001 ret=404c3ef8 08073540:Call kernel32.ReadProcessMemory(0000002c,405c2154,40615cf4,00000100,40615cc4) ret=404c2e27 08073540:Ret kernel32.ReadProcessMemory() retval=00000001 ret=404c2e27 08073540:Call kernel32.ContinueDebugEvent(08153f20,08153fd8,00010002) ret=404c3ee2 08153fd8:Ret kernel32.OutputDebugStringA() retval=00000000 ret=10215139 08153fd8:Call kernel32.RaiseException(e06d7363,00000001,00000003,405c45b4) ret=10209499
It used to stop right after the RtlSizeHeap function. I don't know why it's later now, but leads me to thinking that it's just accidentally at this place and the reason is much earlier. Anyway, I now have a new message stating an exception (DISP_E_MEMBERNOTFOUND). After looking into MSDN to find out what it means I found this little article:
<MSDN> Debugging Output You Can Safely Ignore
-- snip -- Warning: constructing COleException, scode = DISP_E_MEMBERNOTFOUND ($80020003). First-chance exception in TSTCON32.EXE (MFCO42D.DLL): 0xE06D7363: Microsoft C++ Exception.
-- snip -- The last two lines are notification that an exception has been thrown because the test container didn't provide a Color property to be read. This is okay, because we've provided a default value for the property. You won't get this error if you use a container that provides the property, such as a Visual Basic application.
In Visual C++ version 4.1, the only line I got was a warning about the exception for properties that couldn't be loaded from the container.
First-chance exception in TSTCON32.EXE (MFC40.DLL): 0xE06D7363: Microsoft C++ Exception.
Depending on how your container handles threads, you may also get occasional messages about threads exiting. You don't need to worry about these, either. </MSDN>
It seems to me that it's probably this exception that stops my app. Somehow it is better handled in Windows than in Wine as my app runs in Windows. I also tried a pure VB-app with just my ocx in it. Output looks quite similar.
Can anybody with more insight in this matter give me some hints?
Thanks (for helping and for reading my long mails :)
Fabi