[Bug 46106] Stable: ARM64 build broken with gcc

wine-bugs at winehq.org wine-bugs at winehq.org
Sun Nov 11 09:55:45 CST 2018


https://bugs.winehq.org/show_bug.cgi?id=46106

Anastasius Focht <focht at gmx.net> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |focht at gmx.net

--- Comment #2 from Anastasius Focht <focht at gmx.net> ---
Hello folks,

--- quote ---
After talking to Martin Storsjö and André Hentschel I'll revert that commit in
wine-3.0.4:
- It breaks compilation with older or non-clang compilers
- Not enough to for full windows ABI compatibility on ARM64
--- quote ---

I doubt that such an ARM64 Wine package will be useful at all.
What ARM64 Windows console/desktop apps do you intend to run on this setup?
The few native (non UWP) apps that exist *g* usually link against the Universal
CRT and are very likely susceptible for this problem.

Example: VLC build for ARM64 Windows (yay!)

https://www.videolan.org/vlc/download-windows.html

http://people.videolan.org/~jb/Builds/ARM/vlc-4.0.0-dev-20180508-aarch64.zip

With aarch64-linux-gnu-gcc-8.2.0 cross-toolchain (no Clang):

--- snip ---
$ WINEDEBUG=+seh,+relay,+loaddll,+msvcrt,+process wine64 ./vlc.exe
>>log_clang.txt 2>&1
...
0031:Call user32.SetWindowTextW(00010086,01d9bae8 L"VLC media player")
ret=016cbbe8 
...
0031:Call ucrtbase.strlen(019864d0 "8 5 3 1") ret=01107988
0031:Ret  ucrtbase.strlen() retval=00000007 ret=01107988
0031:Call ucrtbase.realloc(01d9c780,00000020) ret=01107bac
0031:Call ntdll.RtlReAllocateHeap(00480000,00000000,01d9c780,00000020)
ret=7f95dbf748
0031:Ret  ntdll.RtlReAllocateHeap() retval=01d9c780 ret=7f95dbf748
0031:Ret  ucrtbase.realloc() retval=01d9c780 ret=01107bac
0031:Call ucrtbase.memcpy(01d9c798,019864d0,00000008) ret=011079ec
0031:Ret  ucrtbase.memcpy() retval=01d9c798 ret=011079ec 
0031:Call
ucrtbase.__stdio_common_vsscanf(00000000,01d9c798,ffffffffffffffff,019a2a99 "%d
%d %d %d",00000000,01d4f370) ret=013dd2d0
0031:trace:msvcrt:MSVCRT_vsnscanf_l "8 5 3 1" ("%d %d %d %d")
0031:Call KERNEL32.GetLastError() ret=7f95e02920
0031:Ret  KERNEL32.GetLastError() retval=00000000 ret=7f95e02920
0031:trace:seh:raise_exception  info[0]=0000000000000001
0031:trace:seh:raise_exception  info[1]=01d4f43000000000
0031:trace:seh:call_vectored_handlers calling handler at 0x33c1c8 code=c0000005
flags=0
0031:trace:seh:call_vectored_handlers handler at 0x33c1c8 returned 0
0031:trace:seh:call_stack_handlers calling handler at 0x7bcd5b0c code=c0000005
flags=0
0031:Call ucrtbase.signal(0000000b,00000000) ret=14000262c
0031:trace:seh:MSVCRT_signal (11, (nil))
0031:Ret  ucrtbase.signal() retval=00000000 ret=14000262c
wine: Unhandled page fault on write access to 0x1d4f43000000000 at address
0x7f95de7b44 (thread 0031), starting debugger...
0031:trace:seh:start_debugger Starting debugger "winedbg --auto 42 212"
...
Unhandled exception: page fault on write access to 0x1d4f43000000000 in 64-bit
code (0x0000007f95de7b44).
Register dump:
ARM64 EL0t Mode
 Pc:0000007f95de7b44 Sp:0000000001d4f070 Lr:0000007f95de78b8
Cpsr:20000000(--C-)
 x0: 01d4f43000000000 x1: 0000000001d4f40c x2: 0000000000000010 x3:
0000000000000008 x4: 0000000000000001
 x5: 0000000001d6e5b8 x6: 0000000001d6f0e0 x7: 00000000fffffffe x8:
0000000000000040 x9: 000000007bcb3aac
 x10:0000000001d4ebe0 x11:0000000000000010 x12:0000000001d4ebd6
x13:0000007f95e02920 x14:ffffffffffffffbf
 x15:0000000000000000 ip0:0000007f95e4e240 ip1:0000007f964dfe90
x18:000000007ffc0000 x19:0000000001d4f240
 x20:0000000001d4f410 x21:0000000000000000 x22:0000000001d4f408
x23:0000000001d4f40c x24:0000000001d6e466
 x25:0000000001983ee8 x26:0000000000000000 x27:0000000000000000
x28:000000000022f0c0 Fp:0000000001d4f070
Stack dump:
0x0000000001d4f070:  0000000001d4f220 0000007f95dfd4c0
0x0000000001d4f080:  0000000001d4f370 0000000001d4f410
0x0000000001d4f090:  0000000000000000 0000000001d4f408
0x0000000001d4f0a0:  0000000001d4f40c 0000000001d4f404
0x0000000001d4f0b0:  0000000000000000 00000000019a2a9a
0x0000000001d4f0c0:  ffffffffffffffff 0000000001d9c79a
0x0000000001d4f0d0:  000000007bce8c68 000000007bce8e58
0x0000000001d4f0e0:  000000007bd1c0c0 0000000396665828
0x0000000001d4f0f0:  0000000001d4f1d0 000000007bd1c0c0
0x0000000001d4f100:  0000000001d6e1a8 0000000f96815348
0x0000000001d4f110:  0000000001d4f230 000000007bc9b8d4
0x0000000001d4f120:  0000000001d4f230 0000000001d4f230
Backtrace:
=>0 0x0000007f95de7b44 MSVCRT_vsnscanf_l+0xaa0(ap={__stack=0x1d4f418,
__gr_top=0x1d4f408, __vr_top=0x1d4f410, __gr_offs=0x1d4f414, __vr_offs=0})
[/home/focht/projects/wine/mainline-src/dlls/ucrtbase/../msvcrt/scanf.h:312] in
ucrtbase (0x0000000001d4f070)
  1 0x0000007f95de78b8 MSVCRT_vsnscanf_l+0x813(ap={__stack=0x1d4f40c,
__gr_top=0x1d4f408, __vr_top=0x1d4f410, __gr_offs=0x1d4f414, __vr_offs=0})
[/home/focht/projects/wine/mainline-src/dlls/ucrtbase/../msvcrt/scanf.h:298] in
ucrtbase (0x0000000001d4f220)
  2 0x0000007f95dfd4c0
MSVCRT__stdio_common_vsscanf+0xff(valist={__stack=0x0(nil), __gr_top=0x1d9c798,
__vr_top=0xffffffffffffffff, __gr_offs=0x19a2a99, __vr_offs=0})
[/home/focht/projects/wine/mainline-src/dlls/ucrtbase/../msvcrt/scanf.c:682] in
ucrtbase (0x0000000001d4f2a0)
  3 0x000000007bc9ba00 call_entry_point+0x8f() in ntdll (0x0000000001d4f4b0)
  4 0x0000000001983ee8 in libqt_plugin (+0xc83ee7) (0x0000000001d4f4b0)
0x0000007f95de7b44 MSVCRT_vsnscanf_l+0xaa0
[/home/focht/projects/wine/mainline-src/dlls/ucrtbase/../msvcrt/scanf.h:312] in
ucrtbase: be_arm64_disasm_one_insn: not done

312                else _SET_NUMBER_(int);
Modules:
Module    Address                    Debug info    Name (104 modules)
PE              230000-          47b000    Deferred        libvlccore
PE              6a0000-          6b2000    Deferred       
libfile_logger_plugin
PE              6c0000-          6d1000    Deferred       
libconsole_logger_plugin
PE              6e0000-          6ec000    Deferred       
libmemory_keystore_plugin
PE              6f0000-          702000    Deferred        libmmdevice_plugin
PE              b90000-          ba5000    Deferred        libhotkeys_plugin
PE              bb0000-          bbd000    Deferred       
libwin_hotkeys_plugin
PE              d00000-         1c48000    Export          libqt_plugin
ELF            7b400000-        7b815000    Deferred        kernel32<elf>
  \-PE            7b420000-        7b815000    \               kernel32
ELF            7bc00000-        7bd30000    Dwarf           ntdll<elf>
  \-PE            7bc20000-        7bd30000    \               ntdll
ELF            7c000000-        7c004000    Deferred        <wine-loader>
PE           140000000-       140024000    Deferred        vlc
PE           180000000-       180026000    Deferred        libvlc
...
ELF          7f9503d000-      7f952bb000    Deferred        user32<elf>
  \-PE          7f95060000-      7f952bb000    \               user32
ELF          7f952bb000-      7f9534e000    Deferred        shlwapi<elf>
  \-PE          7f952d0000-      7f9534e000    \               shlwapi
ELF          7f9534e000-      7f95d3f000    Deferred        shell32<elf>
  \-PE          7f95370000-      7f95d3f000    \               shell32
ELF          7f95d3f000-      7f95e64000    Dwarf           ucrtbase<elf>
  \-PE          7f95d70000-      7f95e64000    \               ucrtbase
...
ELF          7f96819000-      7f9684b000    Deferred       
ld-linux-aarch64.so.1
ELF          7f9684c000-      7f9684d000    Deferred        [vdso].so
Threads:
process  tid      prio (all id:s are in hex)
...
0000002a (D) Z:\home\focht\projects\woa-winrt\vlc-4.0.0-dev\vlc.exe
    00000032    0
    00000031    0 <==
    00000030    0
    0000002f    0
    0000002e    0
    0000002d    0
    0000002c    0
    0000002b    0
System information:
    Wine build: wine-3.20-7-ga0a7090301
    Platform: arm64
    Version: Windows 10
    Host system: Linux
    Host version: 4.18.14-yocto-standard 
--- snip ---

With aarch64-linux-gnu-gcc-7.3.0 + clang 6.0.1:

--- snip ---
...
0031:Call ucrtbase.strlen(019864d0 "8 5 3 1") ret=01107988
0031:Ret  ucrtbase.strlen() retval=00000007 ret=01107988
0031:Call ucrtbase.realloc(01d9c780,00000020) ret=01107bac
0031:Call ntdll.RtlReAllocateHeap(00480000,00000000,01d9c780,00000020)
ret=7f9519f72c
0031:Ret  ntdll.RtlReAllocateHeap() retval=01d9c780 ret=7f9519f72c
0031:Ret  ucrtbase.realloc() retval=01d9c780 ret=01107bac
0031:Call ucrtbase.memcpy(01d9c798,019864d0,00000008) ret=011079ec
0031:Ret  ucrtbase.memcpy() retval=01d9c798 ret=011079ec
0031:Call
ucrtbase.__stdio_common_vsscanf(00000000,01d9c798,ffffffffffffffff,019a2a99 "%d
%d %d %d",00000000,01d4f300) ret=013dd2d0
0031:trace:msvcrt:MSVCRT_vsnscanf_l "8 5 3 1" ("%d %d %d %d")
0031:Call KERNEL32.GetLastError() ret=7f951f0870
0031:Ret  KERNEL32.GetLastError() retval=00000000 ret=7f951f0870
0031:trace:msvcrt:MSVCRT_vsnscanf_l returning 4
0031:Ret  ucrtbase.__stdio_common_vsscanf() retval=00000004 ret=013dd2d0
0031:Call ucrtbase.free(01d9c780) ret=013daac0 
...
--- snip ---

BTW ... if you know more ARM64 apps for download/testing, bring it on. It's
really hard to find anything.

Regards

[1]
https://source.winehq.org/git/wine.git/commit/8fb8cc03c3edb599dd98f369e14a08f899cbff95

-- 
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