[Bug 32588] Macrium Reflect v5.1 installer crashes with WinVer set to 'Windows XP'
WineHQ Bugzilla
wine-bugs at winehq.org
Sun Dec 15 13:25:50 CST 2019
https://bugs.winehq.org/show_bug.cgi?id=32588
Anastasius Focht <focht at gmx.net> changed:
What |Removed |Added
----------------------------------------------------------------------------
Summary|Macrium Reflect: Crash at |Macrium Reflect v5.1
|the end of installation |installer crashes with
| |WinVer set to 'Windows XP'
URL|http://updates.macrium.com/ |https://web.archive.org/web
|reflect/v5.0/v5.1.5496/refl |/20191215153316/http://upda
|ect_setup_free.exe |tes.macrium.com/reflect/v5.
| |0/v5.1.5496/reflect_setup_f
| |ree.exe
--- Comment #7 from Anastasius Focht <focht at gmx.net> ---
Hello folks,
confirming. The installer takes a different (legacy) code path on Windows <
Vista, hence the crash.
--- snip ---
$ WINEDEBUG=+seh,+relay,+msi,+server wine ./reflect_setup_free.exe >>log.txt
2>&1
...
002b:trace:msi:HANDLE_CustomType1 Calling function L"GetPaths" from
L"C:\\users\\focht\\Temp\\msi338f.tmp"
...
002b:Call KERNEL32.CreateProcessW(0063f1d2
L"C:\\windows\\system32\\msiexec.exe",0063f3da
L"C:\\windows\\system32\\msiexec.exe -Embedding
42",00000000,00000000,00000000,00000000,00000000,00000000,0063f18c,0063f14c)
ret=00670431
...
002b:Ret KERNEL32.CreateProcessW() retval=00000001 ret=00670431
...
002b:trace:msi:HANDLE_CustomType1 Calling function L"UninstallBootMenu" from
L"C:\\users\\focht\\Temp\\msi338f.tmp"
...
002b:Call
KERNEL32.CreateThread(00000000,00000000,00670630,00e41860,00000000,00000000)
ret=006715ff
...
002b:Ret KERNEL32.CreateThread() retval=000000f8 ret=006715ff
...
004a: init_thread( unix_pid=13371, unix_tid=13400, debug_level=1, teb=7ffd0000,
entry=00401870, reply_fd=14, wait_fd=16, cpu=x86 )
004a: init_thread() = 0 { pid=002d, tid=004a, server_start=1d5b35db9de5dd6
(-24.3958530), info_size=0, version=595, all_cpus=00000001, suspend=0 }
...
004a:Ret PE DLL (proc=0x10059a78,module=0x10000000
L"msi338f.tmp",reason=PROCESS_ATTACH,res=(nil)) retval=1
...
004a:Call KERNEL32.GetVersionExW(011df674) ret=1000681b
004a:Ret KERNEL32.GetVersionExW() retval=00000001 ret=1000681b
...
004a:Call KERNEL32.CreateProcessW(00000000,011f1330
L"\"c:\\boot\\macrium\\boot\\bcdedit.exe\" /enum
all",00000000,00000000,00000001,04000000,00000000,00000000,011df7cc,011df7bc)
ret=1000349b
...
004a:Call ntdll.RtlGetExePath(00da0e60
L"c:\\boot\\macrium\\boot\\bcdedit.exe",011df19c) ret=7127e0dd
004a:Ret ntdll.RtlGetExePath() retval=00000000 ret=7127e0dd
...
004a:Call ntdll.RtlDoesFileExists_U(00da0e60
L"c:\\boot\\macrium\\boot\\bcdedit.exe") ret=7125638c
004a:Ret ntdll.RtlDoesFileExists_U() retval=00000000 ret=7125638c
...
004a:Ret KERNEL32.CreateProcessW() retval=00000000 ret=1000349b
...
004a:Call KERNEL32.GetLastError() ret=1006042a
004a:Ret KERNEL32.GetLastError() retval=00000002 ret=1006042a
...
004a:Call KERNEL32.IsDebuggerPresent() ret=100560c5
004a:Ret KERNEL32.IsDebuggerPresent() retval=00000000 ret=100560c5
004a:Call KERNEL32.SetUnhandledExceptionFilter(00000000) ret=100560cf
004a:Ret KERNEL32.SetUnhandledExceptionFilter() retval=00407400 ret=100560cf
004a:Call KERNEL32.UnhandledExceptionFilter(011dd220) ret=100560d9
...
wine: Unhandled exception 0xc000000d in thread 4a at address 10056141 (thread
004a), starting debugger...
--- snip ---
I was first a bit fooled by the failing call to 'bcdedit' tool - one of the
last Win32 API calls before EXCEPTION_INVALID_CRT_PARAMETER exception.
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/bcdedit-command-line-options
--- quote ---
BCDEdit is included in the %WINDIR%\System32 folder.
--- quote ---
https://neosmart.net/wiki/bcdedit/
--- quote --
BCDEdit on Windows XP
Windows XP doesn’t have a bcdedit.exe utility available, but the bootcfg.exe
utility instead. Bootcfg.exe is part of the Windows XP’s Recovery Console.
To read about bootcfg, follow our guide: Bootcfg – Guide for Windows XP.
--- quote --
Turns out it's not the red herring here. The failure is due to missing
initialization of internal installer data. Earlier in the installer process
(same custom action 'UninstallBootMenu'), various information is gathered from
querying the disk(s) for device descriptor properties and other data, such as
partition layout/Windows boot manager information.
--- snip ---
...
004a:Call KERNEL32.CreateFileW(011de3f8
L"\\\\.\\PHYSICALDRIVE0",80000000,00000003,00000000,00000003,00000000,00000000)
ret=100104ad
...
004a:Ret KERNEL32.CreateFileW() retval=000000f8 ret=100104ad
...
004a:Call
KERNEL32.DeviceIoControl(000000f8,000700a0,00000000,00000000,011d0230,00000028,011d01f4,00000000)
ret=1001050d
...
0025:fixme:mountmgr:harddisk_ioctl The DISK_PARTITION_INFO and
DISK_DETECTION_INFO structures will not be filled
...
004a: get_async_result() = 0 { size=40,
out_data={10,27,00,00,00,00,00,00,0c,00,00,00,ff,00,00,00,3f,00,00,00,00,02,00,00,00,20,a6,26,13,00,00,00,00,7b,ce,7b,27,79,ce,7b}
}
...
004a:Ret KERNEL32.DeviceIoControl() retval=00000001 ret=1001050d
...
004a:Call
KERNEL32.DeviceIoControl(000000f8,002d1400,011d025c,0000000c,011d0268,00002000,011d01ec,00000000)
ret=1001059c
...
0025:fixme:mountmgr:query_property Faking StorageDeviceProperty data
...
004a: get_async_result() = 0 { size=40,
out_data={28,00,00,00,28,00,00,00,07,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,01,00,00,00,00,00,00,00,00,00,00,00}
}
...
004a:Ret KERNEL32.DeviceIoControl() retval=00000001 ret=1001059c
...
004a:Call KERNEL32.CloseHandle(000000f8) ret=10010734
004a:Ret KERNEL32.CloseHandle() retval=00000001 ret=10010734
...
004a:Call KERNEL32.CreateFileW(011de3f8
L"\\\\.\\PHYSICALDRIVE0",80000000,00000003,011d2144,00000003,00000080,00000000)
ret=10058da9
...
004a:Ret KERNEL32.CreateFileW() retval=000000f8 ret=10058da9
...
004a:Call KERNEL32.GetFileType(000000f8) ret=10058e27
...
004a:Call
ntdll.NtQueryVolumeInformationFile(000000f8,011d20e8,011d20e0,00000008,00000004)
ret=71257c7e
004a: get_handle_fd( handle=00f8 )
004a: get_handle_fd() = BAD_DEVICE_TYPE { type=0, cacheable=1, access=00000000,
options=00000000 }
004a: get_volume_info( handle=00f8, info_class=00000004 )
004a: get_volume_info() = OBJECT_TYPE_MISMATCH { data={} }
0025: set_irp_result( handle=0148, status=c0000010, size=0, data={} )
004a:Ret ntdll.NtQueryVolumeInformationFile() retval=c0000024 ret=71257c7e
0025: set_irp_result() = 0
004a:Call ntdll.RtlNtStatusToDosError(c0000024) ret=71257cd9
004a:Ret ntdll.RtlNtStatusToDosError() retval=00000006 ret=71257cd9
...
004a:Ret KERNEL32.GetFileType() retval=00000000 ret=10058e27
...
004a:Call KERNEL32.GetLastError() ret=1006042a
004a:Ret KERNEL32.GetLastError() retval=00000006 ret=1006042a
...
--- snip ---
Since 'GetFileType' fails for '\\\\.\\PHYSICALDRIVE0' it doesn't bother with
further queries. It likely expects success and 'FILE_TYPE_DISK' here.
$ sha1sum reflect_setup_free.exe
54937b86e5be6d3d45fb4022aa75a97344eab479 reflect_setup_free.exe
$ du -sh reflect_setup_free.exe
33M reflect_setup_free.exe
$ wine --version
wine-5.0-rc1
Regards
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list