Skip to content

Panic in wgpuDeviceRelease #512

@ivan-ushakov

Description

@ivan-ushakov

Version: v25.0.2.2
OS: macOS 15.6.1

I get panic error when I run this in class destructor:

{
    wgpuQueueRelease(_properties->queue);
    wgpuDeviceRelease(_properties->device);
    wgpuAdapterRelease(_properties->adapter);

    wgpuSurfaceUnconfigure(_properties->surface);
    wgpuSurfaceRelease(_properties->surface);

#ifdef __APPLE__
    SDL_Metal_DestroyView(_properties->metal_view);
#endif

    wgpuInstanceRelease(_properties->instance);
}

Trace:

thread '<unnamed>' panicked at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/thread/local.rs:281:25:
cannot access a Thread Local Storage value during or after destruction: AccessError
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

thread '<unnamed>' panicked at library/core/src/panicking.rs:225:5:
panic in a function that cannot unwind
stack backtrace:
   0:        0x103a38c28 - std::backtrace_rs::backtrace::libunwind::trace::h674dcd02776dcc9c
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1:        0x103a38c28 - std::backtrace_rs::backtrace::trace_unsynchronized::haccaae8fb80e4531
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2:        0x103a38c28 - std::sys::backtrace::_print_fmt::h3191fc6495b0a516
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/sys/backtrace.rs:66:9
   3:        0x103a38c28 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h373e57e2286956dc
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/sys/backtrace.rs:39:26
   4:        0x103a7ab00 - core::fmt::rt::Argument::fmt::hcee930b009d69e38
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/core/src/fmt/rt.rs:173:76
   5:        0x103a7ab00 - core::fmt::write::h2c4a0b98b09e3b30
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/core/src/fmt/mod.rs:1465:25
   6:        0x103a2e570 - std::io::default_write_fmt::h1b8f25d7cf9c86a4
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/io/mod.rs:639:11
   7:        0x103a2e570 - std::io::Write::write_fmt::h00b4007fff731b84
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/io/mod.rs:1954:13
   8:        0x103a38adc - std::sys::backtrace::BacktraceLock::print::h3eb1535b8d3666ca
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/sys/backtrace.rs:42:9
   9:        0x103a3c24c - std::panicking::default_hook::{{closure}}::hf623c44b740b115f
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/panicking.rs:300:27
  10:        0x103a3c09c - std::panicking::default_hook::h8875fb31ec87dfad
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/panicking.rs:327:9
  11:        0x103a3cd5c - std::panicking::rust_panic_with_hook::hdd8ceeeb04975c2b
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/panicking.rs:833:13
  12:        0x103a3c968 - std::panicking::begin_panic_handler::{{closure}}::hdf417b72ab8ffff8
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/panicking.rs:699:13
  13:        0x103a390d4 - std::sys::backtrace::__rust_end_short_backtrace::h507d79c50996742e
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/sys/backtrace.rs:168:18
  14:        0x103a3c66c - __rustc[5224e6b81cd82a8f]::rust_begin_unwind
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/std/src/panicking.rs:697:5
  15:        0x103aebbe8 - core::panicking::panic_nounwind_fmt::runtime::h6c329565596434a4
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/core/src/panicking.rs:117:22
  16:        0x103aebbe8 - core::panicking::panic_nounwind_fmt::h9dceef42c0a45ea6
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/core/src/intrinsics/mod.rs:2340:9
  17:        0x103aebc60 - core::panicking::panic_nounwind::h9f7565b148aca0ea
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/core/src/panicking.rs:225:5
  18:        0x103aebddc - core::panicking::panic_cannot_unwind::hf7c38fa209f60374
                               at /rustc/29483883eed69d5fb4db01964cdf2af4d86e9cb2/library/core/src/panicking.rs:330:5
  19:        0x1030003b4 - wgpuDeviceRelease
                               at /Users/runner/work/wgpu-native/wgpu-native/src/lib.rs:2632:1

How to find out what is the reason? I use the same order of release as Texture Arrays example - https://github.com/gfx-rs/wgpu-native/blob/trunk/examples/texture_arrays/main.c

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions