https://bugs.winehq.org/show_bug.cgi?id=9396
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Component|-unknown |comdlg32 Summary|Solidworks Crashes when |Solidworks 2006/2007/2012 |requested to open file. |fails to save files, | |reporting 'An unsupported | |operation was attempted.' | |(comdlg32 version resource | |outdated/inconsistent with | |default WinVer setting)
--- Comment #59 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming.
Prerequisite: 'winetricks -q mfc40 mfc42'
--- snip --- $ pwd /home/focht/.wine/drive_c/Program Files/SolidWorks
$ WINEDEBUG=+tid,+seh,+relay,+ole,+variant wine ./SLDWORKS.exe >>log.txt 2>&1 ... 0120:Call KERNEL32.LoadLibraryW(007fa084 L"comctl32.dll") ret=006d57bc 0120:Ret KERNEL32.LoadLibraryW() retval=7e530000 ret=006d57bc 0120:Call KERNEL32.GetProcAddress(7e530000,007f39c4 "DllGetVersion") ret=006d57d5 0120:Ret KERNEL32.GetProcAddress() retval=7e540450 ret=006d57d5 0120:Call comctl32.DllGetVersion(0033dae4) ret=006d57e6 0120:Ret comctl32.DllGetVersion() retval=00000000 ret=006d57e6 0120:Call KERNEL32.FreeLibrary(7e530000) ret=006d5801 0120:Ret KERNEL32.FreeLibrary() retval=00000001 ret=006d5801 ... 0120:Call KERNEL32.LoadLibraryW(052ebb98 L"COMDLG32.DLL") ret=00664439 0120:Ret KERNEL32.LoadLibraryW() retval=7e190000 ret=00664439 0120:Call KERNEL32.GetProcAddress(7e190000,007f39c4 "DllGetVersion") ret=00664452 0120:Ret KERNEL32.GetProcAddress() retval=00000000 ret=00664452 0120:Call msvcrt.malloc(0000001a) ret=5f8038d6 0120:Call ntdll.RtlAllocateHeap(00110000,00000000,0000001a) ret=7ed5ef9f 0120:Ret ntdll.RtlAllocateHeap() retval=0527f0c8 ret=7ed5ef9f 0120:Ret msvcrt.malloc() retval=0527f0c8 ret=5f8038d6 0120:Call ntdll.wcscpy(0527f0c8,052ebb98 L"COMDLG32.DLL") ret=006644b4 0120:Ret ntdll.wcscpy() retval=0527f0c8 ret=006644b4 0120:Call version.GetFileVersionInfoSizeW(0527f0c8 L"COMDLG32.DLL",0033dad4) ret=006644c1 ... 0120:Ret version.GetFileVersionInfoSizeW() retval=0000067c ret=006644c1 0120:Call msvcrt.malloc(0000067c) ret=5f8038d6 0120:Call ntdll.RtlAllocateHeap(00110000,00000000,0000067c) ret=7ed5ef9f 0120:Ret ntdll.RtlAllocateHeap() retval=05309a48 ret=7ed5ef9f 0120:Ret msvcrt.malloc() retval=05309a48 ret=5f8038d6 0120:Call version.GetFileVersionInfoW(0527f0c8 L"COMDLG32.DLL",00000000,0000067c,05309a48) ret=006644dc ... 0120:Ret version.GetFileVersionInfoW() retval=00000001 ret=006644dc 0120:Call version.VerQueryValueW(05309a48,007f3990 L"\VarFileInfo\Translation",0033dad0,0033dae0) ret=006644fa 0120:Ret version.VerQueryValueW() retval=00000001 ret=006644fa ... 0120:Call KERNEL32.LoadLibraryA(5f8a14d0 "comdlg32.dll") ret=5f805a00 0120:Ret KERNEL32.LoadLibraryA() retval=7e190000 ret=5f805a00 0120:Call KERNEL32.InterlockedExchange(5f8d1620,7e190000) ret=5f805a14 0120:Ret KERNEL32.InterlockedExchange() retval=00000000 ret=5f805a14 0120:Call KERNEL32.GetProcAddress(7e190000,5f8c4cbc "GetSaveFileNameW") ret=5f8059be 0120:Ret KERNEL32.GetProcAddress() retval=7e19f9b8 ret=5f8059be 0120:Call comdlg32.GetSaveFileNameW(0033ded0) ret=5f852d90 0120:Call comctl32.InitCommonControlsEx(0033db28) ret=7e1a5ab1 0120:Ret comctl32.InitCommonControlsEx() retval=00000001 ret=7e1a5ab1 ... 0120:Call user32.GetWindowTextW(000a048a,0033c3d8,00000100) ret=5f8142ea 0120:Call window proc 0x7eadc84e (hwnd=0xa048a,msg=WM_GETTEXT,wp=00000100,lp=0033c3d8) 0120:Ret window proc 0x7eadc84e (hwnd=0xa048a,msg=WM_GETTEXT,wp=00000100,lp=0033c3d8) retval=00000000 0120:Ret user32.GetWindowTextW() retval=00000000 ret=5f8142ea 0120:Call KERNEL32.lstrcmpW(0033c3d8 L"",5f8d0bcc L"") ret=5f81430f 0120:Ret KERNEL32.lstrcmpW() retval=00000000 ret=5f81430f 0120:Call user32.GetDlgItem(000b0716,00001dcb) ret=5f80e659 0120:Ret user32.GetDlgItem() retval=00000000 ret=5f80e659 0120:Call msvcrt._CxxThrowException(0033c5d0,5f8b2e78) ret=5f85141a 0120:Call KERNEL32.RaiseException(e06d7363,00000001,00000003,0033c564) ret=7ed45441 0120:trace:seh:raise_exception code=e06d7363 flags=1 addr=0x7b83a97b ip=7b83a97b tid=0120 0120:trace:seh:raise_exception info[0]=19930520 0120:trace:seh:raise_exception info[1]=0033c5d0 0120:trace:seh:raise_exception info[2]=5f8b2e78 0120:trace:seh:raise_exception eax=7b8269e1 ebx=7b8bb000 ecx=19930520 edx=0033c4b4 esi=0033c560 edi=0033c520 0120:trace:seh:raise_exception ebp=0033c4f8 esp=0033c494 cs=0023 ds=002b es=002b fs=0063 gs=006b flags=00000283 0120:trace:seh:call_stack_handlers calling handler at 0x5f890e11 code=e06d7363 flags=1 0120:trace:seh:cxx_frame_handler handling C++ exception rec 0x33c4a0 frame 0x33c65c trylevel 0 descr 0x5f8b40c8 nested_frame (nil) 0120:trace:seh:dump_exception_type flags 0 destr (nil) handler (nil) type info 0x5f8b2e60 0120:trace:seh:dump_exception_type 0: flags 1 type 0x5f8d4d58 {vtable=0x5f899864 name=.PAVCNotSupportedException@@ ()} offsets 0,-1,0 size 4 copy ctor (nil) 0120:trace:seh:dump_exception_type 1: flags 1 type 0x5f8d4d18 {vtable=0x5f899864 name=.PAVCSimpleException@@ ()} offsets 0,-1,0 size 4 copy ctor (nil) 0120:trace:seh:dump_exception_type 2: flags 1 type 0x5f8d4cd0 {vtable=0x5f899864 name=.PAVCException@@ ()} offsets 0,-1,0 size 4 copy ctor (nil) 0120:trace:seh:dump_exception_type 3: flags 1 type 0x5f8d4d00 {vtable=0x5f899864 name=.PAVCObject@@ ()} offsets 0,-1,0 size 4 copy ctor (nil) 0120:trace:seh:dump_exception_type 4: flags 1 type 0x5f8d4cf0 {vtable=0x5f899864 name=.PAX ()} offsets 0,-1,0 size 4 copy ctor (nil) ... 0120:Call user32.MessageBoxW(00060762,0033ba10 L"An unsupported operation was attempted.",00178278 L"SolidWorks",00000030) ret=5f86881e --- snip ---
The app customizes the file open/save dialogs based on the Windows version _and_ the version of common controls found.
Wine's comdlg32 version 4.0.0.950 is technically inconsistent with reported WinVer 'Windows XP' which confuses the app (should be >= 5.8x).
MSDN: http://msdn.microsoft.com/en-us/library/windows/desktop/hh298349%28v=vs.85%2...
and Mr. Chappell himself (although it's comctl32, the same applies to comdlg32):
http://www.geoffchappell.com/studies/windows/shell/comctl32/history/
The version resource part should be updated like Wine's comctl32. With that part fixed, 'save' works.
$ wine --version wine-1.7.13-100-gfcae016
Regards