diff --git a/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs b/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs index 8691fe55e7ceb..cfeabaddda985 100644 --- a/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs +++ b/src/libstd/sys/unix/backtrace/tracing/gcc_s.rs @@ -53,7 +53,9 @@ pub fn unwind_backtrace(frames: &mut [Frame]) // See libunwind:src/unwind/Backtrace.c for the return values. // No, there is no doc. match result_unwind { - uw::_URC_END_OF_STACK | uw::_URC_FATAL_PHASE1_ERROR => { + // These return codes seem to be benign and need to be ignored for backtraces + // to show up properly on all tested platforms. + uw::_URC_END_OF_STACK | uw::_URC_FATAL_PHASE1_ERROR | uw::_URC_FAILURE => { Ok((cx.idx, BacktraceContext)) } _ => { diff --git a/src/libstd/sys_common/backtrace.rs b/src/libstd/sys_common/backtrace.rs index 6618b1dd03ade..08801f543ef8c 100644 --- a/src/libstd/sys_common/backtrace.rs +++ b/src/libstd/sys_common/backtrace.rs @@ -134,6 +134,7 @@ fn filter_frames(frames: &[Frame], "__libc_start_main", "__rust_try", "_start", + "main", "BaseThreadInitThunk", "__scrt_common_main_seh", "_ZN4drop",