parse-console.sh 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #!/bin/bash
  2. #
  3. # Check the console output from an rcutorture run for oopses.
  4. # The "file" is a pathname on the local system, and "title" is
  5. # a text string for error-message purposes.
  6. #
  7. # Usage: parse-console.sh file title
  8. #
  9. # This program is free software; you can redistribute it and/or modify
  10. # it under the terms of the GNU General Public License as published by
  11. # the Free Software Foundation; either version 2 of the License, or
  12. # (at your option) any later version.
  13. #
  14. # This program is distributed in the hope that it will be useful,
  15. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. # GNU General Public License for more details.
  18. #
  19. # You should have received a copy of the GNU General Public License
  20. # along with this program; if not, you can access it online at
  21. # http://www.gnu.org/licenses/gpl-2.0.html.
  22. #
  23. # Copyright (C) IBM Corporation, 2011
  24. #
  25. # Authors: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
  26. file="$1"
  27. title="$2"
  28. . functions.sh
  29. if grep -Pq '\x00' < $file
  30. then
  31. print_warning Console output contains nul bytes, old qemu still running?
  32. fi
  33. egrep '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
  34. if test -s $1.diags
  35. then
  36. print_warning Assertion failure in $file $title
  37. # cat $1.diags
  38. summary=""
  39. n_badness=`grep -c Badness $1`
  40. if test "$n_badness" -ne 0
  41. then
  42. summary="$summary Badness: $n_badness"
  43. fi
  44. n_warn=`grep -v 'Warning: unable to open an initial console' $1 | egrep -c 'WARNING:|Warn'`
  45. if test "$n_warn" -ne 0
  46. then
  47. summary="$summary Warnings: $n_warn"
  48. fi
  49. n_bugs=`egrep -c 'BUG|Oops:' $1`
  50. if test "$n_bugs" -ne 0
  51. then
  52. summary="$summary Bugs: $n_bugs"
  53. fi
  54. n_calltrace=`grep -c 'Call Trace:' $1`
  55. if test "$n_calltrace" -ne 0
  56. then
  57. summary="$summary Call Traces: $n_calltrace"
  58. fi
  59. n_lockdep=`grep -c =========== $1`
  60. if test "$n_badness" -ne 0
  61. then
  62. summary="$summary lockdep: $n_badness"
  63. fi
  64. n_stalls=`egrep -c 'detected stalls on CPUs/tasks:|self-detected stall on CPU|Stall ended before state dump start|\?\?\? Writer stall state' $1`
  65. if test "$n_stalls" -ne 0
  66. then
  67. summary="$summary Stalls: $n_stalls"
  68. fi
  69. n_starves=`grep -c 'rcu_.*kthread starved for' $1`
  70. if test "$n_starves" -ne 0
  71. then
  72. summary="$summary Starves: $n_starves"
  73. fi
  74. print_warning Summary: $summary
  75. else
  76. rm $1.diags
  77. fi