Skip to content

String storage is panicing #3

@Kracken256

Description

@Kracken256

I am using you library to develop a compiler. My code does not use unsafe at all. It appears your library is panicing in the storage.rs file (which contains complex unsafe code). Please fix thank you.

This bug is being triggered when I call .intern() on a string slice. However, it doesn't trigger right away.
This bug occurs on a typical x86_64 linux machine with nothing special going on.
No concurrency it being used by my code.

My application crash report:

thread 'main' panicked at /home/wesjo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/interned-string-0.3.0/src/storage.rs:356:63:
called `Option::unwrap()` on a `None` value
stack backtrace:
   0:     0x5cee34a6b732 - std::backtrace_rs::backtrace::libunwind::trace::hc20b48b31ee52608
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1:     0x5cee34a6b732 - std::backtrace_rs::backtrace::trace_unsynchronized::h5d207cd20f193d88
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2:     0x5cee34a6b732 - std::sys::backtrace::_print_fmt::h46402c32145e026c
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/sys/backtrace.rs:66:9
   3:     0x5cee34a6b732 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hc04c8f544ab24d66
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/sys/backtrace.rs:39:26
   4:     0x5cee34a8f493 - core::fmt::rt::Argument::fmt::h2bcd587ea50ac9a4
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/core/src/fmt/rt.rs:184:76
   5:     0x5cee34a8f493 - core::fmt::write::hfe57b7174b7d8eab
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/core/src/fmt/mod.rs:1481:21
   6:     0x5cee34a68e43 - std::io::default_write_fmt::h20c7e2d50577e95e
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/io/mod.rs:639:11
   7:     0x5cee34a68e43 - std::io::Write::write_fmt::h154385efa8565236
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/io/mod.rs:1914:13
   8:     0x5cee34a6b582 - std::sys::backtrace::BacktraceLock::print::h0c8f24e22f5873a8
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/sys/backtrace.rs:42:9
   9:     0x5cee34a6c4b2 - std::panicking::default_hook::{{closure}}::hd07d57e6a602c8e4
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:300:22
  10:     0x5cee34a6c2b5 - std::panicking::default_hook::h63d12f7d95bd91ed
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:327:9
  11:     0x5cee34a6ce92 - std::panicking::rust_panic_with_hook::h33b18b24045abff4
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:833:13
  12:     0x5cee34a6cbe6 - std::panicking::begin_panic_handler::{{closure}}::hf8313cc2fd0126bc
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:699:13
  13:     0x5cee34a6bc39 - std::sys::backtrace::__rust_end_short_backtrace::h57fe07c8aea5c98a
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/sys/backtrace.rs:168:18
  14:     0x5cee34a6c8ad - __rustc[95feac21a9532783]::rust_begin_unwind
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:697:5
  15:     0x5cee34a8d650 - core::panicking::panic_fmt::hd54fb667be51beea
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/core/src/panicking.rs:75:14
  16:     0x5cee34a8d6dc - core::panicking::panic::h48a7e1f3665210c6
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/core/src/panicking.rs:145:5
  17:     0x5cee34a8d5c9 - core::option::unwrap_failed::haa1cd4d2df4f1dcb
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/core/src/option.rs:2015:5
  18:     0x5cee34a3c7bd - core::option::Option<T>::unwrap::hbd59cb4746a9bf9c
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:978:21
  19:     0x5cee34a3c7bd - <interned_string::storage::InnerStringStorage as left_right::Absorb<interned_string::storage::StringStorageOp>>::absorb_first::h867a4fc02f968977
                               at /home/wesjo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/interned-string-0.3.0/src/storage.rs:356:34
  20:     0x5cee34a2d872 - left_right::write::WriteHandle<T,O>::publish::h398b06384953f998
                               at /home/wesjo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/left-right-0.11.5/src/write.rs:347:17
  21:     0x5cee34a3b29e - interned_string::storage::UniqueWriter::do_pending_ops_and_insert::h057b084586ff2bd7
                               at /home/wesjo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/interned-string-0.3.0/src/storage.rs:57:9
  22:     0x5cee34a3bad7 - interned_string::storage::ConcurrentStringStorage::insert::h0f98df2f081f3b21
                               at /home/wesjo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/interned-string-0.3.0/src/storage.rs:140:16
  23:     0x5cee34a3b83a - interned_string::storage::ConcurrentStringStorage::insert_or_retain::h2f7f6b86cd7c1019
                               at /home/wesjo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/interned-string-0.3.0/src/storage.rs:134:20
  24:     0x5cee34a1cdce - <interned_string::IString as core::convert::From<&str>>::from::h71db0e0bbb44c2b7
                               at /home/wesjo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/interned-string-0.3.0/src/lib.rs:67:18
  25:     0x5cee34a1ccf3 - <&str as interned_string::Intern>::intern::h1bb0bca11ab76ed3
                               at /home/wesjo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/interned-string-0.3.0/src/lib.rs:236:9
  26:     0x5cee349e3d2a - nitrate_tokenize::lex::Lexer::parse_typical_identifier::h662a7e8079b38aff
                               at /home/wesjo/Documents/Projects/nitrate/src/translation/src/tokenize/src/lex.rs:378:28
  27:     0x5cee349e3d2a - nitrate_tokenize::lex::Lexer::parse_next_token::hf8907817dd9b7dcf
                               at /home/wesjo/Documents/Projects/nitrate/src/translation/src/tokenize/src/lex.rs:1147:21
  28:     0x5cee349e3d2a - nitrate_tokenize::lex::Lexer::next_tok::{{closure}}::ha106e151b025d4fe
                               at /home/wesjo/Documents/Projects/nitrate/src/translation/src/tokenize/src/lex.rs:60:32
  29:     0x5cee34a1986a - core::option::Option<T>::unwrap_or_else::h5b8d9765571acbe0
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:1023:21
  30:     0x5cee349c4c9f - nitrate_tokenize::lex::Lexer::next_tok::h078b1743cc71f183
                               at /home/wesjo/Documents/Projects/nitrate/src/translation/src/tokenize/src/lex.rs:57:21
  31:     0x5cee34976035 - nitrate_tokenize::lex::Lexer::next_t::h6159842e10b88444
                               at /home/wesjo/Documents/Projects/nitrate/src/translation/src/tokenize/src/lex.rs:89:9
  32:     0x5cee34976035 - nitrate_parse::parse::Parser::parse::h67202a54efbad2cd
                               at /home/wesjo/Documents/Projects/nitrate/src/translation/src/parse/src/parse.rs:51:25
  33:     0x5cee346cb010 - nitrate_parse::program::h7f13b7649e812bf2
                               at /home/wesjo/Documents/Projects/nitrate/src/bin/nitrate_parse.rs:54:30
  34:     0x5cee346cb2f1 - nitrate_parse::main::ha17a42c8d561eb91
                               at /home/wesjo/Documents/Projects/nitrate/src/bin/nitrate_parse.rs:67:11
  35:     0x5cee346ca48b - core::ops::function::FnOnce::call_once::hfa6348d88d1643de
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  36:     0x5cee346bc0ee - std::sys::backtrace::__rust_begin_short_backtrace::h200b44a332ee0126
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs:152:18
  37:     0x5cee346ccb01 - std::rt::lang_start::{{closure}}::h0628126c48ec60ee
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:199:18
  38:     0x5cee34a62da0 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::he8388e74a9793a12
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/core/src/ops/function.rs:284:13
  39:     0x5cee34a62da0 - std::panicking::try::do_call::h48342abe4f16044f
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:589:40
  40:     0x5cee34a62da0 - std::panicking::try::h45f576514b338db1
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:552:19
  41:     0x5cee34a62da0 - std::panic::catch_unwind::h4500d81ff06e11c2
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panic.rs:359:14
  42:     0x5cee34a62da0 - std::rt::lang_start_internal::{{closure}}::h37cab7e9dd591bd0
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/rt.rs:168:24
  43:     0x5cee34a62da0 - std::panicking::try::do_call::h18dcd6ab68035fe0
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:589:40
  44:     0x5cee34a62da0 - std::panicking::try::h2ff15dd92aac3fb5
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:552:19
  45:     0x5cee34a62da0 - std::panic::catch_unwind::hffe66ef06337a6dd
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panic.rs:359:14
  46:     0x5cee34a62da0 - std::rt::lang_start_internal::h418648f91f5be3a1
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/rt.rs:164:5
  47:     0x5cee346ccae7 - std::rt::lang_start::h14aedb892fda2757
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:198:5
  48:     0x5cee346cb5fe - main
  49:     0x7871f662a1ca - __libc_start_call_main
                               at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
  50:     0x7871f662a28b - __libc_start_main_impl
                               at ./csu/../csu/libc-start.c:360:3
  51:     0x5cee346bae65 - _start
  52:                0x0 - <unknown>

thread 'main' panicked at /home/wesjo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/left-right-0.11.5/src/read.rs:58:36:
called `Result::unwrap()` on an `Err` value: PoisonError { .. }
stack backtrace:
   0:     0x5cee34a6b732 - std::backtrace_rs::backtrace::libunwind::trace::hc20b48b31ee52608
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1:     0x5cee34a6b732 - std::backtrace_rs::backtrace::trace_unsynchronized::h5d207cd20f193d88
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2:     0x5cee34a6b732 - std::sys::backtrace::_print_fmt::h46402c32145e026c
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/sys/backtrace.rs:66:9
   3:     0x5cee34a6b732 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hc04c8f544ab24d66
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/sys/backtrace.rs:39:26
   4:     0x5cee34a8f493 - core::fmt::rt::Argument::fmt::h2bcd587ea50ac9a4
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/core/src/fmt/rt.rs:184:76
   5:     0x5cee34a8f493 - core::fmt::write::hfe57b7174b7d8eab
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/core/src/fmt/mod.rs:1481:21
   6:     0x5cee34a68e43 - std::io::default_write_fmt::h20c7e2d50577e95e
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/io/mod.rs:639:11
   7:     0x5cee34a68e43 - std::io::Write::write_fmt::h154385efa8565236
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/io/mod.rs:1914:13
   8:     0x5cee34a6b582 - std::sys::backtrace::BacktraceLock::print::h0c8f24e22f5873a8
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/sys/backtrace.rs:42:9
   9:     0x5cee34a6c4b2 - std::panicking::default_hook::{{closure}}::hd07d57e6a602c8e4
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:300:22
  10:     0x5cee34a6c2b5 - std::panicking::default_hook::h63d12f7d95bd91ed
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:327:9
  11:     0x5cee34a6ce92 - std::panicking::rust_panic_with_hook::h33b18b24045abff4
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:833:13
  12:     0x5cee34a6cc1a - std::panicking::begin_panic_handler::{{closure}}::hf8313cc2fd0126bc
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:706:13
  13:     0x5cee34a6bc39 - std::sys::backtrace::__rust_end_short_backtrace::h57fe07c8aea5c98a
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/sys/backtrace.rs:168:18
  14:     0x5cee34a6c8ad - __rustc[95feac21a9532783]::rust_begin_unwind
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/std/src/panicking.rs:697:5
  15:     0x5cee34a8d650 - core::panicking::panic_fmt::hd54fb667be51beea
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/core/src/panicking.rs:75:14
  16:     0x5cee34a8dae6 - core::result::unwrap_failed::he8e27e02739cd3d2
                               at /rustc/17067e9ac6d7ecb70e50f92c1944e545188d2359/library/core/src/result.rs:1704:5
  17:     0x5cee34a2f92e - core::result::Result<T,E>::unwrap::h1e6afcb350cb9b08
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:1109:23
  18:     0x5cee34a2f92e - <left_right::read::ReadHandle<T> as core::ops::drop::Drop>::drop::hcf0bfd3a644de263
                               at /home/wesjo/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/left-right-0.11.5/src/read.rs:58:17
  19:     0x5cee34a3e9d7 - core::ptr::drop_in_place<left_right::read::ReadHandle<interned_string::storage::InnerStringStorage>>::h6d0adb8a3a66dbaf
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:523:1
  20:     0x5cee34a3f477 - core::ptr::drop_in_place<interned_string::storage::ThreadLocalReader>::h84e3c4a4d4344c12
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:523:1
  21:     0x5cee34a3ed83 - core::ptr::drop_in_place<std::sys::thread_local::native::lazy::State<interned_string::storage::ThreadLocalReader,()>>::hc86b303e32a4eddd
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:523:1
  22:     0x5cee34a364a6 - core::mem::drop::h327f8db6e1446931
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:935:24
  23:     0x5cee34a364a6 - std::sys::thread_local::native::lazy::destroy::{{closure}}::h2dbc3070aac53771
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/thread_local/native/lazy.rs:98:9
  24:     0x5cee34a35bb2 - std::sys::thread_local::abort_on_dtor_unwind::hb1a7f39064693d3a
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/thread_local/mod.rs:187:5
  25:     0x5cee34a36401 - std::sys::thread_local::native::lazy::destroy::h72b402b106ad4cd8
                               at /home/wesjo/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/thread_local/native/lazy.rs:93:5
  26:     0x7871f664772f - __GI___call_tls_dtors
                               at ./stdlib/cxa_thread_atexit_impl.c:156:7
  27:     0x7871f6647b6a - __run_exit_handlers
                               at ./stdlib/exit.c:41:5
  28:     0x7871f6647bbe - __GI_exit
                               at ./stdlib/exit.c:138:3
  29:     0x7871f662a1d1 - __libc_start_call_main
                               at ./csu/../sysdeps/nptl/libc_start_call_main.h:74:3
  30:     0x7871f662a28b - __libc_start_main_impl
                               at ./csu/../csu/libc-start.c:360:3
  31:     0x5cee346bae65 - _start
  32:                0x0 - <unknown>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions