Skip to content

Commit

Permalink
Improve filtering in default-backtrace-ice.rs.
Browse files Browse the repository at this point in the history
This test is supposed to ensure that full backtraces are used for ICEs.
But it doesn't actually do that -- the filtering done cannot distinguish
between a full backtrace versus a short backtrace.

So this commit changes the filtering to preserve the existence of
`__rust_{begin,end}_short_backtrace` markers, which only appear in full
backtraces. This change means the test now tests what it is supposed to
test.

Also, the existing filtering included a rule that excluded any line
starting with two spaces. This was too strong because it filtered out
some parts of the error message. (This was not a showstopper). It was
also not strong enough because it didn't work with three digit stack
frame numbers, which just started seeing after upgrading my Ubuntu
distro to 23.04 machine (this *was* a showstopper).

So the commit replaces that rule with two more precise rules, one for
lines with stack frame numbers, and one for "at ..." lines.
  • Loading branch information
nnethercote committed May 4, 2023
1 parent 8702591 commit f20738d
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 1 deletion.
14 changes: 13 additions & 1 deletion tests/ui/panics/default-backtrace-ice.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,20 @@
// compile-flags:-Z treat-err-as-bug=1
// error-pattern:stack backtrace:
// failure-status:101
// ignore-msvc
// normalize-stderr-test "note: .*" -> ""
// normalize-stderr-test "thread 'rustc' .*" -> ""
// normalize-stderr-test " .*\n" -> ""
// normalize-stderr-test " +\d+:.*__rust_begin_short_backtrace.*" -> "(begin_short_backtrace)"
// normalize-stderr-test " +\d+:.*__rust_end_short_backtrace.*" -> "(end_short_backtrace)"
// normalize-stderr-test " +\d+:.*\n" -> ""
// normalize-stderr-test " +at .*\n" -> ""
//
// This test makes sure that full backtraces are used for ICEs when
// RUST_BACKTRACE is not set. It does this by checking for the presence of
// `__rust_{begin,end}_short_backtrace` markers, which only appear in full
// backtraces. The rest of the backtrace is filtered out.
//
// Ignored on msvc becaue the `__rust_{begin,end}_short_backtrace` symbols
// aren't reliable.

fn main() { missing_ident; }
5 changes: 5 additions & 0 deletions tests/ui/panics/default-backtrace-ice.stderr
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
error[E0425]: cannot find value `missing_ident` in this scope
--> $DIR/default-backtrace-ice.rs:21:13
|
LL | fn main() { missing_ident; }
| ^^^^^^^^^^^^^ not found in this scope


stack backtrace:
(end_short_backtrace)
(begin_short_backtrace)

error: the compiler unexpectedly panicked. this is a bug.

Expand Down

0 comments on commit f20738d

Please sign in to comment.