http://bugs.winehq.org/show_bug.cgi?id=59824 Bug ID: 59824 Summary: Studio One (versions 6 and 7, Windows x64 builds) crashes immediately when attempting to drag any element on the arrangement timeline. Product: Wine Version: 11.10 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: normal Priority: P2 Component: dwmapi Assignee: wine-bugs@list.winehq.org Reporter: ilian.imc@gmail.com Distribution: --- Created attachment 81094 --> http://bugs.winehq.org/attachment.cgi?id=81094 minidump from crash Studio One (versions 6 and 7, Windows x64 builds) crashes immediately when attempting to drag any element on the arrangement timeline. The crash is caused by Wine's `dcomp.dll` `device_CreateSurface` stub returning a null/invalid surface, which `cclgui.dll` dereferences during drag visual rendering, resulting in an access violation. ## Application Details - **Application:** PreSonus Studio One (versions 6 and 7) - **Executable:** `Studio One.exe` - **Architecture:** 64-bit (Win x64) --- ## Environment - **Wine version:** wine-staging 11.10 - **Distribution:** Debian GNU/Linux 13 (Trixie) - **Kernel:** 7.0.10+deb13-rt-amd64 (RT kernel) - **Desktop:** KDE Plasma 6, Wayland (XWayland) - **GPU:** AMD Radeon Graphics (RADV RENOIR, APU) - **Mesa/RADV:** 25.0.7 - **DXVK:** v2.3.1 --- ## Steps to Reproduce 1. Install Studio One 7 (Windows build) under Wine 2. Copy `UIAnimation.dll` from a Windows installation into the Wine prefix (`drive_c/windows/system32/`) and set as native, builtin. Without it the app displays "This application requires Windows 10 or later" and refuses to start. This is consistent with `cclgui.dll` using WAM COM class presence as a Windows 10 feature detection check at startup. 3. Launch `Studio One.exe` 4. Open any project containing at least one audio clip on the timeline 5. Click and attempt to drag any clip/element on the arrangement timeline **Result:** GUI freezes immediately, access violation occurs, application crashes and writes a minidump. **Expected:** Element moves with the mouse cursor as on Windows. --- ## Root Cause Analysis (Claude was used) ### Crash address and call chain The crash is an **access violation at `0x100000012d`** (unmapped memory). This address is not inside any loaded module. The call chain reconstructed from the minidump stack (thread `0x208`) is entirely within `cclgui.dll`: ``` kernelbase.dll+0x71e6d (UnhandledExceptionFilter) dbghelp.dll+0x4993 (MiniDumpWriteDump) cclgui.dll+0xc4a10 ← top of actual call chain cclgui.dll+0x4a1d48 cclgui.dll+0x523238 cclgui.dll+0x523190 cclgui.dll+0x523170 cclgui.dll+0x5231f8 cclgui.dll+0x5231c8 ← deepest frame user32.dll+0xc0000 (message dispatch — drag event) ``` ### Register state at crash ``` RIP = ntdll.dll+0xec64 (already in exception handler) RDX = 0x0 ← NULL pointer (2nd function argument) RBP = 0x0 ← NULL pointer RDI = 0xffffffffffffffff RSP = 0x1097a8 (Wine signal stack — very low address) ``` `RDX = NULL` at crash time indicates `cclgui.dll` received a null surface pointer as the second argument to a render call, then attempted to call a virtual method through it, jumping to `0x100000000 + vtable_offset_0x12d` — unmapped memory. ### DirectComposition is the root cause The WINEDEBUG log immediately before the crash shows: ``` 0208:fixme:dcomp:device_CreateSurface iface 0x339EF90, width 1, height 816, format 0x57, alpha_mode 0x1, surface 0x10F668 stub! 0208:fixme:dcomp:visual_SetContent iface 0x3230AE20, content 0000000000000000 semi-stub! ← NULL content 0208:fixme:dcomp:visual_SetClip ... stub! 0208:fixme:dcomp:visual_SetEffect ... stub! 0208:fixme:dcomp:device_Commit ... semi-stub! [crash follows] ``` When a drag begins, Studio One calls `IDCompositionDevice::CreateSurface` to create a drag ghost/shadow visual. Because this is a stub that does not return a real surface object, `IDCompositionVisual::SetContent` is subsequently called with `content = NULL`. `cclgui.dll` then passes this null content pointer into its D2D rendering loop, which dereferences it and access-violations. ### Hard import dependency confirmed Attempting to disable dcomp via DllOverrides produces: ``` 020c:err:module:import_dll Library dcomp.dll (which is needed by cclgui.dll) not found 020c:err:module:import_dll Library cclgui.dll (which is needed by Studio One.exe) not found 020c:err:module:loader_init Importing dlls for Studio One.exe failed, status c0000135 ``` `cclgui.dll` has a **hard static import** on `dcomp.dll`. There is no fallback path. ### Additional context - The `DragSourceHelper2_InitializeFromBitmap` stub fires simultaneously, confirming the drag visual creation path - 1609 `d2d_text_renderer_DrawGlyphRun Ignoring options 0x2` messages flood the log during drag, before and after the crash — the D2D text renderer continues to be called even after the exception is caught, until the second fault (`0x80000003`) terminates the app - `AvSetMmThreadCharacteristicsW("Pro Audio")` is also stubbed (always returns `0x12345678`) but this appears to be a timing coincidence — the MMCSS calls occur at startup and on every thread creation, not exclusively on drag - Tested with VST support completely disabled — no change - Tested with `WINEDLLOVERRIDES="d2d1=b"`, `"dwrite=b"`, virtual desktop mode — no change - The bug affects both Studio One 6 and Studio One 7 — not a regression in 7.2.1 - `UIAnimation.dll` (Windows Animation Manager / WAM) and `dcomp.dll` are used together as an integrated animation pipeline — WAM generates animation curves consumed directly by DirectComposition. The two missing implementations are not independent; fixing dcomp in isolation may not be sufficient if WAM animation primitives are also fed into the dcomp visual tree during drag --- ## Relevant Wine debug output ### Captured with `WINEDEBUG=fixme+dcomp,err+seh` ``` 0208:fixme:dcomp:device_CreateSurface iface 000000000339EF90, width 1, height 816, format 0x57, alpha_mode 0x1, surface 000000000010F668 stub! 0208:fixme:dcomp:visual_SetContent iface 000000003230AE20, content 0000000000000000 semi-stub! 0208:fixme:dcomp:visual_SetClip iface 000000003230AE20, rect 000000000010F670 stub! 0208:fixme:dcomp:visual_SetOffsetY iface 000000003230AE20, offset_y 0.000000 stub! 0208:fixme:dcomp:device_CreateEffectGroup iface 000000000339EF90, effect_group 000000003358F3F0 stub! 0208:fixme:dcomp:visual_SetEffect iface 000000003230AE20, effect 0000000000000000 stub! 0208:fixme:dcomp:device_Commit iface 000000000339EF90 semi-stub! 0208:err:seh:user_callback_handler ignoring exception c0000005 0208:err:seh:user_callback_handler ignoring exception 80000003 ``` --- ## Minidump analysis summary - **Exception code:** `0xc0000005` (ACCESS_VIOLATION) - **Exception address:** `0x100000012d` (not in any loaded module) - **Faulting thread:** `0x208` (GUI/render thread) - **Modules loaded:** 155 total, including `cclgui.dll`, `dcomp.dll`, `d2d1.dll`, `dxgi.dll` (DXVK 2.3.1), `winevulkan.dll`, `wineasio64.dll` - **dcomp.dll** is present and loads successfully — the crash is not a missing DLL but a stub returning null --- ## Related - Similar dcomp stub crash in Dorico (resolved by returning fake S_OK from SetContent/SetRoot/Commit): https://gitlab.winehq.org/wine/wine/-/merge_requests/9839 --- ## Attachments - `Studio One_7_2_1_106594_Win x64_20260605_102312691.dmp` — minidump from crash (246KB) --- *Note: `UIAnimation.dll` used in testing is the native Windows 11 24H2 build copied from a Windows installation.* -- 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.