Skip to content

Panic will occur if the application is called within the destructor (after return 0). #92

@Swiftie13st

Description

@Swiftie13st
thread '<unnamed>' (3421000) panicked at /xxxxx/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/thread/local.rs:281:25:
cannot access a Thread Local Storage value during or after destruction: AccessError
stack backtrace:
   0:     0x7f04271c5192 - std::backtrace_rs::backtrace::libunwind::trace::hd6a158ff8b4ced9f
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1:     0x7f04271c5192 - std::backtrace_rs::backtrace::trace_unsynchronized::h92e289be85f564b0
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2:     0x7f04271c5192 - std::sys::backtrace::_print_fmt::h7593c35e5f3bf237
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/sys/backtrace.rs:66:9
   3:     0x7f04271c5192 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::haa87a551a4affa55
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/sys/backtrace.rs:39:26
   4:     0x7f04271d6e3f - core::fmt::rt::Argument::fmt::h4b16ed950bbe015d
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/core/src/fmt/rt.rs:173:76
   5:     0x7f04271d6e3f - core::fmt::write::h80461e1e45e4fdd2
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/core/src/fmt/mod.rs:1468:25
   6:     0x7f042719aad1 - std::io::default_write_fmt::h9e4845ee80fefc13
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/io/mod.rs:639:11
   7:     0x7f042719aad1 - std::io::Write::write_fmt::h6e6c69b2d6337d9b
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/io/mod.rs:1954:13
   8:     0x7f04271a1572 - std::sys::backtrace::BacktraceLock::print::hf67a46baa621998e
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/sys/backtrace.rs:42:9
   9:     0x7f04271a63ff - std::panicking::default_hook::{{closure}}::h391aa815d5e47ec8
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/panicking.rs:301:27
  10:     0x7f04271a6259 - std::panicking::default_hook::hd6fdcf2489bb807d
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/panicking.rs:328:9
  11:     0x7f04271a6a85 - std::panicking::panic_with_hook::h185ddfb86bf14d73
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/panicking.rs:834:13
  12:     0x7f04271a691a - std::panicking::panic_handler::{{closure}}::had89ddd01b6112c9
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/panicking.rs:707:13
  13:     0x7f04271a16a9 - std::sys::backtrace::__rust_end_short_backtrace::h5d0fc36eef7265ea
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/sys/backtrace.rs:174:18
  14:     0x7f042718e7bd - __rustc[eb8946e36839644a]::rust_begin_unwind
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/panicking.rs:698:5
  15:     0x7f04271df960 - core::panicking::panic_fmt::h92c8e5abe71dd8d1
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/core/src/panicking.rs:75:14
  16:     0x7f04271a4e33 - std::thread::local::panic_access_error::h958a6a48f343130f
                               at /rustc/ed61e7d7e242494fb7057f2657300d9e77bb4fcb/library/std/src/thread/local.rs:237:5
  17:     0x7f0426e003c3 - std::thread::local::LocalKey<T>::with::h875e696529a217ff
                               at /xxxxx/.rustup/toolchains/stable-aarch64-apple-darwin/lib/rustlib/src/rust/library/std/src/thread/local.rs:281:25
  18:     0x7f0426dec12d - bitcode::pack_ints::with_scratch::h9048c0e873113de3
                               at /xxxxx/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-e791a3f93f26854f/bitcode-0.6.7/src/pack_ints.rs:247:13
  19:     0x7f0426de972c - <u32 as bitcode::pack_ints::SizedUInt>::pack8::he2284362864f9141
                               at /xxxxx/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-e791a3f93f26854f/bitcode-0.6.7/src/pack_ints.rs:263:13
  20:     0x7f0426df0f09 - bitcode::pack_ints::pack_ints_sized_unsigned::hfd38bd8bba79765c
                               at /xxxxx/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-e791a3f93f26854f/bitcode-0.6.7/src/pack_ints.rs:434:24
  21:     0x7f0426deea70 - bitcode::pack_ints::pack_ints_sized::hc0d8772ec00ef6a4
                               at /xxxxx/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-e791a3f93f26854f/bitcode-0.6.7/src/pack_ints.rs:401:5
  22:     0x7f0426df5651 - bitcode::pack_ints::pack_ints::{{closure}}::h74e10904d6549be7
                               at /xxxxx/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-e791a3f93f26854f/bitcode-0.6.7/src/pack_ints.rs:359:32
  23:     0x7f0426de8449 - <i32 as bitcode::pack_ints::Int>::with_input::hac67ce58101a2672
                               at /xxxxx/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-e791a3f93f26854f/bitcode-0.6.7/src/pack_ints.rs:132:21
  24:     0x7f0426df5318 - bitcode::pack_ints::pack_ints::h142d97d71da2a894
                               at /xxxxx/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-e791a3f93f26854f/bitcode-0.6.7/src/pack_ints.rs:359:5
  25:     0x7f0426e0486f - <bitcode::int::IntEncoder<T> as bitcode::coder::Buffer>::collect_into::h2c3111c5336df3af
                               at /xxxxx/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-e791a3f93f26854f/bitcode-0.6.7/src/int.rs:33:9
  26:     0x7f0426e0f98c - bitcode::serde::ser::LazyEncoder::collect::h28611bd9a08b9a7f
                               at /xxxxx/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-e791a3f93f26854f/bitcode-0.6.7/src/serde/ser.rs:130:20
  27:     0x7f0426d735d6 - bitcode::serde::ser::inner::serialize::h741406fe513fe61d
                               at /xxxxx/.cargo/registry/src/mirrors.tuna.tsinghua.edu.cn-e791a3f93f26854f/bitcode-0.6.7/src/serde/ser.rs:37:17
  28:     0x7f0426cb74d9 - <xxx::h352548de8dd9ca2a
                               at /xxx:410:21
  29:     0x7f0426991b10 - xxx::hda160acafed1b469
                               at /xxxx.rs:5:1
  30:     0x7f0426cade75 - xxx::h5fa0cdd72cb26cdd
                               at /xxxx.rs:1832:13
  31:     0x7f0426746dcd - xxxx
                               at /xxxxx.rs:634:33
  32:     0x7f0427b587b7 - <unknown>
  33:     0x7f04273f0495 - __run_exit_handlers
                               at ./stdlib/exit.c:113:8
  34:     0x7f04273f0610 - __GI_exit
                               at ./stdlib/exit.c:143:3
  35:     0x7f04273d4d97 - __libc_start_call_main
                               at ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
  36:     0x7f04273d4e40 - __libc_start_main_impl
                               at ./csu/../csu/libc-start.c:392:3

By adding this will fix it:
bitcode-0.6.7/src/pack_ints.rs:247:13

#[cfg(feature = "std")]
fn with_scratch<T>(f: impl FnOnce(&mut Vec<u8>) -> T) -> T {
    thread_local! {
        static SCRATCH: core::cell::RefCell<Vec<u8>> = const { core::cell::RefCell::new(Vec::new()) }
    }

    // fixed it
    if let Err(e) = SCRATCH.try_with(|_| {}) {
        return f(&mut Vec::new())
    }

    SCRATCH.with(|s| {
        let s = &mut s.borrow_mut();
        s.clear();
        f(s)
    })

}

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