box64: winedevice.exe stuck on wine wineboot (Wine 8.21+)

tested on x86_64 with the same build and no issues.

winetricks corefonts
------------------------------------------------------
warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
------------------------------------------------------
warning: You apppear to be using Wine's new wow64 mode. Note that this is EXPERIMENTAL and not yet fully supported. If reporting an issue, be sure to mention this.
------------------------------------------------------
Using winetricks 20240105-next - sha256sum: 73f475faf6c041a9b04e033d4db74b8cc5fae20ddc8229ab494f8f938f96e73f with wine-9.0-rc3 and WINEARCH=win64
Executing w_do_call corefonts
------------------------------------------------------
warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
------------------------------------------------------
warning: You apppear to be using Wine's new wow64 mode. Note that this is EXPERIMENTAL and not yet fully supported. If reporting an issue, be sure to mention this.
------------------------------------------------------
Executing load_corefonts 
Executing w_do_call andale
------------------------------------------------------
warning: You are using a 64-bit WINEPREFIX. Note that many verbs only install 32-bit versions of packages. If you encounter problems, please retest in a clean 32-bit WINEPREFIX before reporting a bug.
------------------------------------------------------
------------------------------------------------------
warning: You apppear to be using Wine's new wow64 mode. Note that this is EXPERIMENTAL and not yet fully supported. If reporting an issue, be sure to mention this.
------------------------------------------------------
Executing load_andale 
Executing cabextract -q -d /home/gman/.wine/dosdevices/c:/windows/temp /home/gman/.cache/winetricks/corefonts/andale32.exe
------------------------------------------------------
warning: Running /usr/local/bin/wineserver -w. This will hang until all wine processes in prefix=/home/gman/.wine terminate
------------------------------------------------------
Dynarec for ARM64, with extension: ASIMD AES CRC32 PMULL SHA1 SHA2 PageSize:4096 Running on Cortex-A57 with 4 Cores
Params database has 46 entries
BOX64: Didn't detect 48bits of address space, considering it's 39bits
Counted 58 Env var
BOX64 LIB PATH: ./:lib/:lib64/:x86_64/:bin64/:libs64/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/
BOX64 BIN PATH: ./:bin/:/home/gman/.local/bin/:/home/gman/bin/:/usr/local/sbin/:/usr/local/bin/:/usr/sbin/:/usr/bin/:/sbin/:/bin/:/usr/games/:/usr/local/games/:/snap/bin/
Looking for /usr/local/bin/wineserver
argv[1]="-w"
Rename process to "wineserver"
Using native(wrapped) libdl.so.2
Using native(wrapped) libc.so.6
Using native(wrapped) ld-linux-x86-64.so.2
Using native(wrapped) libpthread.so.0
Using native(wrapped) libutil.so.1
Using native(wrapped) librt.so.1
Using native(wrapped) libbsd.so.0

hangs on box64 with this above output ^. fresh wine prefix used.

install instructions

version=9.0-rc3
wget https://github.com/Pi-Apps-Coders/files/releases/download/large-files/wine-${version}.tar.gz -O /tmp/wine-${version}.tar.gz
sudo tar -xvf /tmp/wine-${version}.tar.gz -C /opt
rm -f /tmp/wine-${version}.tar.gz
wget -O /tmp/winetricks "https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks"
sudo mv /tmp/winetricks /opt/wine-${version}/bin/winetricks
sudo chmod +x /opt/wine-${version}/bin/winetricks
#download Mono to universal location (to be installed automatically in all wine prefixes)
#according to https://wiki.winehq.org/Mono#Versions, use Mono 8.1.0 for Wine 8.11
#wine mono pacakge is called -x86 but contains both x86 and x86_64 binaries
sudo mkdir -p /opt/wine-${version}/share/wine/mono
wget -O "/tmp/wine-mono-8.1.0-x86.tar.xz" 'https://dl.winehq.org/wine/wine-mono/8.1.0/wine-mono-8.1.0-x86.tar.xz'
sudo tar -xvf "/tmp/wine-mono-8.1.0-x86.tar.xz" -C "/opt/wine-${version}/share/wine/mono"
rm -f "/tmp/wine-mono-8.1.0-x86.tar.xz"
#download Gecko to universal location (to be installed automatically in all wine prefixes)
#according to https://wiki.winehq.org/Gecko, use Gecko 2.47.4 for Wine 8.11
sudo mkdir -p /opt/wine-${version}/share/wine/gecko
wget -O "/tmp/wine-gecko-2.47.4-x86_64.tar.xz" 'https://dl.winehq.org/wine/wine-gecko/2.47.4/wine-gecko-2.47.4-x86_64.tar.xz'
sudo tar -xvf "/tmp/wine-gecko-2.47.4-x86_64.tar.xz"  -C "/opt/wine-${version}/share/wine/gecko"
rm -f "/tmp/wine-gecko-2.47.4-x86_64.tar.xz"

sudo ln -s /opt/wine-${version}/bin/winecfg /usr/local/bin/winecfg
sudo ln -s /opt/wine-${version}/bin/wineserver /usr/local/bin/wineserver
sudo ln -s /opt/wine-${version}/bin/wineboot /usr/local/bin/wineboot
sudo ln -s /opt/wine-${version}/bin/wine /usr/local/bin/wine
sudo ln -s /opt/wine-${version}/bin/winetricks /usr/local/bin/winetricks

#make them all executable
sudo chmod +x /usr/local/bin/winecfg /usr/local/bin/wineserver /usr/local/bin/wineboot /usr/local/bin/wine /usr/local/bin/winetricks

About this issue

  • Original URL
  • State: closed
  • Created 6 months ago
  • Reactions: 1
  • Comments: 35 (26 by maintainers)

Commits related to this issue

Most upvoted comments

Ok, I think I found root cause of the issue. The stack pointer was mis-aligned in a pthread_once callback and some value got overwriten (mix with RSP/RBP relative access and eroneous rounded RSP becauseof the misalignement).

It should work now with latest box64.

So, bisect done. The commit is df181df8ee5930f19327324593ecd54b3cc7fc26, which is “ntdll: Add a syscall_cfa member to the x86_64 syscall frame.” So prbably box64 stack setup during signal is not 100% correct.

tried again, cleared cache, exact same script and it did not hang this time… so I guess just unstable as usual

Regarding the createwindow errors, they shouldn’t prevent wineboot from working correctly if that’s all there is (proof: init a wineprefix on x64, but unset DISPLAY and WAYLAND_DISPLAY, then successfully run cmd or another console application to prove the prefix works correctly). If you force the use of nulldrv like I did for the Northstar dedicated server (which has to return success from CreateWindow and have a working window loop, but doesn’t actually show anything we care about on the window), you can sidestep those errors entirely (albeit without a GUI).