@@ -1496,6 +1496,22 @@ for {set boot 0} {\$boot < \$max_boot} {incr boot 1} {
14961496 if {\$ boot > 0} {
14971497 send_user "\n$( log_section_end) "
14981498 if {\$ unexp_stop == 0} {
1499+ set timeout "60"
1500+ send_user "Timeout: Getting more info via GDB\n"
1501+ spawn gdb-multiarch --batch -x "${VIRTME_SCRIPT_TIMEOUT_GDB} " vmlinux
1502+ expect {
1503+ "detached" {
1504+ send_user "Timeout: Getting more info via GDB: end\n"
1505+ } timeout {
1506+ send_user "Timeout: Getting more info via GDB: timeout\n"
1507+ send "\x03\r"
1508+ } eof {
1509+ send_user "Timeout: Getting more info via GDB: unexpected end\n"
1510+ }
1511+ }
1512+ close
1513+
1514+ set spawn_id \$ serial_id
14991515 close
15001516 wait
15011517 }
@@ -1629,7 +1645,6 @@ expect {
16291645
16301646 send_user "Timeout: Getting more info via GDB\n"
16311647 spawn gdb-multiarch --batch -x "${VIRTME_SCRIPT_TIMEOUT_GDB} " vmlinux
1632- set gdb_id \$ spawn_id
16331648 expect {
16341649 "detached" {
16351650 send_user "Timeout: Getting more info via GDB: end\n"
@@ -1729,7 +1744,13 @@ _print_issues() {
17291744}
17301745
17311746_has_call_trace () {
1732- grep -q " Call Trace:" " ${OUTPUT_VIRTME} "
1747+ grep -aA 9999999 " ${VIRTME_SCRIPT} " " ${OUTPUT_VIRTME} " |
1748+ grep -q " Call Trace:"
1749+ }
1750+
1751+ _has_call_trace_at_boot () {
1752+ grep -aB 9999999 " ${VIRTME_SCRIPT} " " ${OUTPUT_VIRTME} " |
1753+ grep -q " Call Trace:"
17331754}
17341755
17351756_print_line () {
@@ -1796,6 +1817,14 @@ _print_kmemleak() {
17961817 echo " KMemLeak detected"
17971818}
17981819
1820+ _has_boot_failure () {
1821+ grep -q " Boot VM (1)" " ${OUTPUT_VIRTME} "
1822+ }
1823+
1824+ _print_boot_failure () {
1825+ echo " Had $( grep -c " Boot VM " " ${OUTPUT_VIRTME} " ) boot attempts"
1826+ }
1827+
17991828# $1: mode, rest: args for kconfig
18001829_print_summary_header () {
18011830 local mode=" ${1} "
@@ -1943,6 +1972,21 @@ analyze() {
19431972 EXIT_STATUS=1
19441973 fi
19451974
1975+ if _has_call_trace_at_boot; then
1976+ # not to print errors twice
1977+ if ! _has_call_trace; then
1978+ _print_call_trace_info | tee -a " ${TESTS_SUMMARY} "
1979+ fi
1980+ # TODO: remove the next two lines when the root cause is known
1981+ _register_issue " Critical" " Call Traces at boot time"
1982+ EXIT_STATUS=1
1983+ elif _has_boot_failure; then
1984+ _print_boot_failure | tee -a " ${TESTS_SUMMARY} "
1985+ # TODO: remove the next two lines when the root cause is known
1986+ _register_issue " Critical" " Boot failures"
1987+ EXIT_STATUS=1
1988+ fi
1989+
19461990 if [ -s " ${LCOV_FILE} " ]; then
19471991 lcov --branch-coverage --function-coverage --keep-going \
19481992 --summary " ${LCOV_FILE} " | tee " ${LCOV_TXT} " || true
0 commit comments