-
Notifications
You must be signed in to change notification settings - Fork 60
Closed
Description
The example code for static initialized values panics on release builds on linux. Happy to provide any more details
#[macro_use]
extern crate ctor;
use std::collections::HashMap;
#[ctor]
/// This is an immutable static, evaluated at init time
static STATIC_CTOR: HashMap<u32, &'static str> = {
let mut m = HashMap::new();
m.insert(0, "foo");
m.insert(1, "bar");
m.insert(2, "baz");
m
};
fn main() {
println!("{:x} -> {}", 1, STATIC_CTOR.get(&1).unwrap());
}Debug:
$ cargo run
Compiling proc-macro2 v0.4.27
Compiling unicode-xid v0.1.0
Compiling syn v0.15.30
Compiling quote v0.6.11
Compiling ctor v0.1.8
Compiling ctor-opt v0.1.0 (/home/x/ctor-opt)
Finished dev [unoptimized + debuginfo] target(s) in 14.96s
Running `target/debug/ctor-opt`
1 -> bar
Release:
$ cargo run --release
Compiling proc-macro2 v0.4.27
Compiling unicode-xid v0.1.0
Compiling syn v0.15.30
Compiling quote v0.6.11
Compiling ctor v0.1.8
Compiling ctor-opt v0.1.0 (/home/x/ctor-opt)
Finished release [optimized] target(s) in 39.53s
Running `target/release/ctor-opt`
thread 'main' panicked at 'called `Option::unwrap()` on a `None` value', src/libcore/option.rs:345:21
stack backtrace:
0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
at src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:39
1: std::sys_common::backtrace::_print
at src/libstd/sys_common/backtrace.rs:71
2: std::panicking::default_hook::{{closure}}
at src/libstd/sys_common/backtrace.rs:59
at src/libstd/panicking.rs:197
3: std::panicking::default_hook
at src/libstd/panicking.rs:211
4: std::panicking::rust_panic_with_hook
at src/libstd/panicking.rs:474
5: std::panicking::continue_panic_fmt
at src/libstd/panicking.rs:381
6: rust_begin_unwind
at src/libstd/panicking.rs:308
7: core::panicking::panic_fmt
at src/libcore/panicking.rs:85
8: core::panicking::panic
at src/libcore/panicking.rs:49
9: ctor_opt::main
10: std::rt::lang_start::{{closure}}
11: std::panicking::try::do_call
at src/libstd/rt.rs:49
at src/libstd/panicking.rs:293
12: __rust_maybe_catch_panic
at src/libpanic_unwind/lib.rs:87
13: std::rt::lang_start_internal
at src/libstd/panicking.rs:272
at src/libstd/panic.rs:388
at src/libstd/rt.rs:48
14: main
15: __libc_start_main
16: _start
$ rustc --version
rustc 1.35.0-nightly (3750348da 2019-04-08)
$ uname -a
Linux 4.19.0-2-amd64 #1 SMP Debian 4.19.16-1 (2019-01-17) x86_64 GNU/Linux
Metadata
Metadata
Assignees
Labels
No labels