11a5e31fbSPranith Kumar#!/bin/bash 2c87b9c60SPaul E. McKenney# 3c87b9c60SPaul E. McKenney# Check the console output from an rcutorture run for oopses. 4c87b9c60SPaul E. McKenney# The "file" is a pathname on the local system, and "title" is 5c87b9c60SPaul E. McKenney# a text string for error-message purposes. 6c87b9c60SPaul E. McKenney# 73327d924SPranith Kumar# Usage: parse-console.sh file title 8c87b9c60SPaul E. McKenney# 9c87b9c60SPaul E. McKenney# This program is free software; you can redistribute it and/or modify 10c87b9c60SPaul E. McKenney# it under the terms of the GNU General Public License as published by 11c87b9c60SPaul E. McKenney# the Free Software Foundation; either version 2 of the License, or 12c87b9c60SPaul E. McKenney# (at your option) any later version. 13c87b9c60SPaul E. McKenney# 14c87b9c60SPaul E. McKenney# This program is distributed in the hope that it will be useful, 15c87b9c60SPaul E. McKenney# but WITHOUT ANY WARRANTY; without even the implied warranty of 16c87b9c60SPaul E. McKenney# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17c87b9c60SPaul E. McKenney# GNU General Public License for more details. 18c87b9c60SPaul E. McKenney# 19c87b9c60SPaul E. McKenney# You should have received a copy of the GNU General Public License 200e342a87SPaul E. McKenney# along with this program; if not, you can access it online at 210e342a87SPaul E. McKenney# http://www.gnu.org/licenses/gpl-2.0.html. 22c87b9c60SPaul E. McKenney# 23c87b9c60SPaul E. McKenney# Copyright (C) IBM Corporation, 2011 24c87b9c60SPaul E. McKenney# 25c87b9c60SPaul E. McKenney# Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com> 26c87b9c60SPaul E. McKenney 27c87b9c60SPaul E. McKenneyfile="$1" 28c87b9c60SPaul E. McKenneytitle="$2" 29c87b9c60SPaul E. McKenney 306d40cc0cSPaul E. McKenney. functions.sh 316d40cc0cSPaul E. McKenney 32bc51896dSPaul E. McKenneyif grep -Pq '\x00' < $file 33bc51896dSPaul E. McKenneythen 34bc51896dSPaul E. McKenney print_warning Console output contains nul bytes, old qemu still running? 35bc51896dSPaul E. McKenneyfi 36682ed706SPaul E. McKenneyegrep 'Badness|WARNING:|Warn|BUG|===========|Call Trace:|Oops:|detected stalls on CPUs/tasks:|self-detected stall on CPU|Stall ended before state dump start|\?\?\? Writer stall state|rcu_.*kthread starved for' < $file | grep -v 'ODEBUG: ' | grep -v 'Warning: unable to open an initial console' > $1.diags 375708c647SPaul E. McKenneyif test -s $1.diags 38c87b9c60SPaul E. McKenneythen 396d40cc0cSPaul E. McKenney print_warning Assertion failure in $file $title 405708c647SPaul E. McKenney # cat $1.diags 415708c647SPaul E. McKenney summary="" 425708c647SPaul E. McKenney n_badness=`grep -c Badness $1` 435708c647SPaul E. McKenney if test "$n_badness" -ne 0 445708c647SPaul E. McKenney then 455708c647SPaul E. McKenney summary="$summary Badness: $n_badness" 465708c647SPaul E. McKenney fi 475708c647SPaul E. McKenney n_warn=`grep -v 'Warning: unable to open an initial console' $1 | egrep -c 'WARNING:|Warn'` 485708c647SPaul E. McKenney if test "$n_warn" -ne 0 495708c647SPaul E. McKenney then 505708c647SPaul E. McKenney summary="$summary Warnings: $n_warn" 515708c647SPaul E. McKenney fi 525708c647SPaul E. McKenney n_bugs=`egrep -c 'BUG|Oops:' $1` 535708c647SPaul E. McKenney if test "$n_bugs" -ne 0 545708c647SPaul E. McKenney then 555708c647SPaul E. McKenney summary="$summary Bugs: $n_bugs" 565708c647SPaul E. McKenney fi 575708c647SPaul E. McKenney n_calltrace=`grep -c 'Call Trace:' $1` 585708c647SPaul E. McKenney if test "$n_calltrace" -ne 0 595708c647SPaul E. McKenney then 605708c647SPaul E. McKenney summary="$summary Call Traces: $n_calltrace" 615708c647SPaul E. McKenney fi 625708c647SPaul E. McKenney n_lockdep=`grep -c =========== $1` 635708c647SPaul E. McKenney if test "$n_badness" -ne 0 645708c647SPaul E. McKenney then 655708c647SPaul E. McKenney summary="$summary lockdep: $n_badness" 665708c647SPaul E. McKenney fi 675d43edb4SPaul E. McKenney n_stalls=`egrep -c 'detected stalls on CPUs/tasks:|self-detected stall on CPU|Stall ended before state dump start|\?\?\? Writer stall state' $1` 685708c647SPaul E. McKenney if test "$n_stalls" -ne 0 695708c647SPaul E. McKenney then 705708c647SPaul E. McKenney summary="$summary Stalls: $n_stalls" 715708c647SPaul E. McKenney fi 72682ed706SPaul E. McKenney n_starves=`grep -c 'rcu_.*kthread starved for' $1` 73682ed706SPaul E. McKenney if test "$n_starves" -ne 0 74682ed706SPaul E. McKenney then 75682ed706SPaul E. McKenney summary="$summary Starves: $n_starves" 76682ed706SPaul E. McKenney fi 775708c647SPaul E. McKenney print_warning Summary: $summary 78fc91cbabSPaul E. McKenneyelse 79fc91cbabSPaul E. McKenney rm $1.diags 80c87b9c60SPaul E. McKenneyfi 81