JonathanTreffler / backblaze-personal-wine-container

Run the Backblaze personal backup client in a docker container
https://hub.docker.com/r/tessypowder/backblaze-personal-wine
GNU Affero General Public License v3.0
406 stars 33 forks source link

"Unhandled page fault" during first install on docker Desktop for Windows #180

Open AdrianDeWinter opened 4 months ago

AdrianDeWinter commented 4 months ago

I am running this on WSL2 (long story^^) If I place the config directory inside of one of my WSL distros (in this case Ubuntu with the Docker WSL integration enabled), all is well, and Backblaze processes my Windows drives available under /mnt just fine when i mount them into the container.

If however, I place the config directory on my Windows file system, the installer crashes with a page fault exception. Since this is working fine on WSL as long as the config directory stays within WSL, I assume there is something about running an executable that is sitting behind that mount point that causes this.

I have never even touched wine before today, so I have no idea how troubleshoot this further and if there is even anything that can be done on your end.

This is not critical to me, i am fine for now with creating the container from the WSL end, it is still entirely managable from the windows side once it is created. But I am curious as to what is going wrong, and maybe discovering the underlying cause can lead to some wider improvements to his awesome project!

Docker output ``` [init ] container is starting... [cont-env ] loading container environment variables... [cont-env ] APP_NAME: loading... [cont-env ] DISPLAY: executing... [cont-env ] DISPLAY: terminated successfully. [cont-env ] DISPLAY: loading... [cont-env ] DOCKER_IMAGE_PLATFORM: loading... [cont-env ] GTK2_RC_FILES: executing... [cont-env ] GTK2_RC_FILES: terminated successfully. [cont-env ] GTK2_RC_FILES: loading... [cont-env ] GTK_THEME: executing... [cont-env ] GTK_THEME: terminated successfully. [cont-env ] GTK_THEME: loading... [cont-env ] HOME: loading... [cont-env ] QT_STYLE_OVERRIDE: executing... [cont-env ] QT_STYLE_OVERRIDE: terminated successfully. [cont-env ] QT_STYLE_OVERRIDE: loading... [cont-env ] TAKE_CONFIG_OWNERSHIP: loading... [cont-env ] XDG_CACHE_HOME: loading... [cont-env ] XDG_CONFIG_HOME: loading... [cont-env ] XDG_DATA_HOME: loading... [cont-env ] XDG_RUNTIME_DIR: loading... [cont-env ] XDG_STATE_HOME: loading... [cont-env ] container environment variables initialized. [cont-secrets] loading container secrets... [cont-secrets] container secrets loaded. [cont-init ] executing container initialization scripts... [cont-init ] 10-certs.sh: executing... [cont-init ] 10-certs.sh: terminated successfully. [cont-init ] 10-check-app-niceness.sh: executing... [cont-init ] 10-check-app-niceness.sh: terminated successfully. [cont-init ] 10-clean-logmonitor-states.sh: executing... [cont-init ] 10-clean-logmonitor-states.sh: terminated successfully. [cont-init ] 10-clean-tmp-dir.sh: executing... [cont-init ] 10-clean-tmp-dir.sh: terminated successfully. [cont-init ] 10-fontconfig-cache-dir.sh: executing... [cont-init ] 10-fontconfig-cache-dir.sh: terminated successfully. [cont-init ] 10-init-users.sh: executing... [cont-init ] 10-init-users.sh: terminated successfully. [cont-init ] 10-nginx.sh: executing... [cont-init ] 10-nginx.sh: terminated successfully. [cont-init ] 10-openbox.sh: executing... [cont-init ] 10-openbox.sh: terminated successfully. [cont-init ] 10-pkgs-mirror.sh: executing... [cont-init ] 10-pkgs-mirror.sh: terminated successfully. [cont-init ] 10-set-tmp-dir-perms.sh: executing... [cont-init ] 10-set-tmp-dir-perms.sh: terminated successfully. [cont-init ] 10-vnc-password.sh: executing... [cont-init ] 10-vnc-password.sh: terminated successfully. [cont-init ] 10-web-data.sh: executing... [cont-init ] 10-web-data.sh: terminated successfully. [cont-init ] 10-x11-unix.sh: executing... [cont-init ] 10-x11-unix.sh: terminated successfully. [cont-init ] 10-xdg-runtime-dir.sh: executing... [cont-init ] 10-xdg-runtime-dir.sh: terminated successfully. [cont-init ] 15-cjk-font.sh: executing... [cont-init ] 15-cjk-font.sh: terminated successfully. [cont-init ] 15-install-pkgs.sh: executing... [cont-init ] 15-install-pkgs.sh: terminated successfully. [cont-init ] 85-take-config-ownership.sh: executing... [cont-init ] 85-take-config-ownership.sh: terminated successfully. [cont-init ] 89-info.sh: executing... ╭――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――╮ │ │ │ Application: Backblaze Personal Backup │ │ Application Version: n/a │ │ Docker Image Version: n/a │ │ Docker Image Platform: linux/amd64 │ │ │ ╰――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――╯ [cont-init ] 89-info.sh: terminated successfully. [cont-init ] all container initialization scripts executed. [init ] giving control to process supervisor. [supervisor ] loading services... [supervisor ] loading service 'default'... [supervisor ] loading service 'app'... [supervisor ] loading service 'gui'... [supervisor ] loading service 'xvnc'... [supervisor ] loading service 'openbox'... [supervisor ] loading service 'certsmonitor'... [supervisor ] service 'certsmonitor' is disabled. [supervisor ] loading service 'nginx'... [supervisor ] loading service 'logrotate'... [supervisor ] loading service 'logmonitor'... [supervisor ] service 'logmonitor' is disabled. [supervisor ] all services loaded. [supervisor ] starting services... [supervisor ] starting service 'xvnc'... [xvnc ] Xvnc TigerVNC 1.13.1 - built Dec 21 2023 00:39:30 [xvnc ] Copyright (C) 1999-2022 TigerVNC Team and many others (see README.rst) [xvnc ] See https://www.tigervnc.org for information on TigerVNC. [xvnc ] Underlying X server release 12014000 [xvnc ] Sat Jul 13 18:01:30 2024 [xvnc ] vncext: VNC extension running! [xvnc ] vncext: Listening for VNC connections on /tmp/vnc.sock (mode 0660) [xvnc ] vncext: Listening for VNC connections on all interface(s), port 5900 [xvnc ] vncext: created VNC server for screen 0 [supervisor ] starting service 'openbox'... [supervisor ] starting service 'nginx'... [nginx ] Listening for HTTP connections on port 5800. [supervisor ] starting service 'app'... [app ] + local_version_file=/config/wine/dosdevices/c:/ProgramData/Backblaze/bzdata/bzreports/bzserv_version.txt [app ] + install_exe_path=/config/wine/dosdevices/c:/ [app ] + log_file=/config/wine/dosdevices/c:/backblaze-wine-startapp.log [app ] + custom_user_agent='backblaze-personal-wine (JonathanTreffler, +https://github.com/JonathanTreffler/backblaze-personal-wine-container), CFNetwork' [app ] + pinned_bz_version_file=/PINNED_BZ_VERSION [app ] ++ sed -n 1p /PINNED_BZ_VERSION [app ] + pinned_bz_version=9.0.1.777 [app ] ++ sed -n 2p /PINNED_BZ_VERSION [app ] + pinned_bz_version_url=https://web.archive.org/web/20240602102732/https://secure.backblaze.com/win32/install_backblaze.exe [app ] + export FORCE_LATEST_UPDATE=true [app ] + FORCE_LATEST_UPDATE=true [app ] + export WINEARCH=win64 [app ] + WINEARCH=win64 [app ] + export WINEDLLOVERRIDES=mscoree= [app ] + WINEDLLOVERRIDES=mscoree= [app ] + '[' '!' -f /config/wine/system.reg ']' [app ] + for x in {d..z} [app ] + test -d /drive_d [app ] + for x in {d..z} [app ] + test -d /drive_e [app ] + for x in {d..z} [app ] + test -d /drive_f [app ] + test -d /config/wine/dosdevices/f: [app ] + for x in {d..z} [app ] + test -d /drive_g [app ] + for x in {d..z} [app ] + test -d /drive_h [app ] + for x in {d..z} [app ] + test -d /drive_i [app ] + for x in {d..z} [app ] + test -d /drive_j [app ] + for x in {d..z} [app ] + test -d /drive_k [app ] + for x in {d..z} [app ] + test -d /drive_l [app ] + for x in {d..z} [app ] + test -d /drive_m [app ] + for x in {d..z} [app ] + test -d /drive_n [app ] + for x in {d..z} [app ] + test -d /drive_o [app ] + for x in {d..z} [app ] + test -d /drive_p [app ] + for x in {d..z} [app ] + test -d /drive_q [app ] + for x in {d..z} [app ] + test -d /drive_r [app ] + for x in {d..z} [app ] + test -d /drive_s [app ] + for x in {d..z} [app ] + test -d /drive_t [app ] + for x in {d..z} [app ] + test -d /drive_u [app ] + for x in {d..z} [app ] + test -d /drive_v [app ] + for x in {d..z} [app ] + test -d /drive_w [app ] + for x in {d..z} [app ] + test -d /drive_x [app ] + for x in {d..z} [app ] + test -d /drive_y [app ] + for x in {d..z} [app ] + test -d /drive_z [app ] + cd /config/wine/ [app ] + '[' false = true ']' [app ] + '[' -n 900 ']' [app ] + '[' -n 700 ']' [app ] + log_message 'WINE: Enabling Virtual Desktop mode with 900:900 aspect ratio' [app ] ++ date [app ] + echo 'Sat Jul 13 06:01:32 PM UTC 2024: WINE: Enabling Virtual Desktop mode with 900:900 aspect ratio' [app ] + winetricks vd=900x700 [app ] Executing mkdir -p /config [supervisor ] all services started. [app ] ------------------------------------------------------ [app ] 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. [app ] ------------------------------------------------------ [app ] Using winetricks 20210206 - sha256sum: 0f21da98811e0bfda16a7d6d6b8e860a9cedbd4e836c7dd9b02f068d3092ee2e with wine-9.0 and WINEARCH=win64 [app ] Executing wine regedit C:\windows\Temp/vd.reg [app ] Executing wine64 regedit C:\windows\Temp/vd.reg [app ] + '[' true = true ']' [app ] + echo 'Auto-updates are disabled. Backblaze won'\''t be updated.' [app ] Auto-updates are disabled. Backblaze won't be updated. [app ] + '[' -f '/config/wine/drive_c/Program Files (x86)/Backblaze/bzbui.exe' ']' [app ] + fetch_and_install [app ] + cd /config/wine/dosdevices/c:/ [app ] + '[' true = true ']' [app ] + log_message 'INSTALLER: FORCE_LATEST_UPDATE=true - downloading latest version' [app ] ++ date [app ] + echo 'Sat Jul 13 06:01:57 PM UTC 2024: INSTALLER: FORCE_LATEST_UPDATE=true - downloading latest version' [app ] + curl -L https://www.backblaze.com/win32/install_backblaze.exe --output install_backblaze.exe [app ] % Total % Received % Xferd Average Speed Time Time Time Current [app ] Dload Upload Total Spent Left Speed [app ] 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [app ] 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [app ] 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0 [app ] 18 28.8M 18 5326k 0 0 4199k 0 0:00:07 0:00:01 0:00:06 4199k [app ] 68 28.8M 68 19.6M 0 0 8843k 0 0:00:03 0:00:02 0:00:01 14.3M [app ] 100 28.8M 100 28.8M 0 0 9.9M 0 0:00:02 0:00:02 --:--:-- 14.4M [app ] + log_message 'INSTALLER: Starting install_backblaze.exe' [app ] ++ date [app ] + echo 'Sat Jul 13 06:02:01 PM UTC 2024: INSTALLER: Starting install_backblaze.exe' [app ] + '[' -f '/config/wine/drive_c/Program Files (x86)/Backblaze/bzbui.exe' ']' [app ] + WINEARCH=win64 [app ] + WINEPREFIX=/config/wine/ [app ] + wine64 install_backblaze.exe [app ] wine: Unhandled page fault on execute access to 00444000 at address 00443FFF (thread 00d8), starting debugger... [xvnc ] Sat Jul 13 18:02:28 2024 [xvnc ] Connections: accepted: /tmp/vnc.sock [xvnc ] SConnection: Client needs protocol version 3.8 [xvnc ] Sat Jul 13 18:02:29 2024 [xvnc ] SConnection: Client requests security type None(1) [xvnc ] VNCSConnST: Server default pixel format depth 24 (32bpp) little-endian rgb888 [xvnc ] VNCSConnST: Client pixel format depth 24 (32bpp) little-endian bgr888 [xvnc ] ComparingUpdateTracker: 0 pixels in / 0 pixels out [xvnc ] ComparingUpdateTracker: (1:-nan ratio) [app ] + handle_error 'INSTALLER: Failed to install Backblaze' [app ] + echo 'Error: INSTALLER: Failed to install Backblaze' [app ] + start_app [app ] ++ cat /config/wine/dosdevices/c:/ProgramData/Backblaze/bzdata/bzreports/bzserv_version.txt [app ] cat: '/config/wine/dosdevices/c:/ProgramData/Backblaze/bzdata/bzreports/bzserv_version.txt': No such file or directory [app ] + log_message 'STARTAPP: Starting Backblaze version ' [app ] ++ date [app ] + echo 'Sat Jul 13 06:02:36 PM UTC 2024: STARTAPP: Starting Backblaze version ' [app ] + sleep infinity [app ] + wine64 '/config/wine/drive_c/Program Files (x86)/Backblaze/bzbui.exe' -noquiet [app ] wine: failed to open "/config/wine/drive_c/Program Files (x86)/Backblaze/bzbui.exe": c0000135 ```
Backblaze setup log ``` Sat Jul 13 06:37:44 PM CEST 2024: WINE: Initialization done Sat Jul 13 06:37:44 PM CEST 2024: DRIVE: drive_f found but not mounted, mounting... Sat Jul 13 06:37:44 PM CEST 2024: WINE: Enabling Virtual Desktop mode with 900:900 aspect ratio Sat Jul 13 06:49:10 PM CEST 2024: INSTALLER: FORCE_LATEST_UPDATE=true - downloading latest version Sat Jul 13 06:49:15 PM CEST 2024: INSTALLER: Starting install_backblaze.exe Error: INSTALLER: Failed to install Backblaze Sat Jul 13 06:50:04 PM CEST 2024: STARTAPP: Starting Backblaze version Sat Jul 13 06:53:49 PM CEST 2024: WINE: DISABLE_VIRTUAL_DESKTOP=true - Virtual Desktop mode will be disabled Sat Jul 13 06:54:33 PM CEST 2024: INSTALLER: FORCE_LATEST_UPDATE=true - downloading latest version Sat Jul 13 06:54:38 PM CEST 2024: INSTALLER: Starting install_backblaze.exe Sat Jul 13 07:11:50 PM CEST 2024: WINE: DISABLE_VIRTUAL_DESKTOP=true - Virtual Desktop mode will be disabled Sat Jul 13 07:12:46 PM CEST 2024: INSTALLER: FORCE_LATEST_UPDATE=true - downloading latest version Sat Jul 13 07:12:55 PM CEST 2024: INSTALLER: Starting install_backblaze.exe Sat Jul 13 07:18:08 PM CEST 2024: WINE: Enabling Virtual Desktop mode with 900:900 aspect ratio Sat Jul 13 07:18:59 PM CEST 2024: INSTALLER: FORCE_LATEST_UPDATE=true - downloading latest version Sat Jul 13 07:19:02 PM CEST 2024: INSTALLER: Starting install_backblaze.exe Error: INSTALLER: Failed to install Backblaze Sat Jul 13 07:19:48 PM CEST 2024: STARTAPP: Starting Backblaze version ```
Wine backtrace ``` Unhandled exception: page fault on execute access to 0x00444000 in wow64 32-bit code (0x00443fff). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:00443fff ESP:0056ff54 EBP:0056ff68 EFLAGS:00010246( R- -- I Z- -P- ) EAX:7ffd1000 EBX:7ffd1000 ECX:00000000 EDX:0041405d ESI:00000000 EDI:00000000 Stack dump: 0x0056ff54: 7bbb9900 7ffd1000 7bd64d73 7bd64d73 0x0056ff64: 7ffd1000 0056ff80 7bd64d73 7ffd1000 0x0056ff74: 00000000 00000000 00000000 0056ffec 0x0056ff84: 7bd661d2 7bbb98f0 0041405d 7ffd1000 0x0056ff94: ffffffff 7bd798a0 7bd33b10 00000000 0x0056ffa4: 0056ffec 7ffd1000 00000000 00000000 Backtrace: =>0 0x00443fff in install_backblaze (+0x43fff) (0x0056ff68) 1 0x7bd64d73 in ntdll (+0x54d73) (0x0056ff80) 2 0x7bd661d2 in ntdll (+0x561d2) (0x0056ffec) 0x00443fff install_backblaze+0x43fff: add %dl, %al Modules: Module Address Debug info Name (31 modules) PE 400000- 470000 Export install_backblaze PE-Wine 79830000-79893000 Deferred imm32 PE-Wine 798b0000-798f0000 Deferred shcore PE-Wine 79900000-799de000 Deferred shlwapi PE-Wine 799f0000-7a672000 Deferred shell32 PE-Wine 7a690000-7a6c7000 Deferred win32u PE-Wine 7a6e0000-7a919000 Deferred gdi32 PE-Wine 7a930000-7a9bb000 Deferred sechost PE-Wine 7a9d0000-7ac68000 Deferred msvcrt PE-Wine 7ac80000-7ad6d000 Deferred advapi32 PE-Wine 7ad80000-7b25f000 Deferred user32 PE-Wine 7b270000-7b579000 Deferred ucrtbase PE-Wine 7b590000-7b617000 Deferred ws2_32 PE-Wine 7b630000-7bb71000 Deferred kernelbase PE-Wine 7bb90000-7bcf6000 Deferred kernel32 PE-Wine 7bd10000-7bfeb000 Dwarf-4 ntdll ELF 7e6ea000-7e71a000 Deferred libexpat.so.1 ELF 7e71a000-7e76a000 Deferred libfontconfig.so.1 ELF 7e76a000-7e78d000 Deferred libbrotlicommon.so.1 ELF 7e78d000-7e79b000 Deferred libbrotlidec.so.1 ELF 7e79b000-7e7b9000 Deferred libz.so.1 ELF 7e7b9000-7e7f9000 Deferred libpng16.so.16 ELF 7e7f9000-7e901000 Deferred libm.so.6 ELF 7eb9e000-7eba8000 Deferred libuuid.so.1 ELF 7eba8000-7ec75000 Deferred libfreetype.so.6 ELF 7ec7f000-7ee00000 Deferred win32u.so ELF f7bd0000-f7c86000 Export ntdll.so ELF f7c86000-f7ebb000 Deferred libc.so.6 ELF f7ebe000-f7ec5000 Deferred ws2_32.so ELF f7ec7000-f7eff000 Deferred ld-linux.so.2 ELF f7eff000-f7f04000 Deferred Threads: process tid prio name (all IDs are in hex) 00000020 start.exe 00000024 0 00000038 services.exe 0000003c 0 00000040 0 wine_rpcrt4_server 0000004c 0 wine_rpcrt4_io 00000070 0 wine_rpcrt4_io 00000080 0 wine_rpcrt4_io 0000009c 0 wine_rpcrt4_io 000000b4 0 wine_rpcrt4_io 000000c8 0 0000010c 0 wine_rpcrt4_io 00000044 winedevice.exe 00000048 0 00000054 0 00000058 0 wine_sechost_service 0000005c 0 00000060 0 000000c0 0 000000c4 0 00000068 winedevice.exe 0000006c 0 00000074 0 00000078 0 wine_sechost_service 0000007c 0 00000084 0 00000088 0 00000094 0 00000098 0 0000008c plugplay.exe 00000090 0 000000a0 0 000000a4 0 wine_sechost_service 000000a8 0 wine_rpcrt4_server 000000ac svchost.exe 000000b0 0 000000b8 0 000000bc 0 wine_sechost_service 000000cc conhost.exe 000000d0 0 000000d4 (D) C:\install_backblaze.exe 000000d8 0 <== 0000012c 0 000000e4 conhost.exe 000000e8 0 000000ec explorer.exe 000000f0 0 000000f4 0 000000f8 0 000000fc 0 wine_rpcrt4_server 00000104 rpcss.exe 00000108 0 00000114 0 00000118 0 wine_sechost_service 0000011c 0 wine_rpcrt4_server 00000120 0 wine_rpcrt4_server 00000124 0 wine_rpcrt4_io System information: Wine build: wine-9.0 Platform: x86_64 (guest: i386) Version: Windows 10 Host system: Linux Host version: 5.15.133.1-microsoft-standard-WSL2 ```
traktuner commented 4 months ago

Hey, thanks for trying it with WSL2 😬 My best guess ist, that everything located in the wineprefix has to be owned by the user which is used by the application, and since you can't translate the windows permission 1:1 to the Linux permissions, this is probably the issue here. Also, a wineprefix consists of a lot of symlinks, which NTFS has to support. WINE is designed to run Linux filesystems.