3 Nov
2025
3 Nov
'25
8:34 a.m.
Within the NtUserUpdateLayeredWindow function, there exists the following call sequence: window_surface_lock()->NtGdiAlphaBlend()->window_surface_unlock(). However, the implementation of the NtGdiAlphaBlend() function calls the windrv_GetImage() function, which internally invokes lock_surface() and unlock_surface(). In this situation, window_surface_lock() is called first to acquire a lock. When lock_surface() is subsequently called to acquire the same lock, the initial lock has not yet been released, ultimately resulting in a deadlock. Signed-off-by: Zhao Yi <zhaoyi(a)uniontech.com> -- v3: shell32: Fix a memory leak issue. https://gitlab.winehq.org/wine/wine/-/merge_requests/9180