Skip to content

RUST_BACKTRACE=1 segfaults on locally compiled programs #44859

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
WildCryptoFox opened this issue Sep 26, 2017 · 25 comments
Closed

RUST_BACKTRACE=1 segfaults on locally compiled programs #44859

WildCryptoFox opened this issue Sep 26, 2017 · 25 comments
Labels
A-debuginfo Area: Debugging information in compiled programs (DWARF, PDB, etc.) C-bug Category: This is a bug. I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics. O-linux Operating system: Linux

Comments

@WildCryptoFox
Copy link
Contributor

WildCryptoFox commented Sep 26, 2017

RUST_BACKTRACE=1 segfaults on locally compiled programs when they panic. Externally built binaries such as those installed through rustup work as expected, yielding the ICE backtrace in #44858 .

I use Exherbo Linux. I can use -C panic=abort to get traces from gdb, but that forbids anything graceful.

fn main() {
  panic!("test")
}
thread 'main' panicked at 'test', segfault.rs:2:4
Segmentation fault (core dumped)
GNU gdb (GDB) 8.0
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-pc-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from segfault...done.
(gdb) run
Starting program: /segfault
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/x86_64-pc-linux-gnu/lib/libthread_db.so.1".
thread 'main' panicked at 'test', segfault.rs:2:4

Program received signal SIGSEGV, Segmentation fault.
0x00007f4abc952e96 in strlen () from /usr/x86_64-pc-linux-gnu/lib/libc.so.6
(gdb) bt
#0  0x00007f4abc952e96 in strlen () from /usr/x86_64-pc-linux-gnu/lib/libc.so.6
#1  0x0000000100009378 in std::ffi::c_str::CStr::from_ptr () at /checkout/src/libstd/ffi/c_str.rs:749
#2  std::sys_common::gnu::libbacktrace::resolve_symname<closure> () at /checkout/src/libstd/sys_common/gnu/libbacktrace.rs:89
#3  std::sys::imp::backtrace::printing::resolve_symname<closure> () at /checkout/src/libstd/sys/unix/backtrace/printing/mod.rs:36
#4  std::sys_common::backtrace::filter_frames::{{closure}} () at /checkout/src/libstd/sys_common/backtrace.rs:110
#5  core::slice::{{impl}}::position::{{closure}}<std::sys_common::backtrace::Frame,closure> () at /checkout/src/libcore/slice/mod.rs:1201
#6  0x000000010000c9e1 in core::slice::Iter<std::sys_common::backtrace::Frame>::search_while<std::sys_common::backtrace::Frame,core::option::Option<usize>,closure> () at /checkout/src/libcore/slice/mod.rs:1268
#7  core::slice::{{impl}}::position<std::sys_common::backtrace::Frame,closure> () at /checkout/src/libcore/slice/mod.rs:1200
#8  std::sys_common::backtrace::filter_frames () at /checkout/src/libstd/sys_common/backtrace.rs:108
#9  std::sys_common::backtrace::_print () at /checkout/src/libstd/sys_common/backtrace.rs:73
#10 0x00000001000114e4 in std::sys_common::backtrace::print () at /checkout/src/libstd/sys_common/backtrace.rs:60
#11 std::panicking::default_hook::{{closure}} () at /checkout/src/libstd/panicking.rs:381
#12 0x0000000100011253 in std::panicking::default_hook () at /checkout/src/libstd/panicking.rs:397
#13 0x00000001000118e8 in std::panicking::rust_panic_with_hook () at /checkout/src/libstd/panicking.rs:577
#14 0x0000000100007082 in std::panicking::begin_panic ()
#15 0x000000010000761b in segfault::main ()
#16 0x0000000100042fdd in panic_unwind::__rust_maybe_catch_panic () at /checkout/src/libpanic_unwind/lib.rs:99
#17 0x0000000100011eac in std::panicking::try<(),closure> () at /checkout/src/libstd/panicking.rs:459
#18 std::panic::catch_unwind<closure,()> () at /checkout/src/libstd/panic.rs:361
#19 std::rt::lang_start () at /checkout/src/libstd/rt.rs:59
#20 0x000000010000764a in main ()
(gdb) q
A debugging session is active.

        Inferior 1 [process 3744] will be killed.

Quit anyway? (y or n) y
rustc 1.22.0-nightly (26015da01 2017-09-23)
Linux 4.12.7 x86_64 GNU/Linux
@Keruspe
Copy link
Contributor

Keruspe commented Oct 13, 2017

fwiw, here is a backtrace with debug symbols, running rustc commit 9ae6ed7

(gdb) bt full
#0  0x00007ffff7337071 in __strlen_avx2 () from /usr/x86_64-pc-linux-gnu/lib/libc.so.6
No symbol table info available.
#1  0x0000555555565efe in std::ffi::c_str::CStr::from_ptr (ptr=0x7ffff7fcafdb <error: Cannot access memory at address 0x7ffff7fcafdb>) at src/libstd/ffi/c_str.rs:749
        len = <optimized out>
        ptr = 0x7ffff7fcafdb <error: Cannot access memory at address 0x7ffff7fcafdb>
#2  0x000055555555bde2 in std::sys_common::gnu::libbacktrace::resolve_symname<closure> (frame=..., callback=...) at src/libstd/sys_common/gnu/libbacktrace.rs:89
        ret = 1
        data_addr = <optimized out>
        data = 0x7ffff7fcafdb <error: Cannot access memory at address 0x7ffff7fcafdb>
        state = <optimized out>
#3  0x000055555555db88 in std::sys::imp::backtrace::printing::resolve_symname<closure> (frame=..., callback=..., bc=0x1b) at src/libstd/sys/unix/backtrace/printing/mod.rs:36
        bc = 0x1b
        callback = <optimized out>
#4  0x0000555555567405 in std::sys_common::backtrace::filter_frames::{{closure}} (frame=<optimized out>) at src/libstd/sys_common/backtrace.rs:110
        is_marker = false
        frame = <optimized out>
#5  core::slice::{{impl}}::position::{{closure}}<std::sys_common::backtrace::Frame,closure> (elt=<optimized out>) at /home/keruspe/Sources/rust/src/libcore/slice/mod.rs:1204
        elt = <optimized out>
        index = 0
#6  0x0000555555567202 in core::slice::Iter<std::sys_common::backtrace::Frame>::search_while<std::sys_common::backtrace::Frame,core::option::Option<usize>,closure> (self=<optimized out>, default=..., g=...) at /home/keruspe/Sources/rust/src/libcore/slice/mod.rs:1271
        self = <optimized out>
#7  core::slice::{{impl}}::position<std::sys_common::backtrace::Frame,closure> (self=0x7fffffffdda0, predicate=...) at /home/keruspe/Sources/rust/src/libcore/slice/mod.rs:1203
        self = <optimized out>
        predicate = <optimized out>
#8  0x0000555555562262 in std::sys_common::backtrace::filter_frames (frames=..., format=<optimized out>, context=<optimized out>) at src/libstd/sys_common/backtrace.rs:108
        skipped_after = <optimized out>
        frames = &[std::sys_common::backtrace::Frame] {data_ptr: 0x7fffffffd6b8, length: 14}
        context = <optimized out>
        format = std::sys_common::backtrace::PrintFormat::Short
#9  std::sys_common::backtrace::_print (format=<optimized out>, w=...) at src/libstd/sys_common/backtrace.rs:73
        skipped_after = <optimized out>
        nb_frames = 14
        context = <optimized out>
        frames = [std::sys_common::backtrace::Frame {exact_position: 0x55555555c2eb <std::sys::imp::backtrace::tracing::imp::unwind_backtrace+43>, symbol_addr: 0x55555555c2c0 <std::sys::imp::backtrace::tracing::imp::unwind_backtrace>}, std::sys_common::backtrace::Frame {exact_position: 0x5555555621d4 <std::sys_common::backtrace::print+100>, symbol_addr: 0x555555562170 <std::sys_common::backtrace::print>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555555e919 <std::panicking::default_hook::{{closure}}+537>, symbol_addr: 0x55555555e700 <std::panicking::default_hook::{{closure}}>}, std::sys_common::backtrace::Frame {exact_position: 0x55555555e5c4 <std::panicking::default_hook+660>, symbol_addr: 0x55555555e330 <std::panicking::default_hook>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555555ed9b <std::panicking::rust_panic_with_hook+251>, symbol_addr: 0x55555555eca0 <std::panicking::rust_panic_with_hook>}, std::sys_common::backtrace::Frame {exact_position: 0x55555555a5b5 <std::panicking::begin_panic<&str>+149>, symbol_addr: 0x55555555a520 <std::panicking::begin_panic<&str>>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555555ac0d <a::main+29>, symbol_addr: 0x55555555abf0 <a::main>}, std::sys_common::backtrace::Frame {exact_position: 0x5555555a5727 <panic_unwind::__rust_maybe_catch_panic+39>, symbol_addr: 0x5555555a5700 <panic_unwind::__rust_maybe_catch_panic>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555555ea67 <std::panicking::try<(),closure>+55>, symbol_addr: 0x55555555ea30 <std::panicking::try<(),closure>>}, std::sys_common::backtrace::Frame {exact_position: 0x55555555c485 <std::rt::lang_start+117>, symbol_addr: 0x55555555c410 <std::rt::lang_start>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555555ac3d <main+45>, symbol_addr: 0x55555555ac10 <main>}, std::sys_common::backtrace::Frame {exact_position: 0x7ffff7201f49 <__libc_start_main+233>, symbol_addr: 0x7ffff7201e60 <__libc_start_main>}, std::sys_common::backtrace::Frame {exact_position: 0x55555555a3d9 <_start+41>, symbol_addr: 0x55555555a3b0 <_start>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x0, symbol_addr: 0x0} <repeats 87 times>]
        format = std::sys_common::backtrace::PrintFormat::Short
#10 std::sys_common::backtrace::print (w=..., format=std::sys_common::backtrace::PrintFormat::Short) at src/libstd/sys_common/backtrace.rs:60
        format = std::sys_common::backtrace::PrintFormat::Short
#11 0x000055555555e91a in std::panicking::default_hook::{{closure}} (err=...) at src/libstd/panicking.rs:381
        format = 1
        err = std::io::&mut Write
        log_backtrace = core::option::Option<std::sys_common::backtrace::PrintFormat>::Some(std::sys_common::backtrace::PrintFormat::Short)
#12 0x000055555555e5c5 in std::panicking::default_hook (info=<optimized out>) at src/libstd/panicking.rs:397
        stderr = <optimized out>
        thread = <optimized out>
        col = <optimized out>
        line = <optimized out>
        log_backtrace = <optimized out>
        info = <optimized out>
#13 0x000055555555ed9c in std::panicking::rust_panic_with_hook (msg=..., file_line_col=<optimized out>) at src/libstd/panicking.rs:577
        file = <optimized out>
        line = <optimized out>
        col = <optimized out>
        file_line_col = <optimized out>
        msg = <optimized out>
#14 0x000055555555a5b6 in std::panicking::begin_panic<&str> (msg=..., file_line_col=0x5555557ca350 <ref>) at /home/keruspe/Sources/rust/src/libstd/panicking.rs:538
        msg = &str {data_ptr: 0x5555555acb44 <str> "blah\000", length: 4}
        file_line_col = 0x5555557ca350 <ref>
#15 0x000055555555ac0e in a::main () at a.rs:2
No locals.

@kennytm kennytm added A-debuginfo Area: Debugging information in compiled programs (DWARF, PDB, etc.) C-bug Category: This is a bug. I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics. O-linux Operating system: Linux labels Oct 13, 2017
@alexcrichton
Copy link
Member

This aws likely fixed by #44525, so closing.

@Keruspe
Copy link
Contributor

Keruspe commented Oct 17, 2017

@alexcrichton this is not fixed, I get exactly the same backtrace with a freshly built rustc from the master branch.

@kennytm kennytm reopened this Oct 17, 2017
@Keruspe
Copy link
Contributor

Keruspe commented Oct 18, 2017

Just retried with rustc 1.22.0-nightly (f6d751454 2017-10-17) with full debug symbols enabled

a.rs contains

fn main() {
    panic!("");
}

stacktrace is

(gdb) bt full
#0  0x00007ffff7337071 in __strlen_avx2 () from /usr/x86_64-pc-linux-gnu/lib/libc.so.6
No symbol table info available.
#1  0x000055555556072d in std::ffi::c_str::CStr::from_ptr (ptr=0x7ffff7f84195 <error: Cannot access memory at address 0x7ffff7f84195>) at src/libstd/ffi/c_str.rs:864
        len = 140737353630101
        ptr = 0x7ffff7f84195 <error: Cannot access memory at address 0x7ffff7f84195>
#2  0x0000555555572f12 in std::sys_common::gnu::libbacktrace::resolve_symname<closure> (frame=..., callback=...) at src/libstd/sys_common/gnu/libbacktrace.rs:89
        ret = 1
        data_addr = 0x7fffffffc420
        data = 0x7ffff7f84195 <error: Cannot access memory at address 0x7ffff7f84195>
        state = 0x7ffff7ff2000
        symname = core::option::Option<&str>::Some(&str {data_ptr: 0x7fffffffc464 "\000", length: 76155161039947})
        frame = std::sys_common::backtrace::Frame {exact_position: 0x55555558834b <std::sys::imp::backtrace::tracing::imp::unwind_backtrace+91>, symbol_addr: 0x5555555882f0 <std::sys::imp::backtrace::tracing::imp::unwind_backtrace>}
        callback = closure (closure (0x7fffffffc58f), 0x7fffffffc4f8, 0x7fffffffc510)
#3  0x0000555555588bda in std::sys::imp::backtrace::printing::resolve_symname<closure> (frame=..., callback=..., bc=0x7fffffffd3d8) at src/libstd/sys/unix/backtrace/printing/mod.rs:36
        frame = std::sys_common::backtrace::Frame {exact_position: 0x55555558834b <std::sys::imp::backtrace::tracing::imp::unwind_backtrace+91>, symbol_addr: 0x5555555882f0 <std::sys::imp::backtrace::tracing::imp::unwind_backtrace>}
        callback = closure (0x7fffffffc58f)
        bc = 0x7fffffffd3d8
#4  0x0000555555581ebb in std::sys_common::backtrace::filter_frames::{{closure}} (frame=0x7fffffffcd80) at src/libstd/sys_common/backtrace.rs:108
        is_marker = false
        frame = 0x7fffffffcd80
        context = 0x7fffffffd3d8
#5  0x000055555557cc2b in core::slice::{{impl}}::position::{{closure}}<std::sys_common::backtrace::Frame,closure> (elt=0x7fffffffcd80) at /var/tmp/paludis/build/dev-lang-rust-scm/work/rust-scm/src/libcore/slice/mod.rs:1204
        elt = 0x7fffffffcd80
        predicate = closure (0x7fffffffcc00)
        index = 0
#6  0x0000555555577be4 in core::slice::Iter<std::sys_common::backtrace::Frame>::search_while<std::sys_common::backtrace::Frame,core::option::Option<usize>,closure> (self=0x7fffffffcc28, default=..., g=...) at /var/tmp/paludis/build/dev-lang-rust-scm/work/rust-scm/src/libcore/slice/mod.rs:1271
        self = 0x7fffffffcc28
        default = core::option::Option::None
        g = closure (closure (0x7fffffffcc00), 0)
#7  0x000055555557ca9e in core::slice::{{impl}}::position<std::sys_common::backtrace::Frame,closure> (self=0x7fffffffcc28, predicate=...) at /var/tmp/paludis/build/dev-lang-rust-scm/work/rust-scm/src/libcore/slice/mod.rs:1203
        index = 0
        self = 0x7fffffffcc28
        predicate = closure (0x7fffffffcc00)
#8  0x0000555555581caf in std::sys_common::backtrace::filter_frames (frames=..., format=std::sys_common::backtrace::PrintFormat::Short, context=0x7fffffffd3d8) at src/libstd/sys_common/backtrace.rs:106
        skipped_after = 21
        skipped_before = 0
        frames = &[std::sys_common::backtrace::Frame] {data_ptr: 0x7fffffffcd80, length: 21}
        format = std::sys_common::backtrace::PrintFormat::Short
        context = 0x7fffffffd3d8
#9  0x00005555555810e7 in std::sys_common::backtrace::_print (w=..., format=std::sys_common::backtrace::PrintFormat::Short) at src/libstd/sys_common/backtrace.rs:71
        skipped_before = 93824995289048
        skipped_after = 140737331204104
        nb_frames = 21
        context = std::sys::imp::backtrace::BacktraceContext
        frames = [std::sys_common::backtrace::Frame {exact_position: 0x55555558834b <std::sys::imp::backtrace::tracing::imp::unwind_backtrace+91>, symbol_addr: 0x5555555882f0 <std::sys::imp::backtrace::tracing::imp::unwind_backtrace>}, std::sys_common::backtrace::Frame {exact_position: 0x5555555819c9 <std::sys_common::backtrace::_print+2729>, symbol_addr: 0x555555580f20 <std::sys_common::backtrace::_print>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x555555580e9b <std::sys_common::backtrace::print+123>, symbol_addr: 0x555555580e20 <std::sys_common::backtrace::print>}, std::sys_common::backtrace::Frame {exact_position: 0x55555557047e <std::panicking::default_hook::{{closure}}+862>, symbol_addr: 0x555555570120 <std::panicking::default_hook::{{closure}}>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555556ffbd <std::panicking::default_hook+1037>, symbol_addr: 0x55555556fbb0 <std::panicking::default_hook>}, std::sys_common::backtrace::Frame {exact_position: 0x555555570e6c <std::panicking::rust_panic_with_hook+396>, symbol_addr: 0x555555570ce0 <std::panicking::rust_panic_with_hook>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555555ec55 <std::panicking::begin_panic<&str>+149>, symbol_addr: 0x55555555ebc0 <std::panicking::begin_panic<&str>>}, std::sys_common::backtrace::Frame {exact_position: 0x55555555eb1a <a::main+26>, symbol_addr: 0x55555555eb00 <a::main>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555559779e <core::ops::function::FnOnce::call_once<fn(),()>+14>, symbol_addr: 0x555555597790 <core::ops::function::FnOnce::call_once<fn(),()>>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x555555581efc <std::sys_common::backtrace::__rust_begin_short_backtrace<fn(),()>+28>, symbol_addr: 0x555555581ee0 <std::sys_common::backtrace::__rust_begin_short_backtrace<fn(),()>>}, std::sys_common::backtrace::Frame {exact_position: 0x5555555617f7 <std::rt::lang_start::{{closure}}+39>, symbol_addr: 0x5555555617d0 <std::rt::lang_start::{{closure}}>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x5555555708c9 <std::panicking::try::do_call<closure,()>+73>, symbol_addr: 0x555555570880 <std::panicking::try::do_call<closure,()>>}, std::sys_common::backtrace::Frame {exact_position: 0x5555555e62a7 <__rust_try+23>, symbol_addr: 0x5555555e6290 <__rust_try>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x5555555e61b7 <panic_unwind::__rust_maybe_catch_panic+87>, symbol_addr: 0x5555555e6160 <panic_unwind::__rust_maybe_catch_panic>}, std::sys_common::backtrace::Frame {exact_position: 0x5555555707fa <std::panicking::try<(),closure>+106>, symbol_addr: 0x555555570790 <std::panicking::try<(),closure>>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555557e003 <std::panic::catch_unwind<closure,()>+51>, symbol_addr: 0x55555557dfd0 <std::panic::catch_unwind<closure,()>>}, std::sys_common::backtrace::Frame {exact_position: 0x55555556174d <std::rt::lang_start+269>, symbol_addr: 0x555555561640 <std::rt::lang_start>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555555eb4d <main+45>, symbol_addr: 0x55555555eb20 <main>}, std::sys_common::backtrace::Frame {exact_position: 0x7ffff7201f49 <__libc_start_main+233>, symbol_addr: 0x7ffff7201e60 <__libc_start_main>}, std::sys_common::backtrace::Frame {exact_position: 0x55555555ea19 <_start+41>, symbol_addr: 0x55555555e9f0 <_start>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x0, symbol_addr: 0x0} <repeats 80 times>]
        w = std::io::&mut Write
        format = std::sys_common::backtrace::PrintFormat::Short
#10 0x0000555555580e9c in std::sys_common::backtrace::print (w=..., format=std::sys_common::backtrace::PrintFormat::Short) at src/libstd/sys_common/backtrace.rs:58
        res = <error reading variable>
        w = std::io::&mut Write
        format = std::sys_common::backtrace::PrintFormat::Short
#11 0x000055555557047f in std::panicking::default_hook::{{closure}} (err=...) at src/libstd/panicking.rs:381
        format = std::sys_common::backtrace::PrintFormat::Short
        err = std::io::&mut Write
        name = &str {data_ptr: 0x7ffff6a21000 "main\000", length: 4}
        msg = &str {data_ptr: 0x555555609ac4 "\000", length: 0}
        file = &str {data_ptr: 0x555555609ac0 <str> "a.rs\000", length: 4}
        line = 2
        col = 4
        log_backtrace = core::option::Option<std::sys_common::backtrace::PrintFormat>::Some(std::sys_common::backtrace::PrintFormat::Short)
#12 0x000055555556ffbe in std::panicking::default_hook (info=0x7fffffffde88) at src/libstd/panicking.rs:397
        err = 0x7fffffffdd40
        stderr = std::io::Box<Write>
        prev = <error reading variable>
        write = closure (0x7fffffffdcc8, 0x7fffffffdc60, 0x7fffffffdc48, 0x7fffffffdc58, 0x7fffffffdc5c, 0x7fffffffdc37)
        name = &str {data_ptr: 0x7ffff6a21000 "main\000", length: 4}
        thread = core::option::Option<std::thread::Thread>::Some(std::thread::Thread {inner: alloc::arc::Arc<std::thread::Inner> {ptr: core::ptr::Shared<alloc::arc::ArcInner<std::thread::Inner>> {pointer: core::nonzero::NonZero<*const alloc::arc::ArcInner<std::thread::Inner>> (0x7ffff6a25000), _marker: core::marker::PhantomData<alloc::arc::ArcInner<std::thread::Inner>>}}})
        err = core::option::Option::Some(std::sys::imp::stdio::Stderr (()))
        msg = &str {data_ptr: 0x555555609ac4 "\000", length: 0}
        col = 4
        line = 2
        file = &str {data_ptr: 0x555555609ac0 <str> "a.rs\000", length: 4}
        log_backtrace = core::option::Option<std::sys_common::backtrace::PrintFormat>::Some(std::sys_common::backtrace::PrintFormat::Short)
        info = 0x7fffffffde88
#13 0x0000555555570e6d in std::panicking::rust_panic_with_hook (msg=..., file_line_col=0x55555583dc30 <ref>) at src/libstd/panicking.rs:577
        info = std::panicking::PanicInfo {payload: core::any::&Any, location: std::panicking::Location {file: &str {data_ptr: 0x555555609ac0 <str> "a.rs\000", length: 4}, line: 2, col: 4}}
        panics = 1
        file = &str {data_ptr: 0x555555609ac0 <str> "a.rs\000", length: 4}
        line = 2
        col = 4
        msg = core::any::Box<Any>
        file_line_col = 0x55555583dc30 <ref>
#14 0x000055555555ec56 in std::panicking::begin_panic<&str> (msg=..., file_line_col=0x55555583dc30 <ref>) at /var/tmp/paludis/build/dev-lang-rust-scm/work/rust-scm/src/libstd/panicking.rs:538
        msg = &str {data_ptr: 0x555555609ac4 "\000", length: 0}
        file_line_col = 0x55555583dc30 <ref>
#15 0x000055555555eb1b in a::main () at a.rs:2

@Keruspe
Copy link
Contributor

Keruspe commented Oct 19, 2017

I sometimes get a smaller stack (note that the invalid memory adress is the same: 0x7ffff7f84195, not sure how relevant that is):

#0  0x00007ffff7337071 in __strlen_avx2 () from /usr/x86_64-pc-linux-gnu/lib/libc.so.6
No symbol table info available.
#1  0x000055555556072d in std::ffi::c_str::CStr::from_ptr (ptr=0x7ffff7f84195 <error: Cannot access memory at address 0x7ffff7f84195>) at src/libstd/ffi/c_str.rs:864
        len = 140737353630101
        ptr = 0x7ffff7f84195 <error: Cannot access memory at address 0x7ffff7f84195>
#2  0x00005555555731c8 in std::sys_common::gnu::libbacktrace::resolve_symname<closure> (frame=..., callback=...) at src/libstd/sys_common/gnu/libbacktrace.rs:89
        ret = 1
        data_addr = 0x7fffffffcaf0
        data = 0x7ffff7f84195 <error: Cannot access memory at address 0x7ffff7f84195>
        state = 0x7ffff7ff2000
        symname = core::option::Option<&str>::Some(&str {data_ptr: 0x7fffffffcdd0 "K\203XUUU\000", length: 21})
        frame = std::sys_common::backtrace::Frame {exact_position: 0x55555558834b <std::sys::imp::backtrace::tracing::imp::unwind_backtrace+91>, symbol_addr: 0x5555555882f0 <std::sys::imp::backtrace::tracing::imp::unwind_backtrace>}
        callback = closure (closure (0x7fffffffcdb8, 0x7fffffffd6e8, 0x7fffffffd6f0, 0x7fffffffcdcf), 0x7fffffffcbf0, 0x7fffffffcc20)
#3  0x0000555555588b1a in std::sys::imp::backtrace::printing::resolve_symname<closure> (frame=..., callback=..., bc=0x7fffffffd428) at src/libstd/sys/unix/backtrace/printing/mod.rs:36
        frame = std::sys_common::backtrace::Frame {exact_position: 0x55555558834b <std::sys::imp::backtrace::tracing::imp::unwind_backtrace+91>, symbol_addr: 0x5555555882f0 <std::sys::imp::backtrace::tracing::imp::unwind_backtrace>}
        callback = closure (0x7fffffffcdb8, 0x7fffffffd6e8, 0x7fffffffd6f0, 0x7fffffffcdcf)
        bc = 0x7fffffffd428
#4  0x0000555555581590 in std::sys_common::backtrace::_print (w=..., format=std::sys_common::backtrace::PrintFormat::Full) at src/libstd/sys_common/backtrace.rs:80
        index = 0
        frame = 0x7fffffffcdd0
        __next = (0, 0x7fffffffcdd0)
        iter = core::iter::Enumerate<core::iter::Skip<core::slice::Iter<std::sys_common::backtrace::Frame>>> {iter: core::iter::Skip<core::slice::Iter<std::sys_common::backtrace::Frame>> {iter: core::slice::Iter<std::sys_common::backtrace::Frame> {ptr: 0x7fffffffcde0, end: 0x7fffffffcf20, _marker: core::marker::PhantomData<&std::sys_common::backtrace::Frame>}, n: 0}, count: 1}
        _result = ()
        filtered_frames = &[std::sys_common::backtrace::Frame] {data_ptr: 0x7fffffffcdd0, length: 21}
        skipped_before = 0
        skipped_after = 0
        nb_frames = 21
        context = std::sys::imp::backtrace::BacktraceContext
        frames = [std::sys_common::backtrace::Frame {exact_position: 0x55555558834b <std::sys::imp::backtrace::tracing::imp::unwind_backtrace+91>, symbol_addr: 0x5555555882f0 <std::sys::imp::backtrace::tracing::imp::unwind_backtrace>}, std::sys_common::backtrace::Frame {exact_position: 0x5555555819c9 <std::sys_common::backtrace::_print+2729>, symbol_addr: 0x555555580f20 <std::sys_common::backtrace::_print>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x555555580e9b <std::sys_common::backtrace::print+123>, symbol_addr: 0x555555580e20 <std::sys_common::backtrace::print>}, std::sys_common::backtrace::Frame {exact_position: 0x55555557047e <std::panicking::default_hook::{{closure}}+862>, symbol_addr: 0x555555570120 <std::panicking::default_hook::{{closure}}>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555556ffbd <std::panicking::default_hook+1037>, symbol_addr: 0x55555556fbb0 <std::panicking::default_hook>}, std::sys_common::backtrace::Frame {exact_position: 0x555555570e6c <std::panicking::rust_panic_with_hook+396>, symbol_addr: 0x555555570ce0 <std::panicking::rust_panic_with_hook>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555555ec55 <std::panicking::begin_panic<&str>+149>, symbol_addr: 0x55555555ebc0 <std::panicking::begin_panic<&str>>}, std::sys_common::backtrace::Frame {exact_position: 0x55555555eb1a <a::main+26>, symbol_addr: 0x55555555eb00 <a::main>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555559779e <core::ops::function::FnOnce::call_once<fn(),()>+14>, symbol_addr: 0x555555597790 <core::ops::function::FnOnce::call_once<fn(),()>>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x555555581efc <std::sys_common::backtrace::__rust_begin_short_backtrace<fn(),()>+28>, symbol_addr: 0x555555581ee0 <std::sys_common::backtrace::__rust_begin_short_backtrace<fn(),()>>}, std::sys_common::backtrace::Frame {exact_position: 0x5555555617f7 <std::rt::lang_start::{{closure}}+39>, symbol_addr: 0x5555555617d0 <std::rt::lang_start::{{closure}}>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x5555555708c9 <std::panicking::try::do_call<closure,()>+73>, symbol_addr: 0x555555570880 <std::panicking::try::do_call<closure,()>>}, std::sys_common::backtrace::Frame {exact_position: 0x5555555e62a7 <__rust_try+23>, symbol_addr: 0x5555555e6290 <__rust_try>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x5555555e61b7 <panic_unwind::__rust_maybe_catch_panic+87>, symbol_addr: 0x5555555e6160 <panic_unwind::__rust_maybe_catch_panic>}, std::sys_common::backtrace::Frame {exact_position: 0x5555555707fa <std::panicking::try<(),closure>+106>, symbol_addr: 0x555555570790 <std::panicking::try<(),closure>>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555557e003 <std::panic::catch_unwind<closure,()>+51>, symbol_addr: 0x55555557dfd0 <std::panic::catch_unwind<closure,()>>}, std::sys_common::backtrace::Frame {exact_position: 0x55555556174d <std::rt::lang_start+269>, symbol_addr: 0x555555561640 <std::rt::lang_start>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x55555555eb4d <main+45>, symbol_addr: 0x55555555eb20 <main>}, std::sys_common::backtrace::Frame {exact_position: 0x7ffff7201f49 <__libc_start_main+233>, symbol_addr: 0x7ffff7201e60 <__libc_start_main>}, std::sys_common::backtrace::Frame {exact_position: 0x55555555ea19 <_start+41>, symbol_addr: 0x55555555e9f0 <_start>}, 
          std::sys_common::backtrace::Frame {exact_position: 0x0, symbol_addr: 0x0} <repeats 80 times>]
        w = std::io::&mut Write
        format = std::sys_common::backtrace::PrintFormat::Full
#5  0x0000555555580e9c in std::sys_common::backtrace::print (w=..., format=std::sys_common::backtrace::PrintFormat::Full) at src/libstd/sys_common/backtrace.rs:58
        res = <error reading variable>
        w = std::io::&mut Write
        format = std::sys_common::backtrace::PrintFormat::Full
#6  0x000055555557047f in std::panicking::default_hook::{{closure}} (err=...) at src/libstd/panicking.rs:381
        format = std::sys_common::backtrace::PrintFormat::Full
        err = std::io::&mut Write
        name = &str {data_ptr: 0x7ffff6a21000 "main\000", length: 4}
        msg = &str {data_ptr: 0x555555609ac4 "\000", length: 0}
        file = &str {data_ptr: 0x555555609ac0 <str> "a.rs\000", length: 4}
        line = 2
        col = 4
        log_backtrace = core::option::Option<std::sys_common::backtrace::PrintFormat>::Some(std::sys_common::backtrace::PrintFormat::Full)
#7  0x000055555556ffbe in std::panicking::default_hook (info=0x7fffffffded8) at src/libstd/panicking.rs:397
        err = 0x7fffffffdd90
        stderr = std::io::Box<Write>
        prev = <error reading variable>
        write = closure (0x7fffffffdd18, 0x7fffffffdcb0, 0x7fffffffdc98, 0x7fffffffdca8, 0x7fffffffdcac, 0x7fffffffdc87)
        name = &str {data_ptr: 0x7ffff6a21000 "main\000", length: 4}
        thread = core::option::Option<std::thread::Thread>::Some(std::thread::Thread {inner: alloc::arc::Arc<std::thread::Inner> {ptr: core::ptr::Shared<alloc::arc::ArcInner<std::thread::Inner>> {pointer: core::nonzero::NonZero<*const alloc::arc::ArcInner<std::thread::Inner>> (0x7ffff6a25000), _marker: core::marker::PhantomData<alloc::arc::ArcInner<std::thread::Inner>>}}})
        err = core::option::Option::Some(std::sys::imp::stdio::Stderr (()))
        msg = &str {data_ptr: 0x555555609ac4 "\000", length: 0}
        col = 4
        line = 2
        file = &str {data_ptr: 0x555555609ac0 <str> "a.rs\000", length: 4}
        log_backtrace = core::option::Option<std::sys_common::backtrace::PrintFormat>::Some(std::sys_common::backtrace::PrintFormat::Full)
        info = 0x7fffffffded8
#8  0x0000555555570e6d in std::panicking::rust_panic_with_hook (msg=..., file_line_col=0x55555583dc30 <ref>) at src/libstd/panicking.rs:577
        info = std::panicking::PanicInfo {payload: core::any::&Any, location: std::panicking::Location {file: &str {data_ptr: 0x555555609ac0 <str> "a.rs\000", length: 4}, line: 2, col: 4}}
        panics = 1
        file = &str {data_ptr: 0x555555609ac0 <str> "a.rs\000", length: 4}
        line = 2
        col = 4
        msg = core::any::Box<Any>
        file_line_col = 0x55555583dc30 <ref>
#9  0x000055555555ec56 in std::panicking::begin_panic<&str> (msg=..., file_line_col=0x55555583dc30 <ref>) at /var/tmp/paludis/build/dev-lang-rust-scm/work/rust-scm/src/libstd/panicking.rs:538
        msg = &str {data_ptr: 0x555555609ac4 "\000", length: 0}
        file_line_col = 0x55555583dc30 <ref>
#10 0x000055555555eb1b in a::main () at a.rs:2
No locals.

@Keruspe
Copy link
Contributor

Keruspe commented Dec 7, 2017

Still hitting this issue with current nightly and I really don't know how to debug it further.
I was wondering if there was something wrong with our rustc, but it's exactly the same with the one from rustup.
Building a rust executable built on exherbo always ends up with this issue. Running an executable built on ubuntu works fine.

@alecmocatta
Copy link
Contributor

alecmocatta commented Apr 10, 2018

I've observed similar behaviour when building inside a Linux virtualbox running on Mac when the target directory is under a virtualbox vboxsf shared folder, but not under a native ext4 folder - as weird as that sounds. I suspect a filesystem idiosyncrasy is tickling a bug somewhere.

@Keruspe
Copy link
Contributor

Keruspe commented Apr 11, 2018

@alecmocatta are you speaking of building or running on different filesystems?

@alecmocatta
Copy link
Contributor

@Keruspe Building. I confirmed by building an identical crate on each filesystem, confirming the binaries differed, running and seeing one crash, then swapping the filesystem of the binary and seeing the same behaviour – building on the vboxsf filesystem results in a binary that segfaults on panic!().

@Keruspe
Copy link
Contributor

Keruspe commented Apr 11, 2018

That's an interresting find!

The binary that works here was built on an ubuntu/ext4, The one that doesn't on a exherbo/btrfs. Both either work everywhere or fail everywhere, only the build environment counts.

@james-darkfox which filesystem are you using?

@Keruspe
Copy link
Contributor

Keruspe commented Apr 12, 2018

Ok, I found a counterexample, I have an ext4 system which produces faulty binaries, so that's not it. Could be some kernel configuration issue maybe?

One interresting fact: for the same trivial panic!("foo"); program, a "working" binary is 5MB large, a faulty one is 1MB.

@WildCryptoFox
Copy link
Contributor Author

@Keruspe Sorry for the delay. I too use ext4, and just verified for tmpfs, neither work as expected here on Exherbo.

That size difference makes me wonder if rustc is assuming some upstream library has some features enabled, that we, on exherbo, have disabled by default?

@Keruspe
Copy link
Contributor

Keruspe commented May 4, 2018

@james-darkfox It's not a problem with exherbo, but with some exhebro installations.
I know people on exherbo with a working RUST_BACKTRACE.
I suspect maybe some kernel configuration?

@WildCryptoFox
Copy link
Contributor Author

WildCryptoFox commented May 4, 2018

@Keruspe I'm currently running my exherbo environment inside a chroot, for the sake of Xorg, using Debian-based Tails as the host which has its own hardened kernel. However, rust programs compiled outside of the chroot work as expected. Hinting towards exherbo's userland, not kernel.

Worse, while under Tails, gdb and ptrace are forbidden. Fortunately I don't have many panics that I'd need to trace anyway.

IIUC in #[no_std] environments the information required for RUST_BACKTRACE=1 isn't available at all. Therefore I'm leaning towards some rustc assumption in some upstream library is not held. jemalloc or glibc? cave show doesn't hint towards anything obvious.

amnesia@amnesia:~$ RUST_BACKTRACE=1 ./panic
thread 'main' panicked at 'test', panic.rs:2
stack backtrace:
   1:     0x590200a6594a - std::sys::imp::backtrace::tracing::imp::write::h917062bce4ff48c3
                        at /build/rustc-1.14.0+dfsg1/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs:42
   2:     0x590200a68a7f - std::panicking::default_hook::{{closure}}::h0bacac31b5ed1870
                        at /build/rustc-1.14.0+dfsg1/src/libstd/panicking.rs:247
   3:     0x590200a6747c - std::panicking::default_hook::h5897799da33ece67
                        at /build/rustc-1.14.0+dfsg1/src/libstd/panicking.rs:263
   4:     0x590200a67a77 - std::panicking::rust_panic_with_hook::h109e116a3a861224
                        at /build/rustc-1.14.0+dfsg1/src/libstd/panicking.rs:451
   5:     0x590200a60896 - std::panicking::begin_panic::h634e2b37a96f78d4
   6:     0x590200a609ef - panic::main::ha800225901e63f47
   7:     0x590200a703ea - __rust_maybe_catch_panic
                        at /build/rustc-1.14.0+dfsg1/src/libpanic_unwind/lib.rs:97
   8:     0x590200a68255 - std::rt::lang_start::hd661476ce2fc2931
                        at /build/rustc-1.14.0+dfsg1/src/libstd/panicking.rs:332
                        at /build/rustc-1.14.0+dfsg1/src/libstd/panic.rs:351
                        at /build/rustc-1.14.0+dfsg1/src/libstd/rt.rs:57
   9:     0x590200a60a19 - main
  10:     0x7859a3fe72e0 - __libc_start_main
  11:     0x590200a606e9 - _start
  12:                0x0 - <unknown>

@alecmocatta
Copy link
Contributor

To clarify my earlier observation regarding working on ext4 but not under vboxfs – all other things were constant, besides path. i.e. it was the same kernel on the same machine, I just changed the working directory from /home/alec/abc (ext4) to /media/sf_shared/abc (vboxfs). diff -r showed them identical, but the build products differed.

@Keruspe
Copy link
Contributor

Keruspe commented May 4, 2018

@alecmocatta can you print the output of lsmod for those two systems? vboxfs could cause some additional module to be loaded maybe?

@WildCryptoFox
Copy link
Contributor Author

@Keruspe That wouldn't apply in my case where Debian-tails is the host and Exherbo is the guest chroot. The kernel is constant. The userlands differ.

@Keruspe
Copy link
Contributor

Keruspe commented May 4, 2018

@james-darkfox it's worth exploring anyways, could be different ways to trigger it

@alecmocatta
Copy link
Contributor

@Keruspe It's the same system.

$ mount
...
shared on /media/sf_shared type vboxsf (rw,nodev,relatime)
/dev/sda2 on / type ext4 (rw,relatime,data=ordered)
$ lsmod
Module                  Size  Used by
vboxsf                 45056  1
binfmt_misc            20480  1
intel_powerclamp       16384  0
crct10dif_pclmul       16384  0
crc32_pclmul           16384  0
ghash_clmulni_intel    16384  0
vboxvideo              36864  1
ttm                   106496  1 vboxvideo
intel_rapl_perf        16384  0
drm_kms_helper        167936  1 vboxvideo
input_leds             16384  0
serio_raw              16384  0
drm                   401408  4 vboxvideo,ttm,drm_kms_helper
fb_sys_fops            16384  1 drm_kms_helper
syscopyarea            16384  2 vboxvideo,drm_kms_helper
sysfillrect            16384  2 vboxvideo,drm_kms_helper
sysimgblt              16384  2 vboxvideo,drm_kms_helper
vboxguest             303104  2 vboxsf
snd_intel8x0           40960  0
snd_ac97_codec        131072  1 snd_intel8x0
ac97_bus               16384  1 snd_ac97_codec
snd_pcm                98304  2 snd_ac97_codec,snd_intel8x0
snd_timer              32768  1 snd_pcm
snd                    81920  4 snd_ac97_codec,snd_timer,snd_intel8x0,snd_pcm
soundcore              16384  1 snd
mac_hid                16384  0
sch_fq_codel           20480  2
ib_iser                49152  0
rdma_cm                61440  1 ib_iser
iw_cm                  45056  1 rdma_cm
ib_cm                  53248  1 rdma_cm
ib_core               225280  4 ib_iser,ib_cm,rdma_cm,iw_cm
iscsi_tcp              20480  0
libiscsi_tcp           20480  1 iscsi_tcp
libiscsi               53248  3 ib_iser,libiscsi_tcp,iscsi_tcp
scsi_transport_iscsi    98304  4 ib_iser,libiscsi,iscsi_tcp
ip_tables              28672  0
x_tables               40960  1 ip_tables
autofs4                40960  2
btrfs                1122304  0
zstd_compress         163840  1 btrfs
raid10                 53248  0
raid456               143360  0
async_raid6_recov      20480  1 raid456
async_memcpy           16384  2 raid456,async_raid6_recov
async_pq               16384  2 raid456,async_raid6_recov
async_xor              16384  3 async_pq,raid456,async_raid6_recov
async_tx               16384  5 async_xor,async_pq,raid456,async_memcpy,async_raid6_recov
xor                    24576  2 async_xor,btrfs
raid6_pq              114688  4 async_pq,btrfs,raid456,async_raid6_recov
libcrc32c              16384  1 raid456
raid1                  40960  0
raid0                  20480  0
multipath              16384  0
linear                 16384  0
aesni_intel           188416  0
aes_x86_64             20480  1 aesni_intel
crypto_simd            16384  1 aesni_intel
cryptd                 24576  3 crypto_simd,ghash_clmulni_intel,aesni_intel
glue_helper            16384  1 aesni_intel
psmouse               147456  0
ahci                   36864  1
libahci                32768  1 ahci
i2c_piix4              24576  0
e1000                 143360  0
video                  40960  0
pata_acpi              16384  0

@WildCryptoFox
Copy link
Contributor Author

Decided to try using musl. No segfault but useless output.

> rustc --target x86_64-unknown-linux-musl panic.rs
> RUST_BACKTRACE=1 ./panic
thread 'main' panicked at 'explicit panic', panic.rs:2:5
stack backtrace:
   0: <unknown>
   1: <unknown>
   2: <unknown>
   3: <unknown>
   4: <unknown>
   5: <unknown>
   6: <unknown>
   7: <unknown>
   8: <unknown>
   9: <unknown>
  10: <unknown>
  11: <unknown>
  12: <unknown>

@Keruspe
Copy link
Contributor

Keruspe commented Jul 3, 2018

Seems to be fixed here since the switch to the libbacktrace submodule

@Keruspe
Copy link
Contributor

Keruspe commented Jul 9, 2018

With current stable, beta and nightly:

keruspe@Lou ~/rust-segv % rustc-stable foo.rs && ls -lh foo && RUST_BACKTRACE=1 ./foo    
-rwxr-xr-x 1 keruspe keruspe 1.3M Jul  9 11:46 foo
thread 'main' panicked at 'foo', foo.rs:2:1
zsh: segmentation fault (core dumped)  RUST_BACKTRACE=1 ./foo
keruspe@Lou ~/rust-segv % rustc-beta foo.rs && ls -lh foo && RUST_BACKTRACE=1 ./foo      
-rwxr-xr-x 1 keruspe keruspe 1.3M Jul  9 11:46 foo
thread 'main' panicked at 'foo', foo.rs:2:1
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::sys_common::backtrace::print
   2: std::panicking::default_hook::{{closure}}
   3: std::panicking::default_hook
   4: std::panicking::rust_panic_with_hook
   5: std::panicking::begin_panic
   6: foo::main
   7: std::rt::lang_start::{{closure}}
   8: std::panicking::try::do_call
   9: __rust_maybe_catch_panic
  10: std::rt::lang_start_internal
  11: std::rt::lang_start
  12: main
  13: __libc_start_main
  14: _start
keruspe@Lou ~/rust-segv % rustc-nightly foo.rs && ls -lh foo && RUST_BACKTRACE=1 ./foo   
-rwxr-xr-x 1 keruspe keruspe 1.3M Jul  9 11:46 foo
thread 'main' panicked at 'foo', foo.rs:2:1
stack backtrace:
   0: std::sys::unix::backtrace::tracing::imp::unwind_backtrace
   1: std::sys_common::backtrace::print
   2: std::panicking::default_hook::{{closure}}
   3: std::panicking::default_hook
   4: std::panicking::rust_panic_with_hook
   5: std::panicking::begin_panic
   6: foo::main
   7: std::rt::lang_start::{{closure}}
   8: std::panicking::try::do_call
   9: __rust_maybe_catch_panic
  10: std::rt::lang_start_internal
  11: std::rt::lang_start
  12: main
  13: __libc_start_main
  14: _start

@james-darkfox do you still have the problem?

@chaoticlonghair
Copy link
Contributor

I test rustc 1.29.0 (aa3ca1994 2018-09-11) and rustc 1.30.0-nightly (20dc0c507 2018-09-19), the problem is still existed.

@WildCryptoFox
Copy link
Contributor Author

Oops, forgot about this issue. As far as I can tell it was fixed.

@Keruspe
@yangby-cryptape

@WildCryptoFox
Copy link
Contributor Author

Closing per my last comment.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-debuginfo Area: Debugging information in compiled programs (DWARF, PDB, etc.) C-bug Category: This is a bug. I-crash Issue: The compiler crashes (SIGSEGV, SIGABRT, etc). Use I-ICE instead when the compiler panics. O-linux Operating system: Linux
Projects
None yet
Development

No branches or pull requests

6 participants