diff options
| author | yukang <moorekang@gmail.com> | 2023-03-09 22:05:57 +0800 |
|---|---|---|
| committer | yukang <moorekang@gmail.com> | 2023-05-17 17:56:26 +0800 |
| commit | c3394b3eaa0f6fa135ddca67c3cabb3e9cd41a04 (patch) | |
| tree | e47317ba9e7ef5b3196c62a12a97c7adc66f4d5f /tests/run-make | |
| parent | c2ccc855e74aec03e434405eca3c247ee2432e53 (diff) | |
| download | rust-c3394b3eaa0f6fa135ddca67c3cabb3e9cd41a04.tar.gz rust-c3394b3eaa0f6fa135ddca67c3cabb3e9cd41a04.zip | |
Fix #107910, Shorten backtraces in ICEs
Diffstat (limited to 'tests/run-make')
| -rw-r--r-- | tests/run-make/short-ice/Makefile | 9 | ||||
| -rw-r--r-- | tests/run-make/short-ice/check.sh | 36 | ||||
| -rw-r--r-- | tests/run-make/short-ice/src/lib.rs | 7 |
3 files changed, 52 insertions, 0 deletions
diff --git a/tests/run-make/short-ice/Makefile b/tests/run-make/short-ice/Makefile new file mode 100644 index 00000000000..4f33d590237 --- /dev/null +++ b/tests/run-make/short-ice/Makefile @@ -0,0 +1,9 @@ +include ../tools.mk + +# ignore-windows + +export RUSTC := $(RUSTC_ORIGINAL) +export TMPDIR := $(TMPDIR) + +all: + bash check.sh diff --git a/tests/run-make/short-ice/check.sh b/tests/run-make/short-ice/check.sh new file mode 100644 index 00000000000..96cd8fe86bc --- /dev/null +++ b/tests/run-make/short-ice/check.sh @@ -0,0 +1,36 @@ +#!/bin/sh + +RUST_BACKTRACE=1 $RUSTC src/lib.rs -Z treat-err-as-bug=1 1>$TMPDIR/rust-test-1.log 2>&1 +RUST_BACKTRACE=full $RUSTC src/lib.rs -Z treat-err-as-bug=1 1>$TMPDIR/rust-test-2.log 2>&1 + +short=$(cat $TMPDIR/rust-test-1.log | wc -l) +full=$(cat $TMPDIR/rust-test-2.log | wc -l) +rustc_query_count=$(cat $TMPDIR/rust-test-1.log | grep rustc_query_ | wc -l) +rustc_query_count_full=$(cat $TMPDIR/rust-test-2.log | grep rustc_query_ | wc -l) + +begin_count=$(cat $TMPDIR/rust-test-2.log | grep __rust_begin_short_backtrace | wc -l) +end_count=$(cat $TMPDIR/rust-test-2.log | grep __rust_end_short_backtrace | wc -l) + +cat $TMPDIR/rust-test-1.log +echo "=====================" +cat $TMPDIR/rust-test-2.log +echo "=====================" + +echo "short backtrace: $short" +echo "full backtrace: $full" +echo "begin_count: $begin_count" +echo "end_count : $end_count" +echo "rustc_query_count: $rustc_query_count" +echo "rustc_query_count_full: $rustc_query_count_full" + +## backtraces to vary a bit depending on platform and configuration options, +## here we make sure that the short backtrace of rustc_query is shorter than the full, +## and marks are in pairs. +if [ $short -lt $full ] && + [ $begin_count -eq $end_count ] && + [ $(($rustc_query_count + 10)) -lt $rustc_query_count_full ] && + [ $rustc_query_count_full -gt 10 ]; then + exit 0 +else + exit 1 +fi diff --git a/tests/run-make/short-ice/src/lib.rs b/tests/run-make/short-ice/src/lib.rs new file mode 100644 index 00000000000..b23b7f830d7 --- /dev/null +++ b/tests/run-make/short-ice/src/lib.rs @@ -0,0 +1,7 @@ +fn func(s: &str) { + println!("{}", s); +} + +fn main() { + func(1); +} |
