core: app crashes when resizing the window on linux/nvidia #1221

Open
opened 2024-06-26 19:27:29 +00:00 by terraquad · 4 comments
terraquad commented 2024-06-26 19:27:29 +00:00 (Migrated from github.com)

I set up a basic project just as described, but when launching and resizing the window, the app crashes:

$ zig build run
DRM kernel driver 'nvidia-drm' in use. NVK requires nouveau.
Error: ../src/nouveau/vulkan/nvk_physical_device.c:1109: VK_ERROR_INCOMPATIBLE_DRIVER
info(mach): found Vulkan backend on Discrete GPU adapter: NVIDIA GeForce RTX 3060 Laptop GPU, NVIDIA: 550.90.07 550.90.7.0

info(mach): gamemode: activated
error(mach): mach: device lost: Wasn't able to recuperate the surface after a VK_ERROR_OUT_OF_DATE_KHR
 - While handling unexpected error type Internal when allowed errors are (Validation|DeviceLost).
    at GetCurrentTextureInternal (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/SwapChainVk.cpp:669)
    at GetCurrentTexture (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/SwapChain.cpp:196)
    at GetCurrentTextureView (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/SwapChain.cpp:213)

thread 40035 panic: mach: device lost
/home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/core/platform/glfw/Core.zig:129:5: 0x1933aab in deviceLostCallback (lodecraft)
    @panic("mach: device lost");
    ^
???:?:?: 0x12ec72e in ??? (???)
???:?:?: 0x13019a9 in ??? (???)
???:?:?: 0x13091aa in ??? (???)
Unwind error at address `:0x13091aa` (error.UnimplementedUserOpcode), trace may be incomplete

/home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/core/platform/glfw/Core.zig:779:51: 0x194212d in update__anon_36378 (lodecraft)
    if (!use_app) return !self.appUpdateThreadTick(app);
                                                  ^
/home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/core/main.zig:172:31: 0x194329b in mainThreadTick (lodecraft)
    return try internal.update(app_ptr);
                              ^
/home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/module/module.zig:421:32: 0x1947b2e in dispatchInternal__anon_5718 (lodecraft)
                .ErrorUnion => try @call(.auto, handler, args),
                               ^
/home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/module/module.zig:337:38: 0x194881d in dispatch (lodecraft)
            return m.dispatchInternal(stack_space, options, injectable);
                                     ^
/home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/core/main.zig:29:22: 0x1948912 in tick (lodecraft)
    try mods.dispatch(&stack_space, .{ .until = .{
                     ^
/home/tq/devel/projects/lodecraft/src/main.zig:14:30: 0x1948b05 in main (lodecraft)
    while (try mach.core.tick()) {}
                             ^
/home/tq/zig/0.13.0-dev.351+64ef45eb0/files/lib/std/start.zig:524:37: 0x1948eee in main (lodecraft)
            const result = root.main() catch |err| {
                                    ^
???:?:?: 0x7f889824f087 in ??? (libc.so.6)
???:?:?: 0x7f889824f14a in ??? (libc.so.6)
???:?:?: 0x12ae614 in ??? (???)
run
└─ run lodecraft failure
error: the following command terminated unexpectedly:
/home/tq/devel/projects/lodecraft/zig-out/bin/lodecraft 
Build Summary: 38/40 steps succeeded; 1 failed (disable with --summary none)
run transitive failure
└─ run lodecraft failure
error: the following build command failed with exit code 1:
/home/tq/devel/projects/lodecraft/.zig-cache/o/9849f3df8fc884b0036c91cccbbaefc3/build /home/tq/zig/0.13.0-dev.351+64ef45eb0/files/zig /home/tq/devel/projects/lodecraft /home/tq/devel/projects/lodecraft/.zig-cache /home/tq/.cache/zig --seed 0xe2d2be7a -Z83804df7d7b4623f run

https://github.com/hexops/mach/assets/65852537/61e599f9-cb0c-42d2-a1f2-dd60b050860f

I set up a basic project just [as described](https://machengine.org/core/getting-started/), but when launching and resizing the window, the app crashes: ```sh $ zig build run DRM kernel driver 'nvidia-drm' in use. NVK requires nouveau. Error: ../src/nouveau/vulkan/nvk_physical_device.c:1109: VK_ERROR_INCOMPATIBLE_DRIVER info(mach): found Vulkan backend on Discrete GPU adapter: NVIDIA GeForce RTX 3060 Laptop GPU, NVIDIA: 550.90.07 550.90.7.0 info(mach): gamemode: activated error(mach): mach: device lost: Wasn't able to recuperate the surface after a VK_ERROR_OUT_OF_DATE_KHR - While handling unexpected error type Internal when allowed errors are (Validation|DeviceLost). at GetCurrentTextureInternal (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/vulkan/SwapChainVk.cpp:669) at GetCurrentTexture (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/SwapChain.cpp:196) at GetCurrentTextureView (/home/runner/work/mach-gpu-dawn/mach-gpu-dawn/libs/dawn/src/dawn/native/SwapChain.cpp:213) thread 40035 panic: mach: device lost /home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/core/platform/glfw/Core.zig:129:5: 0x1933aab in deviceLostCallback (lodecraft) @panic("mach: device lost"); ^ ???:?:?: 0x12ec72e in ??? (???) ???:?:?: 0x13019a9 in ??? (???) ???:?:?: 0x13091aa in ??? (???) Unwind error at address `:0x13091aa` (error.UnimplementedUserOpcode), trace may be incomplete /home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/core/platform/glfw/Core.zig:779:51: 0x194212d in update__anon_36378 (lodecraft) if (!use_app) return !self.appUpdateThreadTick(app); ^ /home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/core/main.zig:172:31: 0x194329b in mainThreadTick (lodecraft) return try internal.update(app_ptr); ^ /home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/module/module.zig:421:32: 0x1947b2e in dispatchInternal__anon_5718 (lodecraft) .ErrorUnion => try @call(.auto, handler, args), ^ /home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/module/module.zig:337:38: 0x194881d in dispatch (lodecraft) return m.dispatchInternal(stack_space, options, injectable); ^ /home/tq/.cache/zig/p/122015e1dac4afaf275f7f2adde3814e6a27f5799cbef96bb487ee305f7e33f4dca3/src/core/main.zig:29:22: 0x1948912 in tick (lodecraft) try mods.dispatch(&stack_space, .{ .until = .{ ^ /home/tq/devel/projects/lodecraft/src/main.zig:14:30: 0x1948b05 in main (lodecraft) while (try mach.core.tick()) {} ^ /home/tq/zig/0.13.0-dev.351+64ef45eb0/files/lib/std/start.zig:524:37: 0x1948eee in main (lodecraft) const result = root.main() catch |err| { ^ ???:?:?: 0x7f889824f087 in ??? (libc.so.6) ???:?:?: 0x7f889824f14a in ??? (libc.so.6) ???:?:?: 0x12ae614 in ??? (???) run └─ run lodecraft failure error: the following command terminated unexpectedly: /home/tq/devel/projects/lodecraft/zig-out/bin/lodecraft Build Summary: 38/40 steps succeeded; 1 failed (disable with --summary none) run transitive failure └─ run lodecraft failure error: the following build command failed with exit code 1: /home/tq/devel/projects/lodecraft/.zig-cache/o/9849f3df8fc884b0036c91cccbbaefc3/build /home/tq/zig/0.13.0-dev.351+64ef45eb0/files/zig /home/tq/devel/projects/lodecraft /home/tq/devel/projects/lodecraft/.zig-cache /home/tq/.cache/zig --seed 0xe2d2be7a -Z83804df7d7b4623f run ``` https://github.com/hexops/mach/assets/65852537/61e599f9-cb0c-42d2-a1f2-dd60b050860f
OliveThePuffin commented 2024-10-14 19:54:11 +00:00 (Migrated from github.com)

I have the same bug too.
Here are my specs:
OS: Void Linux (glibc)
GPU: Nvidia 3080
WM: bspwm

In the video I show how a vulkan app should react vs what mach does. I also show that very quick resize events tend not to error whereas taking longer to resize the window does error. Also another thing to note is that simply moving the window takes much longer on mach than the other application

https://github.com/user-attachments/assets/336236f2-9ce4-4093-bd9e-865e91013efd

I have the same bug too. Here are my specs: OS: Void Linux (glibc) GPU: Nvidia 3080 WM: bspwm In the video I show how a vulkan app should react vs what mach does. I also show that very quick resize events tend not to error whereas taking longer to resize the window does error. Also another thing to note is that simply moving the window takes much longer on mach than the other application https://github.com/user-attachments/assets/336236f2-9ce4-4093-bd9e-865e91013efd
emidoots commented 2024-11-03 19:28:08 +00:00 (Migrated from github.com)

Which commit / branch of mach is this?

Which commit / branch of mach is this?
OliveThePuffin commented 2024-11-03 19:32:43 +00:00 (Migrated from github.com)

v0.4

v0.4
Dugnist commented 2026-02-02 15:35:28 +00:00 (Migrated from github.com)

Confirmed - Window Resize Bug on Linux - DeviceLost Error (Wayland Backend)

Environment

  • Platform: Linux (Ubuntu/Debian x86_64) with Wayland
  • Mach Version: 2024.11.0-mach
  • Zig Version: 0.14.0-dev.2577+271452d22
  • GPU: NVIDIA GeForce RTX 3070
  • Vulkan Driver: 525.147.05 / Vulkan 1.3.204
  • Kernel: 6.8.0-90-generic

Summary

Original Claim: Resizing window causes DeviceLost panic during swapchain acquisition.

Actual behavior:

  • Window resize causes DeviceLost error
  • Error occurs in getFenceStatus
  • Specific to Wayland backend (which Mach marks as experimental)
  • Mach explicitly warns: "Resizing window" is a known limitation

Test Location: /tmp/mach-resize-clean/

Mach's own warning:

warning(mach): You are using the wayland backend, which is currently experimental
The following features are expected to not work:
* Resizing window

How to Trigger

  1. Run Mach application on Linux with Wayland backend
  2. Create and display a window
  3. Drag window border to resize
  4. Application crashes with DeviceLost error

Reproduction Steps

Test Code (Produces Error)

File: /tmp/mach-resize-clean/src/app.zig

const std = @import("std");
const mach = @import("mach");

const App = @This();

pub const Modules = mach.Modules(.{
    mach.Core,
    App,
});

pub const mach_module = .app;
pub const mach_systems = .{ .main, .init, .tick, .deinit };

pub const main = mach.schedule(.{
    .{ mach.Core, .init },
    .{ App, .init },
    .{ mach.Core, .main },
});

frame_count: u64 = 0,
window: ?mach.ObjectID = null,

pub fn init(
    core: *mach.Core,
    app: *App,
    app_mod: mach.Mod(App),
) void {
    core.on_tick = app_mod.id.tick;
    core.on_exit = app_mod.id.deinit;

    std.log.info("=== Mach Window Resize Test ===", .{});
    std.log.info("Try resizing the window!", .{});
    std.log.info("If it handles resize gracefully, the bug is fixed/non-existent.", .{});

    app.window = core.windows.new(.{
        .title = "Resize Test - Try dragging the borders!",
        .width = 800,
        .height = 600,
    }) catch |err| {
        std.log.err("Failed to create window: {}", .{err});
        @panic("window creation failed");
    };
}

pub fn tick(app: *App, core: *mach.Core) void {
    _ = core;
    app.frame_count += 1;

    if (app.frame_count % 60 == 0) {
        std.log.info("Frame {d}: Window still running! Try resizing!", .{app.frame_count});
    }
}

pub fn deinit(app: *App, core: *mach.Core) void {
    _ = core;
    std.log.info("Window closed after {d} frames", .{app.frame_count});
}

Build Configuration (build.zig):

const std = @import("std");

pub fn build(b: *std.Build) void {
    const target = b.standardTargetOptions(.{});
    const optimize = b.standardOptimizeOption(.{});

    const mach_dep = b.dependency("mach", .{
        .target = target,
        .optimize = optimize,
    });

    const mach_mod = mach_dep.module("mach");

    // Create our app module
    const app_mod = b.addModule("app", .{
        .root_source_file = b.path("src/app.zig"),
        .target = target,
        .optimize = optimize,
    });
    app_mod.addImport("mach", mach_mod);

    // Use Mach's entrypoint
    const entry_mod = b.addModule("entry", .{
        .root_source_file = mach_dep.path("src/entrypoint/main.zig"),
        .target = target,
        .optimize = optimize,
    });
    entry_mod.addImport("app", app_mod);

    const exe = b.addExecutable(.{
        .name = "mach-resize-test",
        .root_module = entry_mod,
    });

    b.installArtifact(exe);

    const run = b.addRunArtifact(exe);
    run.step.dependOn(b.getInstallStep());

    const run_step = b.step("run", "Run resize test");
    run_step.dependOn(&run.step);
}

Build & Run:

cd /tmp/mach-resize-clean
zig build run

Then resize the window by dragging borders

Error: DeviceLost in getFenceStatus

Error

Startup Warning (Mach itself):

warning(mach): You are using the wayland backend, which is currently experimental
The following features are expected to not work:
* Resizing window
* Changing display mode
* VSync
* Setting window border/cursor

Actual Error After Resize:

thread 71442 panic: attempt to unwrap error: DeviceLost
vk.zig:30256:45: 0x115890a in getFenceStatus
    Result.error_device_lost => return error.DeviceLost,

Full Call Stack:

.cache/zig/p/*/vk.zig:30256:45: 0x115890a in getFenceStatus (mach-resize-test)
                Result.error_device_lost => return error.DeviceLost,
                                            ^
.cache/zig/p/*/src/sysgpu/vulkan.zig:859:89: 0x11206e2 in processQueuedOperations (mach-resize-test)
                const status = vkd.getFenceStatus(vk_device, submit_object.fence) catch unreachable;
                                                                                        ^
.cache/zig/p/*/src/sysgpu/vulkan.zig:707:39: 0x11204e6 in tick (mach-resize-test)
        device.processQueuedOperations();
                                      ^
.cache/zig/p/*/src/sysgpu/main.zig:680:20: 0x11210a6 in presentFrame (mach-resize-test)
        device.tick() catch @panic("api error");
                   ^
.cache/zig/p/*/src/module.zig:762:29: 0x10ed8cf in run__anon_64805 (mach-resize-test)
                    switch (@typeInfo(Ret)) {
                            ^
.cache/zig/p/*/src/module.zig:785:57: 0x10c4307 in callDynamic (mach-resize-test)
                        inline else => |fn_name| mod.run(fn_name),
                                                        ^
.cache/zig/p/*/src/module.zig:748:61: 0x1083e25 in run (mach-resize-test)
                                        modules2.callDynamic(fn_id);
                                                            ^
.cache/zig/p/*/src/module.zig:502:19: 0x10aa0f9 in run (mach-resize-test)
            r._run(r._ctx, fn_id);
                  ^
.cache/zig/p/*/src/module.zig:507:18: 0x10aa14c in call__anon_55574 (mach-resize-test)
            r.run(fn_id);
                 ^
.cache/zig/p/*/src/Core.zig:278:18: 0x10ce7db in platform_update_callback (mach-resize-test)
    core_mod.call(.presentFrame);
                 ^
.cache/zig/p/*/src/core/Linux.zig:62:12: 0x10aa1ec in run__anon_55589 (mach-resize-test)
    while (@call(.auto, on_each_update_fn, args_tuple) catch false) {}
           ^
.cache/zig/p/*/src/Core.zig:263:17: 0x10aa098 in main (mach-resize-test)
    Platform.run(platform_update_callback, .{ core, core_mod });
                ^
.cache/zig/p/*/src/module.zig:762:29: 0x1062b3f in run__anon_7305 (mach-resize-test)
                    switch (@typeInfo(Ret)) {
                            ^
.cache/zig/p/*/src/module.zig:723:40: 0x105c647 in run__anon_5684 (mach-resize-test)
                            callMod.run(callFn);
                                       ^
.cache/zig/p/*/src/entrypoint/main.zig:13:12: 0x105be9a in main (mach-resize-test)
    app.run(.main);
           ^
.local/share/mise/installs/zig/mach-latest/lib/std/start.zig:656:37: 0x105ca0e in main (mach-resize-test)
            const result = root.main() catch |err| {
                                    ^
../sysdeps/nptl/libc_start_call_main.h:58:16: 0x7810d8629d8f in __libc_start_call_main (../sysdeps/x86/libc-start.c)
../csu/libc-start.c:392:3: 0x7810d8629e3f in __libc_start_main_impl (../sysdeps/x86/libc-start.c)

Root Cause

Actual Root Cause:

  • Wayland backend is experimental in Mach
  • Window resize support is not implemented for Wayland
  • Mach explicitly documents this limitation
  • The DeviceLost error occurs when the GPU device loses connection after resize
Confirmed - Window Resize Bug on Linux - DeviceLost Error (Wayland Backend) ## Environment - Platform: Linux (Ubuntu/Debian x86_64) with Wayland - Mach Version: 2024.11.0-mach - Zig Version: 0.14.0-dev.2577+271452d22 - GPU: NVIDIA GeForce RTX 3070 - Vulkan Driver: 525.147.05 / Vulkan 1.3.204 - Kernel: 6.8.0-90-generic ## Summary Original Claim: Resizing window causes DeviceLost panic during swapchain acquisition. Actual behavior: - Window resize causes DeviceLost error - Error occurs in getFenceStatus - Specific to Wayland backend (which Mach marks as experimental) - Mach explicitly warns: "Resizing window" is a known limitation Test Location: /tmp/mach-resize-clean/ Mach's own warning: ``` warning(mach): You are using the wayland backend, which is currently experimental The following features are expected to not work: * Resizing window ``` ## How to Trigger 1. Run Mach application on Linux with Wayland backend 2. Create and display a window 3. Drag window border to resize 4. Application crashes with DeviceLost error ## Reproduction Steps ### Test Code (Produces Error) File: /tmp/mach-resize-clean/src/app.zig ```zig const std = @import("std"); const mach = @import("mach"); const App = @This(); pub const Modules = mach.Modules(.{ mach.Core, App, }); pub const mach_module = .app; pub const mach_systems = .{ .main, .init, .tick, .deinit }; pub const main = mach.schedule(.{ .{ mach.Core, .init }, .{ App, .init }, .{ mach.Core, .main }, }); frame_count: u64 = 0, window: ?mach.ObjectID = null, pub fn init( core: *mach.Core, app: *App, app_mod: mach.Mod(App), ) void { core.on_tick = app_mod.id.tick; core.on_exit = app_mod.id.deinit; std.log.info("=== Mach Window Resize Test ===", .{}); std.log.info("Try resizing the window!", .{}); std.log.info("If it handles resize gracefully, the bug is fixed/non-existent.", .{}); app.window = core.windows.new(.{ .title = "Resize Test - Try dragging the borders!", .width = 800, .height = 600, }) catch |err| { std.log.err("Failed to create window: {}", .{err}); @panic("window creation failed"); }; } pub fn tick(app: *App, core: *mach.Core) void { _ = core; app.frame_count += 1; if (app.frame_count % 60 == 0) { std.log.info("Frame {d}: Window still running! Try resizing!", .{app.frame_count}); } } pub fn deinit(app: *App, core: *mach.Core) void { _ = core; std.log.info("Window closed after {d} frames", .{app.frame_count}); } ``` Build Configuration (build.zig): ```zig const std = @import("std"); pub fn build(b: *std.Build) void { const target = b.standardTargetOptions(.{}); const optimize = b.standardOptimizeOption(.{}); const mach_dep = b.dependency("mach", .{ .target = target, .optimize = optimize, }); const mach_mod = mach_dep.module("mach"); // Create our app module const app_mod = b.addModule("app", .{ .root_source_file = b.path("src/app.zig"), .target = target, .optimize = optimize, }); app_mod.addImport("mach", mach_mod); // Use Mach's entrypoint const entry_mod = b.addModule("entry", .{ .root_source_file = mach_dep.path("src/entrypoint/main.zig"), .target = target, .optimize = optimize, }); entry_mod.addImport("app", app_mod); const exe = b.addExecutable(.{ .name = "mach-resize-test", .root_module = entry_mod, }); b.installArtifact(exe); const run = b.addRunArtifact(exe); run.step.dependOn(b.getInstallStep()); const run_step = b.step("run", "Run resize test"); run_step.dependOn(&run.step); } ``` Build & Run: ```bash cd /tmp/mach-resize-clean zig build run ``` Then resize the window by dragging borders Error: DeviceLost in getFenceStatus ## Error Startup Warning (Mach itself): ``` warning(mach): You are using the wayland backend, which is currently experimental The following features are expected to not work: * Resizing window * Changing display mode * VSync * Setting window border/cursor ``` Actual Error After Resize: ``` thread 71442 panic: attempt to unwrap error: DeviceLost vk.zig:30256:45: 0x115890a in getFenceStatus Result.error_device_lost => return error.DeviceLost, ``` Full Call Stack: ```bash .cache/zig/p/*/vk.zig:30256:45: 0x115890a in getFenceStatus (mach-resize-test) Result.error_device_lost => return error.DeviceLost, ^ .cache/zig/p/*/src/sysgpu/vulkan.zig:859:89: 0x11206e2 in processQueuedOperations (mach-resize-test) const status = vkd.getFenceStatus(vk_device, submit_object.fence) catch unreachable; ^ .cache/zig/p/*/src/sysgpu/vulkan.zig:707:39: 0x11204e6 in tick (mach-resize-test) device.processQueuedOperations(); ^ .cache/zig/p/*/src/sysgpu/main.zig:680:20: 0x11210a6 in presentFrame (mach-resize-test) device.tick() catch @panic("api error"); ^ .cache/zig/p/*/src/module.zig:762:29: 0x10ed8cf in run__anon_64805 (mach-resize-test) switch (@typeInfo(Ret)) { ^ .cache/zig/p/*/src/module.zig:785:57: 0x10c4307 in callDynamic (mach-resize-test) inline else => |fn_name| mod.run(fn_name), ^ .cache/zig/p/*/src/module.zig:748:61: 0x1083e25 in run (mach-resize-test) modules2.callDynamic(fn_id); ^ .cache/zig/p/*/src/module.zig:502:19: 0x10aa0f9 in run (mach-resize-test) r._run(r._ctx, fn_id); ^ .cache/zig/p/*/src/module.zig:507:18: 0x10aa14c in call__anon_55574 (mach-resize-test) r.run(fn_id); ^ .cache/zig/p/*/src/Core.zig:278:18: 0x10ce7db in platform_update_callback (mach-resize-test) core_mod.call(.presentFrame); ^ .cache/zig/p/*/src/core/Linux.zig:62:12: 0x10aa1ec in run__anon_55589 (mach-resize-test) while (@call(.auto, on_each_update_fn, args_tuple) catch false) {} ^ .cache/zig/p/*/src/Core.zig:263:17: 0x10aa098 in main (mach-resize-test) Platform.run(platform_update_callback, .{ core, core_mod }); ^ .cache/zig/p/*/src/module.zig:762:29: 0x1062b3f in run__anon_7305 (mach-resize-test) switch (@typeInfo(Ret)) { ^ .cache/zig/p/*/src/module.zig:723:40: 0x105c647 in run__anon_5684 (mach-resize-test) callMod.run(callFn); ^ .cache/zig/p/*/src/entrypoint/main.zig:13:12: 0x105be9a in main (mach-resize-test) app.run(.main); ^ .local/share/mise/installs/zig/mach-latest/lib/std/start.zig:656:37: 0x105ca0e in main (mach-resize-test) const result = root.main() catch |err| { ^ ../sysdeps/nptl/libc_start_call_main.h:58:16: 0x7810d8629d8f in __libc_start_call_main (../sysdeps/x86/libc-start.c) ../csu/libc-start.c:392:3: 0x7810d8629e3f in __libc_start_main_impl (../sysdeps/x86/libc-start.c) ``` ## Root Cause Actual Root Cause: - Wayland backend is experimental in Mach - Window resize support is not implemented for Wayland - Mach explicitly documents this limitation - The DeviceLost error occurs when the GPU device loses connection after resize
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
hexops/mach#1221
No description provided.