https://bugs.winehq.org/show_bug.cgi?id=47464
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |focht@gmx.net Keywords| |regression Summary|wineboot keep crash after |wineboot crashes after |build with msvcrt. |building as PE file | |starting with Wine 4.12 Component|-unknown |programs Status|UNCONFIRMED |NEW Regression SHA1| |4a8483044ea346e09b4f2769fd1 | |f869a6e4533f6 Version|unspecified |4.12 Severity|normal |critical Hardware|x86 |x86-64 Ever confirmed|0 |1
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello folks,
confirming. Wine 4.12 release is unfortunately broken due to this. New prefixes are left in corrupted state and existing prefix updates won't work.
--- snip --- $ WINEDEBUG=+seh,+relay wineboot >>log.txt 2>&1 ... 000b:Call KERNEL32.CreateEventW(0032ee20,00000001,00000000,0040b7e0 L"__wineboot_event") ret=00406871 000b:Call kernelbase.CreateEventW(0032ee20,00000001,00000000,0040b7e0 L"__wineboot_event") ret=7bc935ff 000b:Call ntdll.RtlInitUnicodeString(0032ebf0,0040b7e0 L"__wineboot_event") ret=7106f407 000b:Ret ntdll.RtlInitUnicodeString() retval=00000022 ret=7106f407 000b:Call ntdll._vsnwprintf(0032eb00,00000040,710800e0 L"\Sessions\%u\BaseNamedObjects",0032eaa8) ret=7106f2b4 000b:Ret ntdll._vsnwprintf() retval=0000001c ret=7106f2b4 000b:Call ntdll.RtlInitUnicodeString(0032eac0,0032eb00 L"\Sessions\1\BaseNamedObjects") ret=7106f32e 000b:Ret ntdll.RtlInitUnicodeString() retval=0000003a ret=7106f32e 000b:Call ntdll.NtOpenDirectoryObject(0032eab8,00000006,0032ead0) ret=7106f373 000b: open_directory( access=00000006, attributes=00000000, rootdir=0000, directory_name=L"\Sessions\1\BaseNamedObjects" ) 000b: open_directory() = 0 { handle=0014 } 000b:Ret ntdll.NtOpenDirectoryObject() retval=00000000 ret=7106f373 000b:Call ntdll.NtCreateEvent(0032ebe8,001f0003,0032ec00,00000000,00000000) ret=7106fa89 000b: create_event( access=001f0003, manual_reset=1, initial_state=0, objattr={rootdir=0014,attributes=00000082,sd={},name=L"__wineboot_event"} ) 000b: create_event() = OBJECT_NAME_EXISTS { handle=0018 } 000b:Ret ntdll.NtCreateEvent() retval=40000000 ret=7106fa89 000b:Ret kernelbase.CreateEventW() retval=00000018 ret=7bc935ff 000b:Ret KERNEL32.CreateEventW() retval=00000018 ret=00406871 000b:Call KERNEL32.ResetEvent(00000018) ret=00406881 000b:Call kernelbase.ResetEvent(00000018) ret=7bc935ff 000b:Call ntdll.NtResetEvent(00000018,00000000) ret=7106fed5 000b: event_op( handle=0018, op=2 ) 000b: event_op() = 0 { state=0 } 000b:Ret ntdll.NtResetEvent() retval=00000000 ret=7106fed5 000b:Ret kernelbase.ResetEvent() retval=00000001 ret=7bc935ff 000b:Ret KERNEL32.ResetEvent() retval=00000001 ret=00406881 000b:Call ntdll.NtQuerySystemInformation(00000001,0032ee10,0000000c,00000000) ret=0040697f 000b:Ret ntdll.NtQuerySystemInformation() retval=00000000 ret=0040697f 000b:Call ntdll.RtlAllocateHeap(00010000,00000000,000000c0) ret=0040699a 000b:Ret ntdll.RtlAllocateHeap() retval=0002db60 ret=0040699a 000b:Call ntdll.NtPowerInformation(0000000b,00000000,00000000,0002db60,000000c0) ret=004069c2 000b:Ret ntdll.NtPowerInformation() retval=00000000 ret=004069c2 000b:Call msvcrt.wcscmp(0032f050 L"",0040b700 L"AuthenticAMD") ret=004081a8 000b:Ret msvcrt.wcscmp() retval=ffffffbf ret=004081a8 000b:trace:seh:NtRaiseException code=c0000005 flags=0 addr=0x402555 ip=402555 tid=000b 000b:trace:seh:NtRaiseException info[0]=0000000000000001 000b:trace:seh:NtRaiseException info[1]=000000000040b6e0 000b:trace:seh:NtRaiseException rax=0000000000000001 rbx=0000000000000000 rcx=0000000000000000 rdx=0000000000000000 000b:trace:seh:NtRaiseException rsi=000000000040b6e0 rdi=00000000000000c0 rbp=0000000000000000 rsp=000000000032ecc0 000b:trace:seh:NtRaiseException r8=000000000007ffff r9=000000000032e542 r10=0000000000000000 r11=0000000000000246 000b:trace:seh:NtRaiseException r12=0000000000000000 r13=00000000000000c0 r14=0000000000000000 r15=000000000040a685 --- snip ---
Problem is the assembly wrapper for 'cpuid'
https://source.winehq.org/git/wine.git/blob/4a8483044ea346e09b4f2769fd1f869a...
--- snip --- 188 extern void do_cpuid( unsigned int ax, unsigned int *p ); 189 #if defined(_MSC_VER) 190 void do_cpuid( unsigned int ax, unsigned int *p ) 191 { 192 __cpuid( p, ax ); 193 } 194 #elif defined(__i386__) 195 __ASM_GLOBAL_FUNC( do_cpuid, 196 "pushl %esi\n\t" 197 "pushl %ebx\n\t" 198 "movl 12(%esp),%eax\n\t" 199 "movl 16(%esp),%esi\n\t" 200 "cpuid\n\t" 201 "movl %eax,(%esi)\n\t" 202 "movl %ebx,4(%esi)\n\t" 203 "movl %ecx,8(%esi)\n\t" 204 "movl %edx,12(%esi)\n\t" 205 "popl %ebx\n\t" 206 "popl %esi\n\t" 207 "ret" ) 208 #elif defined(__x86_64__) 209 __ASM_GLOBAL_FUNC( do_cpuid, 210 "pushq %rbx\n\t" 211 "movl %edi,%eax\n\t" 212 "cpuid\n\t" 213 "movl %eax,(%rsi)\n\t" 214 "movl %ebx,4(%rsi)\n\t" 215 "movl %ecx,8(%rsi)\n\t" 216 "movl %edx,12(%rsi)\n\t" 217 "popq %rbx\n\t" 218 "ret" ) 219 #else 220 void do_cpuid( unsigned int ax, unsigned int *p ) 221 { 222 FIXME("\n"); 223 } 224 #endif
... 249 static void get_identifier( WCHAR *buf, size_t size, const WCHAR *arch ) 250 { 251 static const WCHAR fmtW[] = {'%','s',' ','F','a','m','i','l','y',' ','%','u',' ','M','o','d','e','l', 252 ' ','%','u',' ','S','t','e','p','p','i','n','g',' ','%','u',0}; 253 unsigned int regs[4] = {0, 0, 0, 0}, family, model, stepping; 254 255 do_cpuid( 1, regs ); 256 model = get_model( regs[0], &stepping, &family ); 257 swprintf( buf, size, fmtW, arch, family, model, stepping ); 258 } --- snip ---
There are other crashes as well, they need to be treated separately.
I think the release procedure should be changed that last-day changes need to pass at least a basic test, i.e. creating/updating WINEPREFIX and maybe running some winetricks recipes.
$ wine --version wine-4.12
Regards