https://bugs.winehq.org/show_bug.cgi?id=50713
Bug ID: 50713 Summary: Commit a8856381ed9 ("ntdll: Use xsavec in x86_64 syscall dispatcher.") breaks Wine Product: Wine Version: 6.2 Hardware: x86-64 OS: Linux Status: NEW Severity: critical Priority: P2 Component: ntdll Assignee: wine-bugs@winehq.org Reporter: focht@gmx.net Distribution: ---
Hello folks,
as it says. Commit https://source.winehq.org/git/wine.git/commitdiff/a8856381ed9a7187a656496089... ("ntdll: Use xsavec in x86_64 syscall dispatcher.") breaks Wine.
--- snip --- $ rm -rf .wine
$ wineboot wine: created the configuration directory '/home/focht/.wine' 0024:err:environ:run_wineboot failed to start wineboot c00000e5 0024:err:wineboot:main failed to restart 64-bit L"C:\windows\system32\wineboot.exe", err 1359 0024:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0024:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0024:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. --- snip ---
--- snip --- $ winecfg 0024:err:environ:run_wineboot failed to start wineboot c00000e5 0024:fixme:actctx:parse_depend_manifests Could not find dependent assembly L"Microsoft.Windows.Common-Controls" (6.0.0.0) 0024:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0024:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0024:fixme:font:get_name_record_codepage encoding 20 not handled, platform 1. 0024:fixme:winspool:AddPrinterW DocumentPropertiesW on printer L"Xerox-WorkCentre-470cx" fails 0024:err:winecfg:WinMain failed to restart 64-bit L"C:\windows\system32\winecfg.exe", err 1359 0024:err:winediag:nodrv_CreateWindow Application tried to create a window, but no driver could be loaded. 0024:err:winediag:nodrv_CreateWindow The explorer process failed to start. --- snip ---
$ wine --version wine-6.2-264-ga8856381ed9
Regards
https://bugs.winehq.org/show_bug.cgi?id=50713
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |regression Regression SHA1| |a8856381ed9a7187a6564960893 | |617f31ec3e8ff
https://bugs.winehq.org/show_bug.cgi?id=50713
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |jacek@codeweavers.com Summary|Commit a8856381ed9 ("ntdll: |Commit a8856381ed9 ("ntdll: |Use xsavec in x86_64 |Use xsavec in x86_64 |syscall dispatcher.") |syscall dispatcher.") |breaks Wine |breaks Wine | |(wine-6.2-264-ga8856381ed9)
https://bugs.winehq.org/show_bug.cgi?id=50713
--- Comment #1 from Jacek Caban jacek@codeweavers.com --- Created attachment 69458 --> https://bugs.winehq.org/attachment.cgi?id=69458 ntdll: Simplify call_raise_user_exception_dispatcher on x86_64.
The attached patch should help. It looks like I messed splitting patches.
https://bugs.winehq.org/show_bug.cgi?id=50713
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download
https://bugs.winehq.org/show_bug.cgi?id=50713
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Commit a8856381ed9 ("ntdll: |Commit a8856381ed9 ("ntdll: |Use xsavec in x86_64 |Use xsavec in x86_64 |syscall dispatcher.") |syscall dispatcher.") |breaks Wine |breaks 64-bit Wine |(wine-6.2-264-ga8856381ed9) |(wine-6.2-264-ga8856381ed9) Keywords|download |patch
--- Comment #2 from Anastasius Focht focht@gmx.net --- Hello Jacek,
--- quote --- The attached patch should help. It looks like I messed splitting patches. --- quote ---
unfortunately it doesn't help.
--- snip --- wine: created the configuration directory '/home/focht/.wine' sock_init: shutdown() causes EOF wineserver: starting (pid=195188) ... 0024: new_process( token=0000, debug=0000, parent_process=0000, inherit_all=0, create_flags=00000000, socket_fd=10, access=001fffff, cpu=x86_64, info_size=404, handles_size=0, objattr={rootdir=0000,attributes=00000000,sd={},name=L""}, handles={}, info={debug_flags=0,console_flags=0,console=0000,hstdin=0000,hstdout=0000,hstderr=000c,x=0,y=0,xsize=0,ysize=0,xchars=0,ychars=0,attribute=00,flags=0,show=0,curdir=L"Z:\home\focht\",dllpath=L"C:\windows\system32;C:\windows\system32;C:\windows\system;C:\windows;.;",imagepath=L"C:\windows\system32\wineboot.exe",cmdline=L"C:\windows\system32\wineboot.exe --init",title=L"",desktop=L"",shellinfo=L"",runtime=L""}, env=L"SHELL=..." ) 0024: new_process() = 0 { info=0018, pid=0028, handle=001c } 0024: new_thread( process=001c, access=001fffff, suspend=1, request_fd=-1, objattr={rootdir=0000,attributes=00000000,sd={},name=L""} ) 0024: *fd* 02ac -> 30 0024: new_thread() = 0 { tid=002c, handle=0020 } 0024: get_handle_fd( handle=0000 ) 0024: get_handle_fd() = INVALID_HANDLE { type=0, cacheable=0, access=00000000, options=00000000 } 0024: get_handle_fd( handle=0000 ) 0024: get_handle_fd() = INVALID_HANDLE { type=0, cacheable=0, access=00000000, options=00000000 } 0024: select( flags=2, cookie=ff9123bc, timeout=infinite, size=8, prev_apc=0000, result={}, data={WAIT_ALL,handles={0018}}, context={} ) 0024: select() = PENDING { call={APC_NONE}, apc_handle=0000, context={} } 002c: *fd* 5 <- 30 002c: init_first_thread( unix_pid=195190, unix_tid=195190, debug_level=1, teb=7fffffd90000, peb=7fffffdaf000, ldt_copy=00000000, reply_fd=5, wait_fd=8, cpu=x86_64 ) 002c: *fd* 8 <- 31 002c: init_first_thread() = 0 { pid=0028, tid=002c, server_start=1d709b9409a9cf6 (-0.0042710), info_size=12566, all_cpus=00000003 } 002c: open_mapping( access=000f001f, attributes=00000000, rootdir=0000, name=L"\KernelObjects\__wine_user_shared_data" ) 002c: open_mapping() = 0 { handle=0008 } 002c: get_handle_fd( handle=0008 ) 002c: *fd* 0008 -> 19 002c: get_handle_fd() = 0 { type=1, cacheable=1, access=000f001f, options=00000020 } 002c: close_handle( handle=0008 ) 002c: close_handle() = 0 002c:trace:ntdll:init_cpu_info <- CPU arch 9, level 6, rev 15363, features 0xebfbbfff 002c:trace:ntdll:NtQuerySystemInformation (0x00000001,0x7fff4c7f7564,0x0000000c,(nil)) 002c: get_startup_info( ) 002c: get_startup_info() = 0 { info_size=404, info={debug_flags=0,console_flags=0,console=0000,hstdin=0000,hstdout=0000,hstderr=0004,x=0,y=0,xsize=0,ysize=0,xchars=0,ychars=0,attribute=00,flags=0,show=0,curdir=L"Z:\home\focht\",dllpath=L"C:\windows\system32;C:\windows\system32;C:\windows\system;C:\windows;.;",imagepath=L"C:\windows\system32\wineboot.exe",cmdline=L"C:\windows\system32\wineboot.exe --init",title=L"",desktop=L"",shellinfo=L"",runtime=L""}, env=L"..." } 002c: create_keyed_event( access=c0000000, objattr={} ) 002c: create_keyed_event() = 0 { handle=0008 } 002c: create_file( access=80100000, sharing=00000005, create=1, options=00000060, attrs=00000000, objattr={rootdir=0000,attributes=00000000,sd={},name=L"\??\C:\windows\system32\ntdll.dll"}, filename="/home/focht/projects/wine/mainline-install-x86_64/lib64/wine/ntdll.dll" ) 002c: create_file() = 0 { handle=000c } 002c: create_mapping( access=000f000d, flags=01000000, file_access=00000001, size=00000000, file_handle=000c, objattr={} ) 002c: create_mapping() = 0 { handle=0010 } 002c: close_handle( handle=000c ) 002c: close_handle() = 0 002c: get_mapping_info( handle=0010, access=00000001 ) 002c: get_mapping_info() = 0 { size=0008a000, flags=01800000, shared_file=0000, image={base=7bc00000,entry_point=7bc61d20,map_size=0008a000,stack_size=00100000,stack_commit=00001000,zerobits=00000000,subsystem=00000002,subsystem_minor=0000,subsystem_major=0006,osversion_major=0006,osversion_minor=0000,image_charact=2022,dll_charact=0160,machine=8664,contains_code=1,image_flags=44,loader_flags=00000000,header_size=00001000,file_size=00088000,checksum=00000000,cpu=x86_64} } 002c: get_mapping_info( handle=0010, access=0000000c ) 002c: get_mapping_info() = 0 { size=0008a000, flags=01800000, shared_file=0000, image={base=7bc00000,entry_point=7bc61d20,map_size=0008a000,stack_size=00100000,stack_commit=00001000,zerobits=00000000,subsystem=00000002,subsystem_minor=0000,subsystem_major=0006,osversion_major=0006,osversion_minor=0000,image_charact=2022,dll_charact=0160,machine=8664,contains_code=1,image_flags=44,loader_flags=00000000,header_size=00001000,file_size=00088000,checksum=00000000,cpu=x86_64} } 002c: get_handle_fd( handle=0010 ) 002c: *fd* 0010 -> 33 002c: get_handle_fd() = 0 { type=1, cacheable=1, access=000f000d, options=00000020 } 002c: map_view( mapping=0010, access=0000000c, base=7bc00000, size=0008a000, start=00000000, image={}, name=L"" ) 002c: map_view() = 0 002c: close_handle( handle=0010 ) 002c: close_handle() = 0 002c: *killed* exit_code=0 0024: *wakeup* signaled=0 0028: *process killed* 0024: get_new_process_info( info=0018 ) 0024: get_new_process_info() = 0 { success=0, exit_code=0 } 0024: close_handle( handle=0018 ) 0024: close_handle() = 0 0024: close_handle( handle=001c ) 0024: close_handle() = 0 0024: close_handle( handle=0020 ) 0024: close_handle() = 0 0024:err:environ:run_wineboot failed to start wineboot c00000e5 --- snip ---
--- snip --- ... 197233 [00007f0fd3999e58] openat(AT_FDCWD, "/home/focht/projects/wine/mainline-install-x86_64/lib64/wine/../libwine.so.1", O_RDONLY|O_CLOEXEC) = 5 197233 [00007f0fd3999f18] read(5, "\177ELF\2\1\1\0\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\340S\0\0\0\0\0\0"..., 832) = 832 197233 [00007f0fd3999c29] fstat(5, {st_dev=makedev(0xfd, 0x1), st_ino=17303661, st_mode=S_IFREG|0755, st_nlink=1, st_uid=1000, st_gid=1000, st_blksize=4096, st_blocks=3552, st_size=1814872, st_atime=1614066732 /* 2021-02-23T08:52:12.054585211+0100 */, st_atime_nsec=54585211, st_mtime=1614065911 /* 2021-02-23T08:38:31.009388764+0100 */, st_mtime_nsec=9388764, st_ctime=1614065911 /* 2021-02-23T08:38:31.011388771+0100 */, st_ctime_nsec=11388771}) = 0 197233 [00007f0fd399a076] mmap(NULL, 1534656, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 5, 0) = 0x7f0fc61f0000 197233 [00007f0fd399a12b] mprotect(0x7f0fc61f5000, 1499136, PROT_NONE) = 0 197233 [00007f0fd399a076] mmap(0x7f0fc61f5000, 36864, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x5000) = 0x7f0fc61f5000 197233 [00007f0fd399a076] mmap(0x7f0fc61fe000, 1458176, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0xe000) = 0x7f0fc61fe000 197233 [00007f0fd399a076] mmap(0x7f0fc6363000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 5, 0x172000) = 0x7f0fc6363000 197233 [00007f0fd399a076] mmap(0x7f0fc6366000, 2752, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f0fc6366000 197233 [00007f0fd3999d1b] close(5) = 0 197233 [00007f0fd399a12b] mprotect(0x7f0fc6363000, 8192, PROT_READ) = 0 197233 [00007f0fd36d4f3f] --- SIGILL {si_signo=SIGILL, si_code=ILL_ILLOPN, si_addr=0x7f0fd36d4f3f} --- 197231 [00007f71720c39da] <... epoll_wait resumed>[], 128, 16) = 0 197231 [00007f71720c39da] epoll_wait(9, [], 128, 16) = 0 197231 [00007f71720c39da] epoll_wait(9, [], 128, 16) = 0 197231 [00007f71720c39da] epoll_wait(9, [], 128, 16) = 0 197231 [00007f71720c39da] epoll_wait(9, <unfinished ...> 197233 [????????????????] +++ killed by SIGILL (core dumped) +++ ... --- snip ---
$ wine --version wine-6.2-271-g4981785f0fb
Regards
https://bugs.winehq.org/show_bug.cgi?id=50713
Austin English austinenglish@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Keywords| |download
https://bugs.winehq.org/show_bug.cgi?id=50713
Alistair Leslie-Hughes leslie_alistair@hotmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |leslie_alistair@hotmail.com
https://bugs.winehq.org/show_bug.cgi?id=50713
--- Comment #3 from Jacek Caban jacek@codeweavers.com --- Created attachment 69464 --> https://bugs.winehq.org/attachment.cgi?id=69464 xsavec
64-bit Wine generally works here, but I'm not on my main dev box now, so my testing is limited. I think that I can see the problem and the attached patch (together with previous one) may help. I will take a better look later today.
https://bugs.winehq.org/show_bug.cgi?id=50713
--- Comment #4 from Jacek Caban jacek@codeweavers.com --- I couldn't reproduce reported behaviour on my main box neither, but I wrote tests that confirmed problems that I spotted earlier today. I sent patches to Wine:
https://source.winehq.org/patches/data/200452 https://source.winehq.org/patches/data/200453 https://source.winehq.org/patches/data/200454
Please test if they fix this bug.
https://bugs.winehq.org/show_bug.cgi?id=50713
--- Comment #5 from Anastasius Focht focht@gmx.net --- Hello Jacek,
--- quote --- Please test if they fix this bug. --- quote ---
it still doesn't work for me. Applied all three patches on top of current master HEAD and did a clean rebuild.
--- snip --- $ git log --oneline -4
3b5d259b10e (HEAD -> master) ntdll: Fix compacted legacy xsave area handling. 48e911ffd81 ntdll: Make cpu_info global. f40816e6ca7 ntdll: Use syscall frame in x86_64 call_raise_user_exception_dispatcher implementation. 4981785f0fb (origin/master, github-rmi1974/master) msvcirt: Implement remainder of fstream class. --- snip ---
--- snip --- $ wine --version wine-6.2-274-g3b5d259b10e
$ rm -rf ~/.wine
$ wineboot wine: created the configuration directory '/home/focht/.wine' 0024:err:environ:run_wineboot failed to start wineboot c00000e5 0024:err:wineboot:main failed to restart 64-bit L"C:\windows\system32\wineboot.exe", err 1359 --- snip ---
Regards
https://bugs.winehq.org/show_bug.cgi?id=50713
--- Comment #6 from Jacek Caban jacek@codeweavers.com --- Created attachment 69468 --> https://bugs.winehq.org/attachment.cgi?id=69468 Fix XSAVEC detection.
I think I can see the problem, please try the attached patch on top of others.
https://bugs.winehq.org/show_bug.cgi?id=50713
--- Comment #7 from Anastasius Focht focht@gmx.net --- Hello Jacek,
--- quote --- I think I can see the problem, please try the attached patch on top of others. --- quote ---
unfortunately it still fails:
--- snip --- $ wineboot wine: created the configuration directory '/home/focht/.wine' 0024:err:environ:run_wineboot failed to start wineboot c00000e5 0024:err:wineboot:main failed to restart 64-bit L"C:\windows\system32\wineboot.exe", err 1359 --- snip ---
My cpu info, first core (older i7 Haswell system):
--- snip --- $ cat /proc/cpuinfo
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 60 model name : Intel(R) Core(TM) i7-4700HQ CPU @ 2.40GHz stepping : 3 microcode : 0x28 cpu MHz : 2535.383 cache size : 6144 KB physical id : 0 siblings : 8 core id : 0 cpu cores : 4 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid xsaveopt dtherm ida arat pln pts md_clear flush_l1d vmx flags : vnmi preemption_timer invvpid ept_x_only ept_ad ept_1gb flexpriority tsc_offset vtpr mtf vapic ept vpid unrestricted_guest ple bugs : cpu_meltdown spectre_v1 spectre_v2 spec_store_bypass l1tf mds swapgs itlb_multihit srbds bogomips : 4789.04 clflush size : 64 cache_alignment : 64 address sizes : 39 bits physical, 48 bits virtual power management: ... --- snip ---
* xsave * xsaveopt
Regards
https://bugs.winehq.org/show_bug.cgi?id=50713
--- Comment #8 from Jacek Caban jacek@codeweavers.com --- I see, cpuid check is wrong. I will prepare a fix tomorrow, sorry for the mess.
https://bugs.winehq.org/show_bug.cgi?id=50713
Jacek Caban jacek@codeweavers.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #69458|0 |1 is obsolete| | Attachment #69464|0 |1 is obsolete| | Attachment #69468|0 |1 is obsolete| |
--- Comment #9 from Jacek Caban jacek@codeweavers.com --- Created attachment 69471 --> https://bugs.winehq.org/attachment.cgi?id=69471 patch
Could you please try this patch? It accumulates all previous ones as well.
https://bugs.winehq.org/show_bug.cgi?id=50713
--- Comment #10 from Anastasius Focht focht@gmx.net --- Hello Jacek,
--- quote --- Could you please try this patch? It accumulates all previous ones as well. --- quote ---
thanks, this works for me. Fingers crossed it makes it in *before* Wine 6.3 release on Friday.
Regards
https://bugs.winehq.org/show_bug.cgi?id=50713
Anastasius Focht focht@gmx.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |FIXED Fixed by SHA1| |7b95cdffa6b12eca9c10a6ab45b | |50fcf1f9fa3a4
--- Comment #11 from Anastasius Focht focht@gmx.net --- Hello folks,
this is fixed by commit https://source.winehq.org/git/wine.git/commitdiff/7b95cdffa6b12eca9c10a6ab45... ("ntdll: Use the right cpuid for XSAVEC detection.").
Thanks Jacek
$ wine --version wine-6.2-360-g1649389edca
Regards
https://bugs.winehq.org/show_bug.cgi?id=50713
Alexandre Julliard julliard@winehq.org changed:
What |Removed |Added ---------------------------------------------------------------------------- Status|RESOLVED |CLOSED
--- Comment #12 from Alexandre Julliard julliard@winehq.org --- Closing bugs fixed in 6.3.