[PATCH] shell32 - handle WM_CLOSE in the Control Panel window (fixed)

Steven Edwards winehacker at gmail.com
Fri Aug 22 00:31:08 CDT 2008


On Thu, Aug 21, 2008 at 11:08 PM, Vincent Povirk
<madewokherd+8cd9 at gmail.com> wrote:
> I think the proper fix is for appwiz.cpl to process the CPL_STOP and
> CPL_EXIT messages (see
> http://msdn.microsoft.com/en-us/library/aa454656.aspx)

I still think there could be a bug as I have IE installed and I assume
the internet options dialog has the CPL_EXIT case and if I exit the
control panel with that applet loaded I get the following output

err:seh:setup_exception_record stack overflow 1176 bytes in thread
0017 eip 7bc78c4a esp 00240e98 stack 0x240000-0x241000-0x340000

I'm going to look tomorrow at adding the CPL_EXIT and CPL_STOP
messages to appwiz so we can get a better idea of what exactly is
going on.

Here is a backtrace from winedbg exiting the control panel with the
internet options dialog

=>1 0x7bc65f95 check_atl_thunk+0x65(rec=<is not available>,
context=0x33bff4)
[/home/sedwards/source/wine-git/dlls/ntdll/signal_i386.c:1030] in
ntdll (0x0033bfc4)
  2 0x7bc66114 raise_segv_exception+0xa4(rec=<register ESI not in
topmost frame>, context=<register EDI not in topmost frame>)
[/home/sedwards/source/wine-git/dlls/ntdll/signal_i386.c:1210] in
ntdll (0x0033bfe4)
  3 0xdeadbabe (0x0033c344)
  4 0x7eb74738 call_dialog_proc+0x68(hwnd=<register EDI not in topmost
frame>, msg=0x18, wp=0x0, lp=0x0, result=0x33c3b4, arg=0x11a0431)
[/home/sedwards/source/wine-git/dlls/user32/winproc.c:479] in user32
(0x0033c384)
  5 0x7eb77f5a WINPROC_CallDlgProcW+0x5a(func=0xffff0027,
hwnd=0x1003e, msg=0x18, wParam=<register EDI not in topmost frame>,
lParam=0x0) [/home/sedwards/source/wine-git/dlls/user32/winproc.c:2394]
in user32 (0x0033c3c4)
  6 0x7eaff2d5 DefDlgProcW+0x85(hwnd=<register ESI not in topmost
frame>, msg=0x18, wParam=0x0, lParam=0x0)
[/home/sedwards/source/wine-git/dlls/user32/defdlg.c:488] in user32
(0x0033c3f4)
  7 0x7eb728da WINPROC_wrapper+0x1a() in user32 (0x0033c424)
  8 0x7eb72fce call_window_proc+0x6e(hwnd=<register EDI not in topmost
frame>, msg=0x18, wp=0x0, lp=0x0, result=0x33c508, arg=0x7eaff250)
[/home/sedwards/source/wine-git/dlls/user32/winproc.c:457] in user32
(0x0033c464)
  9 0x7eb792f1 WINPROC_call_window+0xd1(hwnd=<register ESI not in
topmost frame>, msg=0x18, wParam=0x0, lParam=0x0, result=0x33c508,
unicode=0x1, mapping=0x1)
[/home/sedwards/source/wine-git/dlls/user32/winproc.c:2207] in user32
(0x0033c4a4)
  10 0x7eb3a8ca call_window_proc+0xca(hwnd=<register ESI not in
topmost frame>, msg=0x18, wparam=0x0, lparam=0x0, unicode=0x1,
same_thread=0x1, mapping=0x1)
[/home/sedwards/source/wine-git/dlls/user32/message.c:1639] in user32
(0x0033c514)
  11 0x7eb3d862 send_message+0x222(info=<register EDI not in topmost
frame>, res_ptr=0x33c5b0, unicode=<register ESI not in topmost frame>)
[/home/sedwards/source/wine-git/dlls/user32/message.c:2463] in user32
(0x0033c574)
  12 0x7eb3dcda SendMessageW+0x4a(hwnd=0x1003e, msg=0x18, wparam=0x0,
lparam=0x0) [/home/sedwards/source/wine-git/dlls/user32/message.c:2586]
in user32 (0x0033c5b4)
  13 0x7eb71d06 show_window+0x4d6(hwnd=0x1003e, cmd=<register ESI not
in topmost frame>)
[/home/sedwards/source/wine-git/dlls/user32/winpos.c:1046] in user32
(0x0033c624)
  14 0x7eb71e4b ShowWindow+0x3b(hwnd=<register ESI not in topmost
frame>, cmd=0x0)
[/home/sedwards/source/wine-git/dlls/user32/winpos.c:1154] in user32
(0x0033c644)
  15 0x7eb674fc DestroyWindow+0x1bc(hwnd=0x1003e)
[/home/sedwards/source/wine-git/dlls/user32/win.c:1502] in user32
(0x0033c684)
  16 0x7ea4349b PROPSHEET_CleanUp+0xcb(hwndDlg=<is not available>)
[/home/sedwards/source/wine-git/dlls/comctl32/propsheet.c:2720] in
comctl32 (0x0033c6b4)
  17 0x7ea46ef5 PROPSHEET_DialogProc+0x595(hwnd=0x10032,
uMsg=<register ESI not in topmost frame>, wParam=0x0, lParam=0x0)
[/home/sedwards/source/wine-git/dlls/comctl32/propsheet.c:3534] in
comctl32 (0x0033c9e4)
  18 0x7eb728da WINPROC_wrapper+0x1a() in user32 (0x0033ca14)
  19 0x7eb74738 call_dialog_proc+0x68(hwnd=<register EDI not in
topmost frame>, msg=0x2, wp=0x0, lp=0x0, result=0x33ca84,
arg=0x7ea46960)
[/home/sedwards/source/wine-git/dlls/user32/winproc.c:479] in user32
(0x0033ca54)
  20 0x7eb77f5a WINPROC_CallDlgProcW+0x5a(func=0xffff0026,
hwnd=0x10032, msg=0x2, wParam=<register EDI not in topmost frame>,
lParam=0x0) [/home/sedwards/source/wine-git/dlls/user32/winproc.c:2394]
in user32 (0x0033ca94)
  21 0x7eaff2d5 DefDlgProcW+0x85(hwnd=<register ESI not in topmost
frame>, msg=0x2, wParam=0x0, lParam=0x0)
[/home/sedwards/source/wine-git/dlls/user32/defdlg.c:488] in user32
(0x0033cac4)
  22 0x7eb728da WINPROC_wrapper+0x1a() in user32 (0x0033caf4)
  23 0x7eb72fce call_window_proc+0x6e(hwnd=<register EDI not in
topmost frame>, msg=0x2, wp=0x0, lp=0x0, result=0x33cbd8,
arg=0x7eaff250)
[/home/sedwards/source/wine-git/dlls/user32/winproc.c:457] in user32
(0x0033cb34)
  24 0x7eb792f1 WINPROC_call_window+0xd1(hwnd=<register ESI not in
topmost frame>, msg=0x2, wParam=0x0, lParam=0x0, result=0x33cbd8,
unicode=0x1, mapping=0x10032)
[/home/sedwards/source/wine-git/dlls/user32/winproc.c:2207] in user32
(0x0033cb74)
  25 0x7eb3a8ca call_window_proc+0xca(hwnd=<register ESI not in
topmost frame>, msg=0x2, wparam=0x0, lparam=0x0, unicode=0x1,
same_thread=0x1, mapping=0x10032)
[/home/sedwards/source/wine-git/dlls/user32/message.c:1639] in user32
(0x0033cbe4)
  26 0x7eb3d862 send_message+0x222(info=<register EDI not in topmost
frame>, res_ptr=0x33cc80, unicode=<register ESI not in topmost frame>)
[/home/sedwards/source/wine-git/dlls/user32/message.c:2463] in user32
(0x0033cc44)
  27 0x7eb3dcda SendMessageW+0x4a(hwnd=0x10032, msg=0x2, wparam=0x0,
lparam=0x0) [/home/sedwards/source/wine-git/dlls/user32/message.c:2586]
in user32 (0x0033cc84)
  28 0x7eb66186 WIN_SendDestroyMsg+0x66(hwnd=<register ESI not in
topmost frame>)
[/home/sedwards/source/wine-git/dlls/user32/win.c:1436] in user32
(0x0033cce4)
  29 0x7eb67521 DestroyWindow+0x1e1(hwnd=0x10032)
[/home/sedwards/source/wine-git/dlls/user32/win.c:1540] in user32
(0x0033cd24)
  30 0x7ea448a0 PROPSHEET_PropertySheet+0x2c0(psInfo=0x141718,
unicode=<is not available>)
[/home/sedwards/source/wine-git/dlls/comctl32/propsheet.c:2803] in
comctl32 (0x0033cd84)
  31 0x7ea450cf PropertySheetW+0x1cf(lppsh=0x33cea4)
[/home/sedwards/source/wine-git/dlls/comctl32/propsheet.c:2900] in
comctl32 (0x0033cdf4)
  32 0x011aac70 (0x0033ce2c)
  33 0x011a32bd (0x0033cedc)
  34 0x011a06b0 (0x0033d0f8)
  35 0x7ed733cd Control_WndProc+0xa3d(hWnd=0x10026, wMsg=0x4e,
lParam1=0x3e8, lParam2=0x33e4a0)
[/home/sedwards/source/wine-git/dlls/shell32/control.c:501] in shell32
(0x0033e238)
  36 0x7eb728da WINPROC_wrapper+0x1a() in user32 (0x0033e268)
  37 0x7eb72fce call_window_proc+0x6e(hwnd=<register EDI not in
topmost frame>, msg=0x4e, wp=0x3e8, lp=0x33e4a0, result=0x33e34c,
arg=0x7ed72990)
[/home/sedwards/source/wine-git/dlls/user32/winproc.c:457] in user32
(0x0033e2a8)
  38 0x7eb792f1 WINPROC_call_window+0xd1(hwnd=<register ESI not in
topmost frame>, msg=0x4e, wParam=0x3e8, lParam=0x33e4a0,
result=0x33e34c, unicode=0x1, mapping=0x1)
[/home/sedwards/source/wine-git/dlls/user32/winproc.c:2207] in user32
(0x0033e2e8)
  39 0x7eb3a8ca call_window_proc+0xca(hwnd=<register ESI not in
topmost frame>, msg=0x4e, wparam=0x3e8, lparam=0x33e4a0, unicode=0x1,
same_thread=0x1, mapping=0x1)
[/home/sedwards/source/wine-git/dlls/user32/message.c:1639] in user32
(0x0033e358)
  40 0x7eb3d862 send_message+0x222(info=<register EDI not in topmost
frame>, res_ptr=0x33e3f4, unicode=<register ESI not in topmost frame>)
[/home/sedwards/source/wine-git/dlls/user32/message.c:2463] in user32
(0x0033e3b8)
  41 0x7eb3dcda SendMessageW+0x4a(hwnd=0x10026, msg=0x4e,
wparam=0x3e8, lparam=0x33e4a0)
[/home/sedwards/source/wine-git/dlls/user32/message.c:2586] in user32
(0x0033e3f8)
  42 0x7ea2089b notify_hdr+0x6b(infoPtr=<register EDI not in topmost
frame>, code=0xfffffffd, pnmh=<register ESI not in topmost frame>)
[/home/sedwards/source/wine-git/dlls/comctl32/listview.c:737] in
comctl32 (0x0033e428)
  43 0x7ea2864f notify_click+0x16f(infoPtr=0x133560, code=0xfffffffd,
lvht=0x33e578) [/home/sedwards/source/wine-git/dlls/comctl32/listview.c:806]
in comctl32 (0x0033e4d8)
  44 0x7ea28955 LISTVIEW_LButtonDblClk+0xa5(infoPtr=<register EDI not
in topmost frame>, wKey=<is not available>, x=0x66, y=0x1f)
[/home/sedwards/source/wine-git/dlls/comctl32/listview.c:8557] in
comctl32 (0x0033e598)
  45 0x7ea33cbe LISTVIEW_WindowProc+0x3de(hwnd=0x1002a, uMsg=0x203,
wParam=0x1, lParam=0x1f)
[/home/sedwards/source/wine-git/dlls/comctl32/listview.c:9926] in
comctl32 (0x0033ee98)
  46 0x7eb728da WINPROC_wrapper+0x1a() in user32 (0x0033eec8)
  47 0x7eb72fce call_window_proc+0x6e(hwnd=<register EDI not in
topmost frame>, msg=0x203, wp=0x1, lp=0x1f0066, result=0x33ef78,
arg=0x7ea338e0)
[/home/sedwards/source/wine-git/dlls/user32/winproc.c:457] in user32
(0x0033ef08)
  48 0x7eb792f1 WINPROC_call_window+0xd1(hwnd=<register ESI not in
topmost frame>, msg=0x203, wParam=0x1, lParam=0x1f0066,
result=0x33ef78, unicode=0x1, mapping=0x4)
[/home/sedwards/source/wine-git/dlls/user32/winproc.c:2207] in user32
(0x0033ef48)
  49 0x7eb3a186 DispatchMessageW+0x96(msg=<register EDI not in topmost
frame>) [/home/sedwards/source/wine-git/dlls/user32/message.c:3125] in
user32 (0x0033ef88)
  50 0x7ed74177 Control_RunDLLW+0x3f7(hWnd=0x10020, hInst=0x0,
cmd=0x132408, nCmdShow=0x5)
[/home/sedwards/source/wine-git/dlls/shell32/control.c:620] in shell32
(0x0033fcc8)
  51 0x7ed7476d Control_RunDLLA+0xfd(hWnd=0x10020, hInst=0x0,
cmd=0x7ee73b43, nCmdShow=0x5)
[/home/sedwards/source/wine-git/dlls/shell32/control.c:825] in shell32
(0x0033fcf8)
  52 0x7ee735ea launch+0x3a(what=<register ESI not in topmost frame>)
[/home/sedwards/source/wine-git/programs/control/control.c:31] in
control (0x0033fd18)
  53 0x7ee73665 WinMain+0x65(hInst=0x7ee70000, hPrev=0x0,
lpszCmdLine=0x110b10, nCmdShow=0x1)
[/home/sedwards/source/wine-git/programs/control/control.c:70] in
control (0x0033fe58)
  54 0x7ee73963 main+0xa3()
[/home/sedwards/source/wine-git/dlls/winecrt0/exe_main.c:48] in
control (0x0033fed8)
  55 0x7ee7388b __wine_spec_exe_entry+0x5b(peb=0x7ffdf000)
[/home/sedwards/source/wine-git/dlls/winecrt0/exe_entry.c:36] in
control (0x0033ff08)
  56 0x7b877ef7 start_process+0xc7(arg=0x0)
[/home/sedwards/source/wine-git/dlls/kernel32/process.c:904] in
kernel32 (0x0033ffe8)


-- 
Steven Edwards

"There is one thing stronger than all the armies in the world, and
that is an idea whose time has come." - Victor Hugo



More information about the wine-devel mailing list