Exception with ocx not caught
Fabian Cenedese
Cenedese at indel.ch
Fri Oct 11 06:59:11 CDT 2002
> > I now have a simple ocx and an exe that has nothing else than this ocx
> > in it. The ocx appears as black circle on white ground in the upper left
> > corner (right, the wizard made ocx) In Windows it works without a
> > problem but in wine there's an exception upon creating the ocx. It
> > happens with both builtin and native msvcrt.dll.
>
>Well, the exception will be there in all cases, but it should be
>handled correctly with native msvcrt, I'd be very suprised if this
>didn't work. Anyway it should now work with the builtin too, thanks
>for the detailed report.
Well, partly. I found out that it works if I start it in wine "wine app.exe".
But if I start it with "winedbg app.exe" I still get this exception. So after
all it's maybe not an msvcrt fault but a winedbg one. Maybe because
it's catching every exception immediately even if it would be handled later
by the program.
To find out what's going on inside the MFC I added all MFC-sources to my
prg. Here's the new bt with MFC-files (original file names from MSVC6).
The original MFC42.dll is loaded because of the ocx.
.. (rest deleted) ..
Loaded debug information from ELF '/usr/local/lib/wine/msvcrt.dll.so'
(0x413e0000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\MFC42.DLL' (0x5f400000)
Error: Copyfield list mismatch (4<>3): enum CTestocxCtrl::__unnamed struct none
Loaded debug information from 32bit DLL 'C:\WINDOWS\SYSTEM\TESTOCX.OCX'
(0x10000000)
No debug information in 32bit DLL 'C:\WINDOWS\SYSTEM\MFC42LOC.DLL' (0x5fd00000)
First chance exception: e06d7363 in 32-bit code (0x400dc135).
Register dump:
CS:0023 SS:002b DS:002b ES:002b FS:008f GS:0000
EIP:400dc135 ESP:406e1b50 EBP:406e1ba8 EFLAGS:00200246( - 00 I Z- -P1 )
EAX:406e1b58 EBX:40115d24 ECX:00000000 EDX:406e1b6c
ESI:406e1bdc EDI:406e1be8
Stack dump:
0x406e1b50 (MSVCRT.DLL._gcvt+0x3c0db0): 40898c3c 006bbd58 e06d7363 00000001
0x406e1b60 (MSVCRT.DLL._gcvt+0x3c0dc0): 00000000 400dc0c0 00000003 19930520
0x406e1b70 (MSVCRT.DLL._gcvt+0x3c0dd0): 406e1c48 006c5198 cccccccc cccccccc
0x406e1b80 (MSVCRT.DLL._gcvt+0x3c0de0): cccccccc cccccccc cccccccc cccccccc
0x406e1b90 (MSVCRT.DLL._gcvt+0x3c0df0): cccccccc 004cfd92 406e1bf0 0056f8e5
0x406e1ba0 (MSVCRT.DLL._gcvt+0x3c0e00): 406e1c58 406e1c70 406e1be8 00465989
0x406e1bb0 (MSVCRT.DLL._gcvt+0x3c0e10):
0011: sel=008f base=4012c8e0 limit=00000fff 32-bit rw-
Backtrace:
=>0 0x400dc135 (RaiseException+0x75(code=0xe06d7363, flags=0x1, nbargs=0x3,
args=0x406e1bdc) [except.c:84] in libntdll.dll.so) (ebp=406e1ba8)
1 0x00465989 (__CxxThrowException at 8+0x39 in C:\IMD\Bin\MFCStatic.exe)
(ebp=406e1be8)
2 0x00571c8f (AfxThrowOleException+0xaf(sc=0x80020003)
[N:\Temp\MFCStatic\OleMisc.cpp:420] in C:\IMD\Bin\MFCStatic.exe) (ebp=406e1c64)
3 0x005b53d8
(COleDispatchDriver::InvokeHelperV+0x7b8(dwDispID=0xfffffdfa,
wFlags=0x406e0004, vtRet=0x406e0000, pvRet=0x0, pbParamInfo=0x406e1e6c,
argList=0x406e1f08) [N:\Temp\MFCStatic\OleDisp2.cpp:380] in
C:\IMD\Bin\MFCStatic.exe) (ebp=406e1d88)
4 0x004462ef (COleControlSite::InvokeHelperV+0xcf(dwDispID=0xfffffdfa,
wFlags=0x4, vtRet=0x0, pvRet=0x0, pbParamInfo=0x406e1e6c,
argList=0x406e1f04) [N:\Temp\MFCStatic\OccSite.cpp:976] in
C:\IMD\Bin\MFCStatic.exe) (ebp=406e1dfc)
5 0x00446408 (COleControlSite::SetPropertyV+0xc8(dwDispID=0xfffffdfa,
vtProp=0x412e000e, argList=0x406e1f04) [N:\Temp\MFCStatic\OccSite.cpp:1008]
in C:\IMD\Bin\MFCStatic.exe) (ebp=406e1e74)
6 0x00446618 (COleControlSite::SafeSetProperty+0x58(this=0x412e2e90,
dwDispID=0xfffffdfa, vtProp=0x8) [N:\Temp\MFCStatic\OccSite.cpp:1044] in
C:\IMD\Bin\MFCStatic.exe) (ebp=406e1ef0)
7 0x00446cc0 (COleControlSite::SetWindowTextA+0x70(lpszString=0x69e350)
[N:\Temp\MFCStatic\OccSite.cpp:1149] in C:\IMD\Bin\MFCStatic.exe)
(ebp=406e1f58)
8 0x00443b10 (COleControlSite::CreateControl+0x4e0(pWndCtrl=0x412e1090,
clsid=0x69e440, lpszWindowName=0x69e350, dwStyle=0x0, ppt=0x406e21d0,
psize=0x406e21c8, nID=0x3, pPersist=0x0, bStorage=0x0, bstrLicKey=0x0)
[N:\Temp\MFCStatic\OccSite.cpp:270] in C:\IMD\Bin\MFCStatic.exe) (ebp=406e200c)
9 0x0043cc3e
(COleControlContainer::CreateControl+0xfe(pWndCtrl=0x412e1090,
clsid=0x69e440, lpszWindowName=0x69e350, dwStyle=0x0, ppt=0x406e21d0,
psize=0x406e21c8, nID=0x3, pPersist=0x0, bStorage=0x0, bstrLicKey=0x0,
ppNewSite=0x0) [N:\Temp\MFCStatic\OccCont.cpp:184] in
C:\IMD\Bin\MFCStatic.exe) (ebp=406e20c0)
10 0x0043c310 (CWnd::CreateControl+0xc0(clsid=0x69e440,
lpszWindowName=0x69e350, dwStyle=0x0, ppt=0x406e21d0, psize=0x406e21c8,
pParentWnd=0x406e2cd4, nID=0x3, pPersist=0x0, bStorage=0x0, bstrLicKey=0x0)
[N:\Temp\MFCStatic\OccCont.cpp:77] in C:\IMD\Bin\MFCStatic.exe) (ebp=406e2144)
11 0x0043c213 (CWnd::CreateControl+0x93(clsid=0x69e440,
lpszWindowName=0x69e350, dwStyle=0x0, rect=0x406e22e4,
pParentWnd=0x406e2cd4, nID=0x3, pPersist=0x0, bStorage=0x0, bstrLicKey=0x0)
[N:\Temp\MFCStatic\OccCont.cpp:56] in C:\IMD\Bin\MFCStatic.exe) (ebp=406e21ec)
12 0x00411568 (CTestocx::Create+0x48(lpszClassName=0x0,
lpszWindowName=0x69e350, dwStyle=0x0, rect=0x406e22e4,
pParentWnd=0x406e2cd4, nID=0x3, pContext=0x0)
[n:\temp\mfcstatic\testocx.h:31] in C:\IMD\Bin\MFCStatic.exe) (ebp=406e2268)
13 0x00411429 (CTestExeDlg::OnInitDialog+0xe9
[N:\Temp\MFCStatic\TestExeDlg.cpp:62] in C:\IMD\Bin\MFCStatic.exe)
(ebp=406e2304)
.. (rest deleted) ..
0x400dc135 (RaiseException+0x75 [except.c:84] in libntdll.dll.so): leal
0xffffffa8(%ebp),%esp
84 RtlRaiseException( &record );
What is this error that is showing up while loading the files?
Error: Copyfield list mismatch (4<>3): enum CTestocxCtrl::__unnamed struct none
Maybe this has something to do with it. Using wine from cvs 2002-10-11 with
all builtin.
bye Fabi
PS: I'm now going away for about one week. If you need more info or sources
just let
me know, I will get there when I'm back.
More information about the wine-devel
mailing list