On Wed, 2017-07-05 at 23:31 -0500, Zebediah Figura wrote:
We should only ever have one dialog anyway, and this is destroyed when we close the package.
It causes a crash in a random installer here:
$ ./wine msiexec /i "XPSEP XP and Server 2003 32 bit.msi" fixme:ntdll:NtLockFile I/O completion on lock not implemented yet err:msi:msiobj_addref Invalid handle! err:msi:msiobj_addref Invalid handle! wine: Unhandled page fault on read access to 0x57e5896d at address 0x7ed68688 (thread 0009), starting debugger... Unhandled exception: page fault on read access to 0x57e5896d in 32-bit code (0x7ed68688). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:7ed68688 ESP:0032d078 EBP:0032d088 EFLAGS:00210202( R- -- I - - - ) EAX:57e5896d EBX:7edaf2f4 ECX:00151018 EDX:7ed686d0 ESI:57e58949 EDI:00000045 Stack dump: 0x0032d078: 00150c40 7edaee74 00150c40 00150c40 0x0032d088: 0032d0e8 7ed6b4ae 7ed84b14 00000016 0x0032d098: 0032d0c8 7edaee40 4d430003 00000000 0x0032d0a8: 00000000 00000000 00000000 00000000 0x0032d0b8: 4d430000 0014947c 0000001c 7bc4fc76 0x0032d0c8: 0032d0f0 7edaf2f4 7edaee40 00150c40 Backtrace: =>0 0x7ed68688 find_cached_table+0x28(db=<is not available>, name="EventMapping") [/home/hans/wine/dlls/msi/../../include/wine/unicode.h:216] in msi (0x0032d088) 1 0x7ed6b4ae get_table+0x1d() in msi (0x0032d0e8) 2 0x7ed6c9e8 TABLE_CreateView+0xe7(db=0x7edaee40, name="EventMapping", view=0x14946c) [/home/hans/wine/dlls/msi/table.c:2179] in msi (0x0032d128) 3 0x7ed72857 WHERE_CreateView+0xe6(db=0x7edaee40, view=0x32d1e4, tables="EventMapping", cond=0x149400) [/home/hans/wine/dlls/msi/where.c:1242] in msi (0x0032d178) fixme:dbghelp_dwarf:compute_location Only supporting one reg (ebp/22 -> -2) 4 0x7ed75cd2 sql_parse+0xd71(info=0x32d9f4) [/home/hans/wine/dlls/msi/sql.y:506] in msi (0x0032d9d8) 5 0x7ed763af MSI_ParseSQL+0x4e(db=0x7edaee40, command="SELECT * FROM `EventMapping` WHERE `Dialog_` = 'ProgressForm' AND `Control_` = 'NextButton'", phview=0x154370, mem=0x15437c) [/home/hans/wine/dlls/msi/sql.y:1002] in msi (0x0032da18) 6 0x7ed49012 MSI_DatabaseOpenViewW+0x71() in msi (0x0032da58) 7 0x7ed4911f MSI_OpenQuery+0x8e(db=0x7edaee40, view=0x32dac4, fmt="SELECT * FROM `EventMapping` WHERE `Dialog_` = '%s' AND `Control_` = '%s'") [/home/hans/wine/dlls/msi/msiquery.c:163] in msi (0x0032da98) 8 0x7ed21ce2 dialog_map_events+0x31(dialog=<is not available>, control=<is not available>) [/home/hans/wine/dlls/msi/dialog.c:761] in msi (0x0032dad8) 9 0x7ed26a9e msi_dialog_add_control+0xad(dialog=0x15e0b8, rec=0x154218, szCls="BUTTON", style=0x18010000) [/home/hans/wine/dlls/msi/dialog.c:791] in msi (0x0032db18) 10 0x7ed28dfa msi_dialog_button_control+0xf9(dialog=0x15e0b8, rec=0x154218) [/home/hans/wine/dlls/msi/dialog.c:1011] in msi (0x0032db58) 11 0x7ed22070 msi_dialog_create_controls+0xaf(rec=0x154218, param=0x15e0b8) [/home/hans/wine/dlls/msi/dialog.c:3475] in msi (0x0032db88) 12 0x7ed49a2a MSI_IterateRecords+0x79(view=0x1f0e48, count=0x0(nil), func=0x7ed21fc0, param=0x15e0b8) [/home/hans/wine/dlls/msi/msiquery.c:188] in msi (0x0032dbd8) 13 0x7ed264f2 MSIDialog_WndProc+0xb71(hwnd=<couldn't compute location>, msg=<couldn't compute location>, wParam=<couldn't compute location>, lParam=<couldn't compute location>) [/home/hans/wine/dlls/msi/dialog.c:3502] in msi (0x0032dcd8) 14 0x7e9ee37a WINPROC_wrapper+0x19() in user32 (0x0032dd18) 15 0x7e9ee9ba call_window_proc+0x49(hwnd=0x2005a, msg=0x1, wp=0, lp=0x32e050, result=0x32dde8, arg=0x7ed25980) [/home/hans/wine/dlls/user32/winproc.c:245] in user32 (0x0032dd68) 16 0x7e9f0ce5 WINPROC_call_window+0xc4(hwnd=0x2005a, msg=0x1, wParam=0, lParam=0x32e050, result=0x32dde8, unicode=0x1, mapping=2124605252) [/home/hans/wine/dlls/user32/winproc.c:920] in user32 (0x0032ddb8) 17 0x7e9b4b14 call_window_proc+0x63(hwnd=0x2005a, msg=0x1, wparam=0, lparam=0x32e050, unicode=0x1, same_thread=0x1, mapping=2124605252) [/home/hans/wine/dlls/user32/message.c:2224] in user32 (0x0032de18) 18 0x7e9bbb0e send_message+0x1bd(info=0x32dea4, res_ptr=0x32dea0, unicode=0x1) [/home/hans/wine/dlls/user32/message.c:3269] in user32 (0x0032de88) 19 0x7e9bbd61 SendMessageW+0x50(hwnd=<couldn't compute location>, msg=<couldn't compute location>, wparam=<couldn't compute location>, lparam=<couldn't compute location>) [/home/hans/wine/dlls/user32/message.c:3469] in user32 (0x0032ded8) 20 0x7e9e54aa WIN_CreateWindowEx+0xba9(cs=0x32e050, className="MsiDialogCloseClass", module=(nil), unicode=0x1) [/home/hans/wine/dlls/user32/win.c:1641] in user32 (0x0032e038) 21 0x7e9df098 CreateWindowExW+0x72(exStyle=<couldn't compute location>, className=<couldn't compute location>, windowName=<couldn't compute location>, style=<couldn't compute location>, x=<couldn't compute location>, y=<couldn't compute location>, width=<couldn't compute location>, height=<couldn't compute location>, parent=<couldn't compute location>, menu=<couldn't compute location>, instance=<couldn't compute location>, data=<couldn't compute location>) [/home/hans/wine/dlls/user32/win.c:1776] in user32 (0x0032e088) 22 0x7ed231c6 dialog_run_message_loop+0x65() in msi (0x0032e0f8) 23 0x7ed2ad43 event_do_dialog+0x42(package=0x13f538, name=<is not available>, parent=(nil), destroy_modeless=0x1) [/home/hans/wine/dlls/msi/dialog.c:4349] in msi (0x0032e128) 24 0x7ed2c0e9 ACTION_DialogBox+0x48(package=0x13f538, dialog="ProgressForm") [/home/hans/wine/dlls/msi/dialog.c:4567] in msi (0x0032e168) 25 0x7ed4c8ca MSI_ProcessMessage+0x5d9(package=0x13f538, eMessageType=INSTALLMESSAGE_SHOWDIALOG, record=0x146d60) [/home/hans/wine/dlls/msi/package.c:1794] in msi (0x0032f288) 26 0x7ed2bfc7 ACTION_ShowDialog+0x76(package=0x13f538, dialog="ProgressForm") [/home/hans/wine/dlls/msi/dialog.c:4522] in msi (0x0032fac8) 27 0x7ecfad88 ACTION_HandleCustomAction.part+0x77() in msi (0x0032faf8) 28 0x7ed0ab3c ACTION_PerformUIAction+0xab() in msi (0x0032fb38) 29 0x7ed0acdc ITERATE_Actions+0x13b(row=0x152b60, param=0x13f538) [/home/hans/wine/dlls/msi/action.c:499] in msi (0x0032fb78) 30 0x7ed49a2a MSI_IterateRecords+0x79(view=0x146928, count=0x0(nil), func=0x7ed0aba0, param=0x13f538) [/home/hans/wine/dlls/msi/msiquery.c:188] in msi (0x0032fbc8) 31 0x7ed0b463 MSI_InstallPackage+0x4f2(package=0x13f538, szPackagePath="XPSEP XP and Server 2003 32 bit.msi", szCommandLine=0x0(nil)) [/home/hans/wine/dlls/msi/action.c:604] in msi (0x0032fc18) 32 0x7ed3dd51 MsiInstallProductW+0xc0(szPackagePath=<is not available>, szCommandLine=<is not available>) [/home/hans/wine/dlls/msi/msi.c:251] in msi (0x0032fc68) 33 0x7efefbee WinMain+0x73d(hInstance=<is not available>, hPrevInstance=<is not available>, lpCmdLine=<is not available>, nCmdShow=<is not available>) [/home/hans/wine/programs/msiexec/msiexec.c:994] in msiexec (0x0032fd48) 34 0x7efee904 main+0xc3(argc=<couldn't compute location>, argv=<couldn't compute location>) [/home/hans/wine/dlls/winecrt0/exe_main.c:49] in msiexec (0x0032fde8) 35 0x7eff12ff __wine_spec_exe_entry+0x6e(peb=<couldn't compute location>) [/home/hans/wine/dlls/winecrt0/exe_entry.c:36] in msiexec (0x0032fe38) 36 0x7b45ee6c call_process_entry+0xb() in kernel32 (0x0032fe58) 37 0x7b45fe09 start_process+0x68(entry=<couldn't compute location>) [/home/hans/wine/dlls/kernel32/process.c:1116] in kernel32 (0x0032fe98) 38 0x7bc7e5b0 call_thread_func_wrapper+0xb() in ntdll (0x0032feb8) 39 0x7bc813a1 call_thread_func+0xb0(entry=0x7b45fda0, arg=0x7eff1290, frame=0x32ffc8) [/home/hans/wine/dlls/ntdll/signal_i386.c:2759] in ntdll (0x0032ffa8) 40 0x7bc7e58e call_thread_entry_point+0x11() in ntdll (0x0032ffc8) 41 0x7bc53473 start_process+0x12(arg=0xffaf6bd8) [/home/hans/wine/dlls/ntdll/loader.c:3083] in ntdll (0x0032ffe8) 42 0xf757d81d wine_call_on_stack+0x1c() in libwine.so.1 (0x00000000) 43 0xf757d980 wine_switch_to_stack+0x1f(func=0x7bc53460, arg=0xffaf6bd8, stack=0x330000) [/home/hans/wine/libs/wine/port.c:77] in libwine.so.1 (0xffaf6ba8) 44 0x7bc5911a LdrInitializeThunk+0x239(kernel_start=<couldn't compute location>, unknown2=<couldn't compute location>, unknown3=<couldn't compute location>, unknown4=<couldn't compute location>) [/home/hans/wine/dlls/ntdll/loader.c:3144] in ntdll (0xffaf6bf8) 45 0x7b465c33 __wine_kernel_init+0x962() [/home/hans/wine/dlls/kernel32/process.c:1310] in kernel32 (0xffaf7ae8) 46 0x7bc59ee3 __wine_process_init+0x152() [/home/hans/wine/dlls/ntdll/loader.c:3353] in ntdll (0xffaf7b58) 47 0xf757bbe3 wine_init+0x292(argc=0x4, argv=0xffaf8094, error="", error_size=0x400) [/home/hans/wine/libs/wine/loader.c:974] in libwine.so.1 (0xffaf7ba8) 48 0x7c000aaa main+0x79(argc=<is not available>, argv=<is not available>) [/home/hans/wine/loader/main.c:258] in <wine-loader> (0xffaf7fe8) 49 0xf739ea63 __libc_start_main+0xf2() in libc.so.6 (0x00000000) 0x7ed68688 find_cached_table+0x28 [/home/hans/wine/dlls/msi/../../include/wine/unicode.h:216] in msi: cmpw 0x24(%esi),%di 216 while (*str1 && (*str1 == *str2)) { str1++; str2++; }