http://bugs.winehq.org/show_bug.cgi?id=22764
Summary: Runtime error Product: Wine Version: 1.1.44 Platform: x86 OS/Version: Linux Status: UNCONFIRMED Severity: major Priority: P2 Component: -unknown AssignedTo: wine-bugs@winehq.org ReportedBy: axel.braun@gmx.de
Created an attachment (id=28074) --> (http://bugs.winehq.org/attachment.cgi?id=28074) Error message
I downloaded http://www.garmin.com/software/ChartplottersUpdatewithSDcard_20100511.exe to update the software of a chart plotter. This is done via a SD-card.
While Wine 1.1.9 was not able to find the device (mapped to K:), an upgrade to 1.1.44 terminates even earlier: After unpacking the file it terminates with a runtime error. See attachment
http://bugs.winehq.org/show_bug.cgi?id=22764
Vitaliy Margolen vitaliy@kievinfo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Runtime error |Garmin chart plotter | |updater crashes on start Severity|major |normal
--- Comment #1 from Vitaliy Margolen vitaliy@kievinfo.com 2010-05-19 08:55:25 --- http://bugs.winehq.org/page.cgi?id=fields.html#bug_severity
Please attach as a plain text file complete terminal output of running this program. Please make sure you use fresh wineprefix (remove/rename/use different ~/.wine dir) after upgrading to wine-1.1.44.
http://bugs.winehq.org/show_bug.cgi?id=22764
--- Comment #2 from Axel axel.braun@gmx.de 2010-05-19 09:33:37 --- (In reply to comment #1)
...fine with me
Please attach as a plain text file complete terminal output of running this program. Please make sure you use fresh wineprefix (remove/rename/use different ~/.wine dir) after upgrading to wine-1.1.44.
axel@z60m:/media/disk> wine ChartplottersUpdatewithSDcard_20100511.exe wine: created the configuration directory '/home/axel/.wine' fixme:system:SetProcessDPIAware stub! fixme:dwmapi:DwmIsCompositionEnabled 0x33d144 fixme:file:MoveFileWithProgressW MOVEFILE_WRITE_THROUGH unimplemented fixme:advapi:SetNamedSecurityInfoW L"C:\windows\system32\gecko\1.0.0\wine_gecko\components\xpti.dat" 1 536870916 (nil) (nil) 0x1b3f2c (nil) fixme:iphlpapi:NotifyAddrChange (Handle 0xa82e918, overlapped 0xa82e920): stub fixme:file:MoveFileWithProgressW MOVEFILE_WRITE_THROUGH unimplemented fixme:advapi:SetNamedSecurityInfoW L"C:\windows\system32\gecko\1.0.0\wine_gecko\components\compreg.dat" 1 536870916 (nil) (nil) 0x20a4f1c (nil) wine: configuration in '/home/axel/.wine' has been updated. axel@z60m:/media/disk> cd ~/.wine/drive_c/Garmin/ axel@z60m:~/.wine/drive_c/Garmin> dir insgesamt 54556 -rw-r--r-- 1 axel users 1330 17. Mär 17:05 INTELLIDUCER_0240.TXT -rwxr-xr-x 1 axel users 55500800 11. Mai 09:28 Program_card.exe axel@z60m:~/.wine/drive_c/Garmin> wine Program_card.exe axel@z60m:~/.wine/drive_c/Garmin>
The program Program_card.exe just dies without further notice
http://bugs.winehq.org/show_bug.cgi?id=22764
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download URL| |http://www.garmin.com/softw | |are/ChartplottersUpdatewith | |SDcard_20100511.exe.
http://bugs.winehq.org/show_bug.cgi?id=22764
Juan Lang juan_lang@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords|download |
--- Comment #3 from Juan Lang juan_lang@yahoo.com 2010-09-09 12:06:29 CDT --- That URL doesn't work for me. Can you provide an updated one? What's the status with Wine 1.3.2?
http://bugs.winehq.org/show_bug.cgi?id=22764
--- Comment #4 from Axel axel.braun@gmx.de 2010-09-09 14:22:54 CDT --- They have already released a new updated version of the file. Best is to get it like this: Folow this link: https://buy.garmin.com/shop/store/downloadsUpdates.jsp?product=010-00835-00&... Click on 'Download'
http://bugs.winehq.org/show_bug.cgi?id=22764
Juan Lang juan_lang@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download Status|UNCONFIRMED |NEW URL|http://www.garmin.com/softw |https://buy.garmin.com/shop |are/ChartplottersUpdatewith |/store/downloadsUpdates.jsp |SDcard_20100511.exe. |?product=010-00835-00&cID=1 | |50&pID=37719 Ever Confirmed|0 |1
--- Comment #5 from Juan Lang juan_lang@yahoo.com 2010-09-09 14:38:03 CDT --- Confirming. Running the installer unzips into c:\Garmin. Running program_card.exe from the folder runs the WinZip self-extractor again, and when that completes, a dialog entitled "Marine Product Software Update" briefly appears, and disappears, at which point the installer quits. The only console output I see is: fixme:dbghelp_dwarf:compute_location Only supporting one breg (18 -> 24)
http://bugs.winehq.org/show_bug.cgi?id=22764
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Component|-unknown |user32 Summary|Garmin chart plotter |Garmin chart plotter |updater crashes on start |updater crashes on start | |(DM_GETDEFID handling, | |property sheet dialog box)
--- Comment #6 from Anastasius Focht focht@gmx.net 2011-12-13 11:23:29 CST --- Hello,
still present.
The binary to reproduce is double-packed. Extract "program_card.exe" from "ChartplottersUpdatewithSDcard_20111111.exe". Extract "Copy2Card.exe" from "program_card.exe".
After extraction the installer runs "Copy2Card.exe UpdateInfo.xml" Running "Copy2Card.exe" without arguments is sufficient to reproduce the bug.
The app creates a wizard-like dialog (property sheet dialog box) with a property sheet page and some button controls at bottom (Cancel, Help, Next, Finish, Back).
Window/control hierarchy for better overview:
--- snip --- Handle Text Parent ID/menu Style ClsName 0005010E Marine Pr.. Topmost 94CA00C4 #32770 (dialog box) |00050112 0005010E (000003EF) 40000007 Static \0006004E Copy2Card 0005010E 50020044 #32770 (dialog box) |00030132 0006004E (00003027) 40021000 Static |00040106 Cancel 0006004E (00000002) 50010001 Button |00040116 Help 0006004E (00000009) 48030000 Button |00050026 0006004E (00003020) 4C000000 SysTabControl32 |00050108 &Next > 0006004E (00003024) 50010000 Button |00050114 Finish 0006004E (00003025) 48010000 Button |00050120 0006004E (00003026) 50021000 Static |00050126 < &Back 0006004E (00003023) 50010000 Button \0006011E Copy2Card 0006004E 50010444 #32770 (dialog box) \0004002A This wizard 0006011E (00000404) 50020000 Static --- snip ---
Window/control creation sequence follows...
NOTE: handles from window hierarchy don't match with handles in trace snippets due to different methods used (just resolve/substitute with IDs from traces).
The interesting one is the "Next" button (id=0x3024) which gets the focus and default button id. You can see the dialog showing up with one button control having focus for a split second before the app exits (use +heap to slow it down).
--- snip --- 0023:Call user32.CreateDialogIndirectParamW(00400000,00d43f88,00000000,00426007,00000000) ret=00426719 ... 0023:Call comctl32.PropertySheetW(00db2330) ret=0042c00a ... 0023:Call user32.CreateDialogIndirectParamW(00000000,0014a680,0001007c,688499c0,0014a070) ret=6884295b ... 0023:Call user32.GetDlgItem(00010088,00003020) ret=68849cab 0023:Ret user32.GetDlgItem() retval=00010096 ret=68849cab 0023:Call user32.SetPropW(00010088,6889f140 L"PropertySheetInfo",0014a070) ret=68849ccd 0023:Ret user32.SetPropW() retval=00000001 ret=68849ccd 0023:Call user32.SetWindowLongW(00010088,00000008,0014a070) ret=68849cf2 0023:Ret user32.SetWindowLongW() retval=00000000 ret=68849cf2 0023:Call user32.GetPropW(00010088,6889f140 L"PropertySheetInfo") ret=68846fde 0023:Ret user32.GetPropW() retval=0014a070 ret=68846fde 0023:Call user32.GetDlgItem(00010088,00003023) ret=68846ff7 0023:Ret user32.GetDlgItem() retval=0001008a ret=68846ff7 0023:Call user32.GetDlgItem(00010088,00003024) ret=68847010 0023:Ret user32.GetDlgItem() retval=0001008c ret=68847010 0023:Call user32.GetDlgItem(00010088,00003025) ret=68847029 0023:Ret user32.GetDlgItem() retval=0001008e ret=68847029 0023:Call user32.EnableWindow(0001008a,00000000) ret=68847092 ... 0023:Call user32.GetDlgItem(00010088,00003024) ret=68849f0a 0023:Ret user32.GetDlgItem() retval=0001008c ret=68849f0a 0023:Call user32.SetFocus(0001008c) ret=68849f15 ... 0023:Ret user32.SetFocus() retval=00000000 ret=68849f15 ... 0023:Call user32.CreateDialogIndirectParamW(00400000,0014cdf8,00010088,00426007,001496f8) ret=68844750 ... 0023:Ret user32.CreateDialogIndirectParamW() retval=0001009a ret=68844750 ... 0023:Ret user32.CreateDialogIndirectParamW() retval=00010088 ret=6884295b ... 0023:Ret comctl32.PropertySheetW() retval=00010088 ret=0042c00a ... 0023:Ret user32.CreateDialogIndirectParamW() retval=0001007c ret=00426719 ... --- snip ---
The problem:
--- snip --- ... 0023:Call user32.SendMessageW(00010088,00000476,00000000,00000000) ret=0042c0ce 0023:Call window proc 0x42feee (hwnd=0x10088,msg=PSM_GETCURRENTPAGEHWND,wp=00000000,lp=00000000) 0023:Call user32.CallWindowProcW(6862eb83,00010088,00000476,00000000,00000000) ret=0042d457 0023:Call window proc 0x6862eb83 (hwnd=0x10088,msg=PSM_GETCURRENTPAGEHWND,wp=00000000,lp=00000000) 0023:Call dialog proc 0x688499c0 (hwnd=0x10088,msg=PSM_GETCURRENTPAGEHWND,wp=00000000,lp=00000000) 0023:Call user32.GetPropW(00010088,6889f140 L"PropertySheetInfo") ret=6884a2ad 0023:Ret user32.GetPropW() retval=0014a070 ret=6884a2ad 0023:Call user32.SetWindowLongW(00010088,00000000,0001009a) ret=6884a31d 0023:Ret user32.SetWindowLongW() retval=00000000 ret=6884a31d 0023:Ret dialog proc 0x688499c0 (hwnd=0x10088,msg=PSM_GETCURRENTPAGEHWND,wp=00000000,lp=00000000) retval=00000001 result=0001009a 0023:Ret window proc 0x6862eb83 (hwnd=0x10088,msg=PSM_GETCURRENTPAGEHWND,wp=00000000,lp=00000000) retval=0001009a 0023:Ret user32.CallWindowProcW() retval=0001009a ret=0042d457 0023:Ret window proc 0x42feee (hwnd=0x10088,msg=PSM_GETCURRENTPAGEHWND,wp=00000000,lp=00000000) retval=0001009a 0023:Ret user32.SendMessageW() retval=0001009a ret=0042c0ce 0023:Call user32.GetParent(0001009a) ret=00425fde 0023:Ret user32.GetParent() retval=00010088 ret=00425fde 0023:Call user32.GetDlgItem(0001009a,00000001) ret=00425cec 0023:Ret user32.GetDlgItem() retval=00000000 ret=00425cec 0023:Call user32.GetDlgItem(00010088,00000001) ret=00425cec 0023:Ret user32.GetDlgItem() retval=00000000 ret=00425cec ... <internal exception, minidump, exit> --- snip ---
The app code calling GetDlgItem( hwnd, 1) is obviously wrong, resulting in exit (NULL hwnd is returned). It seems the control id passed to GetDlgItem() is stored in some class instance member data of C++ class hierarchy.
The following sequence shows the retrieval of the wrong control id which gets stored for later use:
--- snip --- ... 0024:Call user32.SendMessageW(0001009a,00000400,00000000,00000000) ret=00422efd 0024:Call window proc 0x42feee (hwnd=0x1009a,msg=WM_USER,wp=00000000,lp=00000000) 0024:Call user32.CallWindowProcW(6841fb83,0001009a,00000400,00000000,00000000) ret=0042d457 0024:Call window proc 0x6841fb83 (hwnd=0x1009a,msg=WM_USER,wp=00000000,lp=00000000) 0024:trace:win:WIN_SetWindowLong 0x1009a 0 0 W 0024:Call dialog proc 0x426007 (hwnd=0x1009a,msg=WM_USER,wp=00000000,lp=00000000) 0024:Ret dialog proc 0x426007 (hwnd=0x1009a,msg=WM_USER,wp=00000000,lp=00000000) retval=00000000 result=00000000 0024:Ret window proc 0x6841fb83 (hwnd=0x1009a,msg=WM_USER,wp=00000000,lp=00000000) retval=534b0001 0024:Ret user32.CallWindowProcW() retval=534b0001 ret=0042d457 0024:Ret window proc 0x42feee (hwnd=0x1009a,msg=WM_USER,wp=00000000,lp=00000000) retval=534b0001 0024:Ret user32.SendMessageW() retval=534b0001 ret=00422efd ... --- snip ---
(WM_USER+0) -> DM_GETDEFID
SendMessage(0001009a, DM_GETDEFID) resulting loWORD -> 0x0001
The sheet page (hwnd=0001009a -> 0006011E in Window/control hierarchy snippet) is on the same level as the buttons and part of the property sheet dialog box (parent).
DM_SETDEFID for "Next" button was sent earlier on the parent property sheet dialog:
--- snip --- ... 0024:Call user32.SendMessageW(00010088,00000401,00003024,00000000) ret=7a0dc137 0024:Call window proc 0x42feee (hwnd=0x10088,msg=WM_USER+1,wp=00003024,lp=00000000) 0024:Call user32.GetDlgItem(00010088,00003024) ret=0042b8fe 0024:Ret user32.GetDlgItem() retval=0001008c ret=0042b8fe ... --- snip ---
Wine code resulting in current behaviour:
http://source.winehq.org/git/wine.git/blob/a64765f673b01944ebf5da44dbcae7b8f...
--- snip --- 266 case DM_GETDEFID: 267 if (dlgInfo && !(dlgInfo->flags & DF_END)) 268 { 269 HWND hwndDefId; 270 if (dlgInfo->idResult) 271 return MAKELONG( dlgInfo->idResult, DC_HASDEFID ); 272 if ((hwndDefId = DEFDLG_FindDefButton( hwnd ))) 273 return MAKELONG( GetDlgCtrlID( hwndDefId ), DC_HASDEFID); 274 } 275 return 0; --- snip ---
I changed the code to retrieve the dialog info (-> idResult) from the parent (the property sheet dialog) and it helped the app to display the wizard dialog properly.
$ sha1sum ChartplottersUpdatewithSDcard_20111111.exe 8ee8bab4c541dba387b3128bbe7e58d97db0b373 ChartplottersUpdatewithSDcard_20111111.exe
$ wine --version wine-1.3.34-253-g088fa18
Regards
http://bugs.winehq.org/show_bug.cgi?id=22764
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |Installer
--- Comment #7 from Anastasius Focht focht@gmx.net --- Hello folks,
revisiting, still present.
Download: http://www.garmin.com/software/ChartplottersUpdatewithSDcard_20131219.exe
$ sha1sum ChartplottersUpdatewithSDcard_20131219.exe ba5b9e912af87d9c6f600d0e3bd249507e684813 ChartplottersUpdatewithSDcard_20131219.exe
$ du -sh ChartplottersUpdatewithSDcard_20131219.exe 271M ChartplottersUpdatewithSDcard_20131219.exe
$ wine --version wine-1.7.10-147-g4da71c3
Regards
http://bugs.winehq.org/show_bug.cgi?id=22764
--- Comment #8 from Axel axel.braun@gmx.de --- Still an issue in wine-1.7.16
https://bugs.winehq.org/show_bug.cgi?id=22764
super_man@post.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |super_man@post.com
--- Comment #9 from super_man@post.com --- Wine source code is still untouched so still present 1.7.51(git).
https://bugs.winehq.org/show_bug.cgi?id=22764
super_man@post.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |00cpxxx@gmail.com
https://bugs.winehq.org/show_bug.cgi?id=22764
--- Comment #10 from super_man@post.com --- All the download links lead to dead pages? To my understanding wine-staging 1.9.13 includes a fix for this specific bug.
https://github.com/wine-compholio/wine-staging/commit/3cb1c835bc048eb2ffae4d...
https://bugs.winehq.org/show_bug.cgi?id=22764
--- Comment #11 from Axel axel.braun@gmx.de --- Downloads are now under https://www.garmin.com/support/agree.jsp?id=8745
https://www8.garmin.com/support/software/marine.html# -> legacy marine products
Will try to look at this fix soon! Thanks!
https://bugs.winehq.org/show_bug.cgi?id=22764
Sebastian Lackner sebastian@fds-team.de changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |STAGED Staged patchset| |https://github.com/wine-com | |pholio/wine-staging/tree/ma | |ster/patches/user32-DM_SETD | |EFID CC| |dmitry@baikal.ru, | |erich.e.hoover@wine-staging | |.com, michael@fds-team.de, | |sebastian@fds-team.de
https://bugs.winehq.org/show_bug.cgi?id=22764
Bruno Jesus 00cpxxx@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |ladislav.laska@gmail.com
--- Comment #12 from Bruno Jesus 00cpxxx@gmail.com --- *** Bug 40787 has been marked as a duplicate of this bug. ***
https://bugs.winehq.org/show_bug.cgi?id=22764
André H. nerv@dawncrow.de changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |nerv@dawncrow.de Staged patchset|https://github.com/wine-com |https://github.com/wine-sta |pholio/wine-staging/tree/ma |ging/wine-staging/tree/mast |ster/patches/user32-DM_SETD |er/patches/user32-DM_SETDEF |EFID |ID