8eb5843a59
Implement rust-lang/compiler-team#578. When an ICE is encountered on nightly releases, the new rustc panic handler will also write the contents of the backtrace to disk. If any `delay_span_bug`s are encountered, their backtrace is also added to the file. The platform and rustc version will also be collected.
37 lines
1.3 KiB
Bash
37 lines
1.3 KiB
Bash
#!/bin/sh
|
|
export RUSTC_ICE=0
|
|
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 + 5)) -lt $rustc_query_count_full ] &&
|
|
[ $rustc_query_count_full -gt 5 ]; then
|
|
exit 0
|
|
else
|
|
exit 1
|
|
fi
|