On Sun Feb 22 11:43:11 2026 +0000, Twaik Yont wrote:
Ok, I was wrong about backtraces. I can have them. I agree with your point about not adding memory barriers without understanding the underlying issue. After further testing, it looks like the barrier is not addressing the root cause. The failure is strongly timing-dependent: adding enough TRACE/logging in a few places often makes it disappear, and removing the software copy from the intermediate buffer into the Android rendering buffer also makes it disappear. So the barrier seems to at most mask the problem by changing timing, rather than fixing it. The crash `void user_check_not_lock(void): assertion "0" failed` consistently happens in `NtUserCreateWindowEx` after the `USER` lock was taken in `NtUserSetWindowPos`. I do not yet understand why the lock is still held at that point (missed release vs unexpected reentrancy vs call ordering / dispatch issue), but it is clearly a locking invariant violation and likely not specific to the Android backend. For debugging purposes, I modified the code to print two backtraces into `logcat` (Android logging subsystem): 1) the backtrace from the last `user_lock` call. 2) the backtrace from the failing `user_check_not_lock` call. Unfortunately, the resulting traces do not clearly indicate where the contract is being violated. <details> <summary>Log</summary> I added symbolization from in-process addresses to function names and source locations. However, these may not exactly match the current state of the upstream Git repository, since I had to apply a few additional local modifications to make the build sufficiently functional and capable of producing logs. ``` ---------------------------- PROCESS STARTED (7705) for package org.winehq.wine ---------------------------- 12:53:44.258 OpenGLRenderer I Initialized EGL, version 1.4 12:53:44.258 OpenGLRenderer D Swap behavior 1 12:53:45.955 WineOut D 0054:err:dnsapi:DllMain No libresolv support, expect problems 12:53:46.227 WineOut D 00a8:err:ntoskrnl:ZwLoadDriver failed to create driver L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\winebth": c00000e5 12:53:46.230 WineOut D 003c:fixme:service:scmdatabase_autostart_services Auto-start service L"winebth" failed to start: 1359 12:53:46.581 WineOut D 0024:trace:explorer:manage_desktop display guid {4df6ccdc-412d-4953-8076-871c3a2839ad} 12:53:46.596 WineOut D 0024:trace:android:enum_libs found libhardware at 0xa9d6a034 12:53:46.596 WineOut D 0024:trace:android:init_gralloc got module 0xa8155008 ver 0.1 id "gralloc" name "Graphics Memory Allocator Module" author "The Android Open Source Project" 12:53:46.596 WineOut D 0024:trace:explorer:load_graphics_driver display {4df6ccdc-412d-4953-8076-871c3a2839ad} driver L"wineandroid.drv" 12:53:46.598 WineOut D 00d8:trace:android:device_thread starting process 20 12:53:46.599 wine I create desktop view 12:53:46.607 wine I create hwnd fffffffd 12:53:46.622 wine I config_changed: 160 dpi 12:53:46.623 wine I desktop size 1024x696 12:53:46.623 wine I desktop_changed: 1024x696 12:53:46.623 WineOut D 0024:trace:android:process_events CONFIG_CHANGED dpi 160 12:53:46.628 WineOut D 0024:trace:android:process_events DESKTOP_CHANGED 1024x696 12:53:46.673 WineOut D 0024:err:wgl:egldrv_init_pixel_formats Failed to get any configs from eglChooseConfig 12:53:46.795 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x10020, swp_flags 0x14, shaped 0, rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } 12:53:46.796 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x10020, swp_flags 0x10, shaped 0, rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } 12:53:46.797 WineOut D 0024:trace:android:ANDROID_CreateWindow 0x10020 12:53:46.797 WineOut D 0024:trace:android:create_ioctl_window -> 0xadc330e0 0x10020 opengl=0 12:53:46.806 WineOut D 00d8:trace:android:createWindow_ioctl hwnd 00010020 opengl 0 parent fffffffd 12:53:46.806 wine I create hwnd 00010020 12:53:46.808 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x10028, swp_flags 0x14, shaped 0, rects { window (0,0)-(100,100), client (0,0)-(100,100), visible (0,0)-(100,100) } 12:53:46.809 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x10028, swp_flags 0x10, shaped 0, rects { window (0,0)-(100,100), client (0,0)-(100,100), visible (0,0)-(100,100) } 12:53:46.809 WineOut D 0024:trace:android:ANDROID_CreateWindow 0x10028 12:53:46.810 WineOut D 0024:trace:explorer:desktop_wnd_proc got msg 0080 wp 1 lp 1002a 12:53:46.811 WineOut D 0024:trace:explorer:desktop_wnd_proc got msg 000c wp 0 lp 34ad08 12:53:46.811 WineOut D 0024:trace:explorer:desktop_wnd_proc got msg 0046 wp 0 lp 31f2a4 12:53:46.812 WineOut D 0024:trace:explorer:desktop_wnd_proc got msg 0083 wp 1 lp 31f270 12:53:46.812 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x10020, swp_flags 0x104a, shaped 0, rects { window (0,0)-(1024,696), client (0,0)-(1024,696), visible (0,0)-(1024,696) } 12:53:46.813 WineOut D 0024:trace:android:ANDROID_CreateWindowSurface hwnd 0x10020, layered 0, surface_rect (0,0)-(1024,768), surface 0x21f3b4 12:53:46.825 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x10020 new_rects { window (0,0)-(1024,696), client (0,0)-(1024,696), visible (0,0)-(1024,696) } style 96000000 owner 0x0 after 0x0 flags 8000116a 12:53:46.825 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00010020 win (0,0)-(1024,696) client (0,0)-(1024,696) visible (0,0)-(1024,696) style 96000000 flags 8000116a after 00000000 owner 00000000 12:53:46.825 wine I pos changed hwnd 00010020 after 00000000 owner 00000000 style 96000000 win Rect(0, 0 - 1024, 696) client Rect(0, 0 - 1024, 696) visible Rect(0, 0 - 1024, 696) flags 8000116a 12:53:46.827 WineOut D 0024:trace:explorer:desktop_wnd_proc got msg 030f wp 0 lp 0 12:53:46.827 WineOut D 0024:trace:explorer:desktop_wnd_proc got msg 0086 wp 0 lp 0 12:53:46.828 WineOut D 0024:trace:explorer:desktop_wnd_proc got msg 0006 wp 1 lp 0 12:53:46.828 WineOut D 0024:trace:explorer:desktop_wnd_proc got msg 0007 wp 0 lp 0 12:53:46.836 wine I onSurfaceTextureAvailable win 00010020 1024x696 whole 12:53:46.836 wine I set window surface hwnd 00010020 Surface(name=android.graphics.SurfaceTexture@501150c)/@0x927ce55 12:53:46.836 wine I surface_changed: 0x10020 whole 1024x696 12:53:46.839 WineOut D 0024:trace:explorer:desktop_wnd_proc got msg 0047 wp 0 lp 31f2a4 12:53:46.839 WineOut D 0024:trace:explorer:desktop_wnd_proc got msg 0005 wp 0 lp 2b80400 12:53:46.840 WineOut D 0024:trace:explorer:initialize_display_settings Device L"\\\\.\\DISPLAY1" current display mode 1024x696 32bits 60Hz rotated 0 degrees at (0,0). 12:53:46.840 WineOut D 0024:trace:explorer:initialize_display_settings Device L"\\\\.\\DISPLAY2" current display mode 0x0 32bits 60Hz rotated 0 degrees at (0,0). 12:53:46.841 WineOut D 0024:err:system:NtUserChangeDisplaySettings Changing (null) display settings returned -2.
0024:err:explorer:initialize_display_settings Failed to set primary display settings. 12:53:46.848 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x10032, swp_flags 0x14, shaped 0, rects { window (0,0)-(194,53), client (0,0)-(194,53), visible (0,0)-(194,53) } 0024:trace:android:create_ioctl_window -> 0xadc33b80 0x10032 opengl=0 12:53:46.849 wine I create hwnd 00010032 12:53:46.849 WineOut D 00d8:trace:android:createWindow_ioctl hwnd 00010032 opengl 0 parent fffffffd 12:53:46.851 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x10032 new_rects { window (0,0)-(194,53), client (0,0)-(194,53), visible (0,0)-(194,53) } style 04c00000 owner 0x0 after 0x0 flags 00000014 12:53:46.851 wine I pos changed hwnd 00010032 after 00000000 owner 00000000 style 04c00000 win Rect(0, 0 - 194, 53) client Rect(0, 0 - 194, 53) visible Rect(0, 0 - 194, 53) flags 00000014 12:53:46.851 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00010032 win (0,0)-(194,53) client (0,0)-(194,53) visible (0,0)-(194,53) style 04c00000 flags 00000014 after 00000000 owner 00000000
00e4:trace:explorer:display_settings_restorer_wndproc got msg 0024 wp 0 lp 1f8fb58 12:53:46.853 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x10032, swp_flags 0x10, shaped 0, rects { window (0,0)-(194,53), client (3,46)-(191,50), visible (0,0)-(194,53) } 12:53:46.853 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x10032 new_rects { window (0,0)-(194,53), client (3,46)-(191,50), visible (0,0)-(194,53) } style 04c00000 owner 0x0 after 0x0 flags 00000010 12:53:46.853 WineOut D 00e4:trace:android:ANDROID_WindowPosChanging hwnd 0x10034, swp_flags 0x14, shaped 0, rects { window (0,0)-(194,53), client (0,0)-(194,53), visible (0,0)-(194,53) } 12:53:46.854 wine I pos changed hwnd 00010032 after 00000000 owner 00000000 style 04c00000 win Rect(0, 0 - 194, 53) client Rect(3, 46 - 191, 50) visible Rect(0, 0 - 194, 53) flags 00000010 12:53:46.854 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00010032 win (0,0)-(194,53) client (3,46)-(191,50) visible (0,0)-(194,53) style 04c00000 flags 00000010 after 00000000 owner 00000000 12:53:46.855 WineOut D 0024:trace:android:ANDROID_CreateWindow 0x10032 12:53:46.856 WineOut D 00e0:trace:android:ANDROID_WindowPosChanging hwnd 0x1002e, swp_flags 0x14, shaped 0, rects { window (0,0)-(194,53), client (0,0)-(194,53), visible (0,0)-(194,53) } 12:53:46.857 WineOut D 00e0:trace:android:create_ioctl_window -> 0xadc34800 0x1002e opengl=0 12:53:46.857 WineOut D 00e4:trace:android:create_ioctl_window -> 0x7d988000 0x10034 opengl=0 12:53:46.857 wine I create hwnd 00010034 12:53:46.857 WineOut D 00d8:trace:android:createWindow_ioctl hwnd 00010034 opengl 0 parent fffffffd 12:53:46.858 WineOut D 00d8:trace:android:createWindow_ioctl hwnd 0001002e opengl 0 parent fffffffd 12:53:46.858 wine I create hwnd 0001002e 12:53:46.859 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x30038, swp_flags 0x14, shaped 0, rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } 12:53:46.864 WineOut D 0024:trace:android:create_ioctl_window -> 0xadc33c20 0x30038 opengl=0 12:53:46.864 WineOut D 00d8:trace:android:createWindow_ioctl hwnd 00030038 opengl 0 parent 00010020
00e4:trace:android:ANDROID_WindowPosChanged win 0x10034 new_rects { window (0,0)-(194,53), client (0,0)-(194,53), visible (0,0)-(194,53) } style 04c00000 owner 0x0 after 0x0 flags 00000014 12:53:46.864 wine I create hwnd 00030038 12:53:46.864 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00010034 win (0,0)-(194,53) client (0,0)-(194,53) visible (0,0)-(194,53) style 04c00000 flags 00000014 after 00000000 owner 00000000 12:53:46.864 wine I pos changed hwnd 00010034 after 00000000 owner 00000000 style 04c00000 win Rect(0, 0 - 194, 53) client Rect(0, 0 - 194, 53) visible Rect(0, 0 - 194, 53) flags 00000014 12:53:46.865 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x30038 new_rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } style 84000000 owner 0x0 after 0x0 flags 0000003c 12:53:46.865 WineOut D 00e4:trace:explorer:display_settings_restorer_wndproc got msg 0081 wp 0 lp 1f8fb0c 12:53:46.865 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00030038 win (0,0)-(0,0) client (0,0)-(0,0) visible (0,0)-(0,0) style 84000000 flags 0000003c after 00000000 owner 00000000 12:53:46.865 wine I pos changed hwnd 00030038 after 00000000 owner 00000000 style 84000000 win Rect(0, 0 - 0, 0) client Rect(0, 0 - 0, 0) visible Rect(0, 0 - 0, 0) flags 0000003c 12:53:46.866 WineOut D 00e0:trace:android:ANDROID_WindowPosChanged win 0x1002e new_rects { window (0,0)-(194,53), client (0,0)-(194,53), visible (0,0)-(194,53) } style 04c00000 owner 0x0 after 0x0 flags 00000014 12:53:46.867 wine I pos changed hwnd 0001002e after 00000000 owner 00000000 style 04c00000 win Rect(0, 0 - 194, 53) client Rect(0, 0 - 194, 53) visible Rect(0, 0 - 194, 53) flags 00000014 12:53:46.867 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 0001002e win (0,0)-(194,53) client (0,0)-(194,53) visible (0,0)-(194,53) style 04c00000 flags 00000014 after 00000000 owner 00000000
00e4:trace:explorer:display_settings_restorer_wndproc got msg 0083 wp 0 lp 1f8fb70 12:53:46.867 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x1003e, swp_flags 0x14, shaped 0, rects { window (0,0)-(1,1), client (0,0)-(1,1), visible (0,0)-(1,1) } 12:53:46.867 WineOut D 0024:trace:android:create_ioctl_window -> 0xadc33cc0 0x1003e opengl=0 12:53:46.868 wine I create hwnd 0001003e 12:53:46.868 WineOut D 00d8:trace:android:createWindow_ioctl hwnd 0001003e opengl 0 parent 00010020 12:53:46.869 WineOut D 00e4:trace:android:ANDROID_WindowPosChanging hwnd 0x10034, swp_flags 0x10, shaped 0, rects { window (0,0)-(194,53), client (3,46)-(191,50), visible (0,0)-(194,53) } 12:53:46.869 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x1003e new_rects { window (0,0)-(1,1), client (0,0)-(1,1), visible (0,0)-(1,1) } style 8c000000 owner 0x0 after 0x0 flags 0000003c 12:53:46.870 wine I pos changed hwnd 0001003e after 00000000 owner 00000000 style 8c000000 win Rect(0, 0 - 1, 1) client Rect(0, 0 - 1, 1) visible Rect(0, 0 - 1, 1) flags 0000003c 12:53:46.870 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 0001003e win (0,0)-(1,1) client (0,0)-(1,1) visible (0,0)-(1,1) style 8c000000 flags 0000003c after 00000000 owner 00000000 12:53:46.870 WineOut D 00e4:trace:android:ANDROID_WindowPosChanged win 0x10034 new_rects { window (0,0)-(194,53), client (3,46)-(191,50), visible (0,0)-(194,53) } style 04c00000 owner 0x0 after 0x0 flags 00000010 12:53:46.870 wine I pos changed hwnd 00010034 after 00000000 owner 00000000 style 04c00000 win Rect(0, 0 - 194, 53) client Rect(3, 46 - 191, 50) visible Rect(0, 0 - 194, 53) flags 00000010 12:53:46.870 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00010034 win (0,0)-(194,53) client (3,46)-(191,50) visible (0,0)-(194,53) style 04c00000 flags 00000010 after 00000000 owner 00000000 12:53:46.871 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x1003e, swp_flags 0x10, shaped 0, rects { window (0,0)-(1,1), client (0,0)-(1,1), visible (0,0)-(1,1) } 12:53:46.871 WineOut D 00e4:trace:explorer:display_settings_restorer_wndproc got msg 0001 wp 0 lp 1f8fb0c 12:53:46.871 WineOut D 00e4:trace:android:ANDROID_CreateWindow 0x10034 12:53:46.872 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x1003e new_rects { window (0,0)-(1,1), client (0,0)-(1,1), visible (0,0)-(1,1) } style 8c000000 owner 0x0 after 0x0 flags 00000018 12:53:46.872 wine I pos changed hwnd 0001003e after 00000000 owner 00000000 style 8c000000 win Rect(0, 0 - 1, 1) client Rect(0, 0 - 1, 1) visible Rect(0, 0 - 1, 1) flags 00000018 12:53:46.872 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 0001003e win (0,0)-(1,1) client (0,0)-(1,1) visible (0,0)-(1,1) style 8c000000 flags 00000018 after 00000000 owner 00000000 12:53:46.873 WineOut D 00e0:trace:android:release_ioctl_window 0xadc34800 0x1002e 12:53:46.873 wine I destroy hwnd 0001002e 12:53:46.873 WineOut D 00d8:trace:android:destroyWindow_ioctl hwnd 0001002e opengl 0 12:53:46.874 WineOut D 0024:trace:android:ANDROID_CreateWindow 0x1003e 00e0:trace:explorer:clipboard_thread failed to create clipboard window err 0 12:53:46.875 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x30038, swp_flags 0x10, shaped 0, rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } 12:53:46.876 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x30038 new_rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } style 84000000 owner 0x0 after 0x0 flags 00000018 12:53:46.877 wine I pos changed hwnd 00030038 after 00000000 owner 00000000 style 84000000 win Rect(0, 0 - 0, 0) client Rect(0, 0 - 0, 0) visible Rect(0, 0 - 0, 0) flags 00000018 12:53:46.877 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00030038 win (0,0)-(0,0) client (0,0)-(0,0) visible (0,0)-(0,0) style 84000000 flags 00000018 after 00000000 owner 00000000 12:53:46.877 WineOut D 0024:trace:android:ANDROID_CreateWindow 0x30038 12:53:46.891 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x20030, swp_flags 0x14, shaped 0, rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } 12:53:46.891 WineOut D 0024:trace:android:create_ioctl_window -> 0xadc33d60 0x20030 opengl=0 12:53:46.892 wine I create hwnd 00020030 12:53:46.892 WineOut D 00d8:trace:android:createWindow_ioctl hwnd 00020030 opengl 0 parent 00030038 12:53:46.893 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x20030 new_rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } style 4000000b owner 0x0 after 0x0 flags 00000014 12:53:46.893 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00020030 win (0,0)-(0,0) client (0,0)-(0,0) visible (0,0)-(0,0) style 4000000b flags 00000014 after 00000000 owner 00000000 12:53:46.893 wine I pos changed hwnd 00020030 after 00000000 owner 00000000 style 4000000b win Rect(0, 0 - 0, 0) client Rect(0, 0 - 0, 0) visible Rect(0, 0 - 0, 0) flags 00000014 12:53:46.895 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x20030, swp_flags 0x10, shaped 0, rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } 12:53:46.896 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x20030 new_rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } style 4000000b owner 0x0 after 0x0 flags 00000010 12:53:46.896 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00020030 win (0,0)-(0,0) client (0,0)-(0,0) visible (0,0)-(0,0) style 4000000b flags 00000010 after 00000000 owner 00000000 12:53:46.896 wine I pos changed hwnd 00020030 after 00000000 owner 00000000 style 4000000b win Rect(0, 0 - 0, 0) client Rect(0, 0 - 0, 0) visible Rect(0, 0 - 0, 0) flags 00000010 12:53:46.897 WineOut D 0024:trace:android:ANDROID_CreateWindow 0x20030 12:53:46.898 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x30038, swp_flags 0x181f, shaped 0, rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } 12:53:46.899 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x30038 new_rects { window (0,0)-(0,0), client (0,0)-(0,0), visible (0,0)-(0,0) } style 84000000 owner 0x0 after 0x0 flags 0000181f 12:53:46.899 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00030038 win (0,0)-(0,0) client (0,0)-(0,0) visible (0,0)-(0,0) style 84000000 flags 0000181f after 00000000 owner 00000000 12:53:46.899 wine I pos changed hwnd 00030038 after 00000000 owner 00000000 style 84000000 win Rect(0, 0 - 0, 0) client Rect(0, 0 - 0, 0) visible Rect(0, 0 - 0, 0) flags 0000181f 12:53:46.901 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x30038, swp_flags 0x54, shaped 0, rects { window (0,665)-(1024,696), client (0,665)-(1024,696), visible (0,665)-(1024,696) } 12:53:46.901 WineOut D 0024:trace:android:ANDROID_CreateWindowSurface hwnd 0x30038, layered 0, surface_rect (0,0)-(1024,128), surface 0x21f3b4 12:53:46.903 WineOut D 0024:trace:android:ANDROID_WindowPosChanged win 0x30038 new_rects { window (0,665)-(1024,696), client (0,665)-(1024,696), visible (0,665)-(1024,696) } style 94000000 owner 0x0 after 0x0 flags 00000174 12:53:46.903 WineOut D 00d8:trace:android:windowPosChanged_ioctl hwnd 00030038 win (0,665)-(1024,696) client (0,665)-(1024,696) visible (0,665)-(1024,696) style 94000000 flags 00000174 after 00000000 owner 00000000 12:53:46.903 wine I pos changed hwnd 00030038 after 00000000 owner 00000000 style 94000000 win Rect(0, 665 - 1024, 696) client Rect(0, 665 - 1024, 696) visible Rect(0, 665 - 1024, 696) flags 00000174 12:53:46.905 wine I onSurfaceTextureAvailable win 00030038 1024x31 whole 12:53:46.905 wine I set window surface hwnd 00030038 Surface(name=android.graphics.SurfaceTexture@318d95b)/@0xb3075f8 12:53:46.905 wine I surface_changed: 0x30038 whole 1024x31 12:53:46.909 WineOut D 0024:trace:android:ANDROID_WindowPosChanging hwnd 0x20030, swp_flags 0x1056, shaped 0, rects { window (0,0)-(89,31), client (0,0)-(89,31), visible (0,0)-(89,31) } 12:53:46.933 WineOut D 0024:trace:android:dequeueBuffer hwnd 0x30038, buffer 0x730061 0x0 stride 0 fmt 2103970701 usage -1379783872 fence -1 12:53:46.940 WineOut D 0024:err:system:user_check_not_lock BUG: holding USER lock in thread 36, current thread 36 status text: NOT UNLOCKING! 0xadc462a0 0 else 12:53:46.940 WineOut D old ts_ms=4013020 frames=9 #0 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/win32u.so+0x167353 (0x7d764353) -> backtrace_unwind | /home/twaik/.termux-build/wine-stable/src/dlls/win32u/sysparams.c:431 #1 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/win32u.so+0x19eaef (0x7d79baef) -> get_user_handle_ptr | /home/twaik/.termux-build/wine-stable/src/dlls/win32u/window.c:203 #2 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/win32u.so+0x1a6f04 (0x7d7a3f04) -> get_win_ptr | /home/twaik/.termux-build/wine-stable/src/dlls/win32u/window.c:466 #3 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/win32u.so+0x1a1c76 (0x7d79ec76) -> set_window_pos | /home/twaik/.termux-build/wine-stable/src/dlls/win32u/window.c:3928 #4 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/win32u.so+0x1a5a0f (0x7d7a2a0f) -> NtUserSetWindowPos | /home/twaik/.termux-build/wine-stable/src/dlls/win32u/window.c:4032 #5 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/ntdll.so+0x51d06 (0xa82a5d06) -> __wine_syscall_dispatcher | signal_i386.c:? #6 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/ntdll.so+0x50f21 (0xa82a4f21) -> server_init_process_done | /home/twaik/.termux-build/wine-stable/src/dlls/ntdll/unix/server.c:1769 #7 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/ntdll.so+0x419a7 (0xa82959a7) -> start_main_thread | /home/twaik/.termux-build/wine-stable/src/dlls/ntdll/unix/loader.c:1878 #8 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/ntdll.so+0x3f185 (0xa8293185) -> wine_init_jni | /home/twaik/.termux-build/wine-stable/src/dlls/ntdll/unix/loader.c:1974 12:53:46.940 WineOut D new ts_ms=4013050 frames=9 #0 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/win32u.so+0x1673fe (0x7d7643fe) -> backtrace_unwind | /home/twaik/.termux-build/wine-stable/src/dlls/win32u/sysparams.c:431 #1 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/win32u.so+0x1674e4 (0x7d7644e4) -> user_check_not_lock | /home/twaik/.termux-build/wine-stable/src/dlls/win32u/sysparams.c:489 #2 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/win32u.so+0xf076f (0x7d6ed76f) -> call_message_hooks | /home/twaik/.termux-build/wine-stable/src/dlls/win32u/hook.c:436 #3 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/win32u.so+0xeff10 (0x7d6ecf10) -> call_hooks | /home/twaik/.termux-build/wine-stable/src/dlls/win32u/hook.c:482 #4 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/win32u.so+0x1ae007 (0x7d7ab007) -> NtUserCreateWindowEx | /home/twaik/.termux-build/wine-stable/src/dlls/win32u/window.c:5759 #5 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/ntdll.so+0x51d06 (0xa82a5d06) -> __wine_syscall_dispatcher | signal_i386.c:? #6 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/ntdll.so+0x50f21 (0xa82a4f21) -> server_init_process_done | /home/twaik/.termux-build/wine-stable/src/dlls/ntdll/unix/server.c:1769 #7 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/ntdll.so+0x419a7 (0xa82959a7) -> start_main_thread | /home/twaik/.termux-build/wine-stable/src/dlls/ntdll/unix/loader.c:1878 #8 /data/data/com.termux/files/usr/opt/wine-stable/lib/wine/i386-unix/ntdll.so+0x3f185 (0xa8293185) -> wine_init_jni | /home/twaik/.termux-build/wine-stable/src/dlls/ntdll/unix/loader.c:1974
/home/twaik/.termux-build/wine-stable/src/dlls/win32u/sysparams.c:492: void user_check_not_lock(void): assertion "0" failed 12:53:46.940 libc A /home/twaik/.termux-build/wine-stable/src/dlls/win32u/sysparams.c:492: void user_check_not_lock(void): assertion "0" failed 12:53:46.940 WineOut D wine: Assertion failed at address AE2E8A9D (thread 0024), starting debugger... ---------------------------- PROCESS ENDED (7705) for package org.winehq.wine ---------------------------- ``` </details> At this point, I suspect this may require deeper insight into USER locking rules and window management expectations. @rbernon, I would appreciate any guidance on what invariants might be getting broken here or which code paths would be worth inspecting first. I would greatly appreciate any hints on where to look next or which areas would be most relevant to investigate.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/9874#note_130165