From 65aeaea0bc47637030ebe4c2d3a103e1fddaa8d8 Mon Sep 17 00:00:00 2001 From: fche Date: Tue, 2 Oct 2007 17:44:25 +0000 Subject: 2007-10-02 Frank Ch. Eigler PR 5078 * tapsets.cxx (be_derived_probe): Rework to add error probe support. Emit probe description array in C for traversal by generated code. * register_standard_tapsets: Add error probes. * stapprobes.5.in: Document. * translate.cxx (emit_module_init): Handle errors that may occur during begin probes. (emit_module_exit): Use schedule() rather than cpu_relax() during shutdown synchronization wait loop. * staptree.cxx (probe::printsig): Put multiple probe points on same line. 2007-10-02 Frank Ch. Eigler PR 5078 * semok/twentysix.stp, systemtap.base/beginenderror.*: New tests. --- testsuite/systemtap.base/beginenderror.exp | 22 ++++++++++++++++++++++ testsuite/systemtap.base/beginenderror.stp | 5 +++++ 2 files changed, 27 insertions(+) create mode 100644 testsuite/systemtap.base/beginenderror.exp create mode 100644 testsuite/systemtap.base/beginenderror.stp (limited to 'testsuite/systemtap.base') diff --git a/testsuite/systemtap.base/beginenderror.exp b/testsuite/systemtap.base/beginenderror.exp new file mode 100644 index 00000000..9ad596cb --- /dev/null +++ b/testsuite/systemtap.base/beginenderror.exp @@ -0,0 +1,22 @@ +set test "beginenderror" + +if {![installtest_p]} {untested $test; return} + +spawn stap $srcdir/$subdir/beginenderror.stp +set ok1 0 +set ok2 0 +set ko 0 +expect { + -re {^ERROR:[^\r\n]*\r\n} { incr ok1; exp_continue } + -re {^WARNING:[^\r\n]*\r\n} { incr ok1; exp_continue } + -re {^ok[^\r\n]*\r\n} { incr ok2; exp_continue } + -re {^ko[^\r\n]*\r\n} { incr ko; exp_continue } + timeout { fail "$test (timeout)" } + eof { } +} +wait +if {$ok1 == 4 && $ok2 == 3 && $ko == 0} then { + pass "$test ($ok1 $ok2 $ko)" +} else { + fail "$test ($ok1 $ok2 $ko)" +} diff --git a/testsuite/systemtap.base/beginenderror.stp b/testsuite/systemtap.base/beginenderror.stp new file mode 100644 index 00000000..8d0772cd --- /dev/null +++ b/testsuite/systemtap.base/beginenderror.stp @@ -0,0 +1,5 @@ +probe begin { println ("ok ".pp()) println (1/0) println ("ko ".pp()) } # handler should unwind before seemenot message +probe begin(10) { println ("ko ".pp()) } # this late begin probe shouldn't run, ERROR +probe end, end(10) { println ("ko ".pp()) } # end probes won't be run due to ERROR state +probe error, error(10) { println ("ok ".pp()) } # these handlers should be run +probe error(20),error(30) { println (1/0) println ("ko ".pp()) } # likewise -- cgit