Include downstream/RHEL tests

Find new home for downstream RHEL tests.  Upstream them.  The set of
tests used for fedora gating stays intact:  The gating tests are only
those having the tier1 tag set in their main.fmf file.  The testplan
plans/ci.fmf filters the others out from gating.

The set of Fedora gating tests stays the same as it was before this
change.
This commit is contained in:
Martin Cermak 2022-05-10 09:56:18 +02:00
parent 1b351ce0ad
commit 8d5d041590
119 changed files with 6120 additions and 7 deletions

View File

@ -2,6 +2,7 @@ summary: CI Gating Plan
discover:
how: fmf
directory: tests
filter: 'tier: 1'
prepare:
how: install
exclude:

View File

@ -0,0 +1,16 @@
summary: Test for BZ#1054962 (Backport PR16166 stap -vvv causes SIGSEGV when)
description: Backport PR16166
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
require:
recommend:
- valgrind
- systemtap
duration: 15m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1054962
extra-summary: /tools/systemtap/Regression/PR16166
extra-task: /tools/systemtap/Regression/PR16166

View File

@ -0,0 +1,67 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/PR16166
# Description: Test for BZ#1054962 (Backport PR16166 stap -vvv causes SIGSEGV when)
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
rlJournalStart
rlPhaseStartSetup
rlRun "TMPDIR=\$(mktemp -d)"
rlRun "cp towers.c $TMPDIR/"
rlRun "pushd $TMPDIR"
rlRun "gcc -g towers.c -o towers.x"
cat > script.stp <<-EOF
global x
probe perf.hw.cpu_cycles.process("towers.x").counter("a") {}
probe process("towers.x").function("main")
{
# wrong type
x = "b" . @perf("a")
}
EOF
rlRun "which valgrind"
rlRun "valgrind --version"
rlPhaseEnd
rlPhaseStartTest
# following is expected to fail
rlRun "valgrind --log-file=output.txt stap -vvv script.stp" 1
# ... but not to segfault
rlRun "grep SIGSEGV output.txt" 1
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TMPDIR"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,155 @@
# include <stdio.h>
# include <stdlib.h>
#define towersbase 2.39
/* Towers */
#define maxcells 18
#define stackrange 3
#define true 1
#define false 0
struct element
{
int discsize;
int next;
};
/* Towers */
int stack[stackrange + 1];
struct element cellspace[maxcells + 1];
int freelist, movesdone;
/* Program to Solve the Towers of Hanoi */
void
error (emsg)
char *emsg;
{
printf ("Error in Towers: %s\n", emsg);
}
void
makenull (s)
{
stack[s] = 0;
}
int
get_element ()
{
int temp;
if (freelist > 0)
{
temp = freelist;
freelist = cellspace[freelist].next;
}
else
error ("out of space ");
return (temp);
}
void
push (i, s)
int i, s;
{
int errorfound, localel;
errorfound = false;
if (stack[s] > 0)
if (cellspace[stack[s]].discsize <= i)
{
errorfound = true;
error ("disc size error");
};
if (!errorfound)
{
localel = get_element ();
cellspace[localel].next = stack[s];
stack[s] = localel;
cellspace[localel].discsize = i;
}
}
void
init (s, n)
int s, n;
{
int discctr;
makenull (s);
for (discctr = n; discctr >= 1; discctr--)
push (discctr, s);
}
int
pop (s)
int s;
{
int temp, temp1;
if (stack[s] > 0)
{
temp1 = cellspace[stack[s]].discsize;
temp = cellspace[stack[s]].next;
cellspace[stack[s]].next = freelist;
freelist = stack[s];
stack[s] = temp;
return (temp1);
}
else
error ("nothing to pop ");
return 0;
}
void
move (s1, s2)
int s1, s2;
{
push (pop (s1), s2);
movesdone = movesdone + 1;
}
void
tower (i, j, k)
int i, j, k;
{
int other;
if (k == 1)
move (i, j);
else
{
other = 6 - i - j;
tower (i, other, k - 1);
move (i, j);
tower (other, j, k - 1);
}
}
void
towers ()
{
int i;
for (i = 1; i <= maxcells; i++)
cellspace[i].next = i - 1;
freelist = maxcells;
init (1, 14);
makenull (2);
makenull (3);
movesdone = 0;
tower (1, 2, 14);
if (movesdone != 16383)
printf (" error in Towers.\n");
}
#ifndef LOOP
#define LOOP 500
#endif
int
main ()
{
int i;
for (i= 0; i < LOOP; i++)
towers();
return 0;
}

View File

@ -0,0 +1,31 @@
With 5.18.0-0.rc5.20220504git107c948d1d3e61d.42.fc37.x86_64 we have
---------------------8<--------------------------------------------------------
:: [ 08:26:39 ] :: [ BEGIN ] :: Running 'stap --skip-badvars --ldd backtrackator.stp -c ./classes > output.out'
In file included from /usr/share/systemtap/runtime/linux/../regs.c:20,
from /usr/share/systemtap/runtime/linux/runtime.h:270,
from /usr/share/systemtap/runtime/runtime.h:26,
from /tmp/stap7hYYpn/stap_9beffd9064cc2c18ddd2daf7f47a7e44_5966_src.c:21:
/usr/share/systemtap/runtime/stack.c: In function _stp_stack_unwind_one_kernel:
/usr/share/systemtap/runtime/linux/../linux/regs.c:23:32: error: struct kretprobe_instance has no member named ret_addr
23 | #define _stp_ret_addr_r(ri) (ri->ret_addr)
| ^~
/usr/share/systemtap/runtime/stack.c:358:47: note: in expansion of macro _stp_ret_addr_r
358 | return (unsigned long)_stp_ret_addr_r(c->ips.krp.pi);
| ^~~~~~~~~~~~~~~
make[1]: *** [scripts/Makefile.build:288: /tmp/stap7hYYpn/stap_9beffd9064cc2c18ddd2daf7f47a7e44_5966_src.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:1844: /tmp/stap7hYYpn] Error 2
WARNING: kbuild exited with status: 2
Pass 4: compilation failed. [man error::pass4]
:: [ 08:26:59 ] :: [ FAIL ] :: Command 'stap --skip-badvars --ldd backtrackator.stp -c ./classes > output.out' (Expected 0, got 1)
---------------------8<--------------------------------------------------------
Related to CONFIG_KRETPROBE_ON_RETHOOK https://elixir.bootlin.com/linux/v5.18-rc5/source/include/linux/kprobes.h#L163
Needs fixing on the stap side.

View File

@ -0,0 +1,15 @@
function mypr:long(){
printf("================================================================================\n");
printf("Probed function: [%s]\n\n", probefunc());
printf ("Backtrace:\n");
print_ubacktrace();
return 0;
}
probe process("classes").function("public*") { mypr(); }
probe process("classes").function("private*") { mypr(); }
probe process("classes").function("recursive*") { mypr(); }
probe process("classes").function("main*") { mypr(); }

View File

@ -0,0 +1,43 @@
#include "classes.hpp"
#include <iostream>
void A::privateA1(){
std::cout << "privateA1" << std::endl;
this->privateA2();
}
void A::privateA2(){
std::cout << "privateA2" << std::endl;
this->recursiveA1(3);
}
void A::recursiveA1(int count){
std::cout << "recursiveA1: " << count << std::endl;
if (count == 0)
return;
this->recursiveA1(count-1);
return;
}
void A::publicA1(){
std::cout << "publicA1" << std::endl;
this->publicA2();
}
void A::publicA2(){
std::cout << "publicA2" << std::endl;
this->privateA1();
}
void B::privateB1(A a){
std::cout << "privateB1" << std::endl;
a.publicA1();
}
void B::publicB1(A a){
std::cout << "publicB1" << std::endl;
this->privateB1(a);
}

View File

@ -0,0 +1,16 @@
class A{
private:
void privateA1();
void privateA2();
void recursiveA1(int);
public:
void publicA1();
void publicA2();
};
class B{
private:
void privateB1(A);
public:
void publicB1(A);
};

View File

@ -0,0 +1,142 @@
publicB1
privateB1
publicA1
publicA2
privateA1
privateA2
recursiveA1: 3
recursiveA1: 2
recursiveA1: 1
recursiveA1: 0
================================================================================
Probed function: [main]
Backtrace:
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicB1]
Backtrace:
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateB1]
Backtrace:
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA1]
Backtrace:
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA2]
Backtrace:
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA1]
Backtrace:
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA2]
Backtrace:
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : generic_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]

View File

@ -0,0 +1,76 @@
publicB1
privateB1
publicA1
publicA2
privateA1
privateA2
recursiveA1: 3
recursiveA1: 2
recursiveA1: 1
recursiveA1: 0
================================================================================
Probed function: [main]
Backtrace:
ADDRESS : main+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)
================================================================================
Probed function: [publicB1]
Backtrace:
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)
================================================================================
Probed function: [privateB1]
Backtrace:
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)
================================================================================
Probed function: [publicA1]
Backtrace:
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)
================================================================================
Probed function: [publicA2]
Backtrace:
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)
================================================================================
Probed function: [privateA1]
Backtrace:
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)
================================================================================
Probed function: [privateA2]
Backtrace:
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
[ADDRESS] [ADDRESS] ADDRESS (inexact)

View File

@ -0,0 +1,65 @@
publicB1
privateB1
publicA1
publicA2
privateA1
privateA2
recursiveA1: 3
recursiveA1: 2
recursiveA1: 1
recursiveA1: 0
================================================================================
Probed function: [main]
Backtrace:
ADDRESS : main+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicB1]
Backtrace:
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateB1]
Backtrace:
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA1]
Backtrace:
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA2]
Backtrace:
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA1]
Backtrace:
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA2]
Backtrace:
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]

View File

@ -0,0 +1,153 @@
publicB1
privateB1
publicA1
publicA2
privateA1
privateA2
recursiveA1: 3
recursiveA1: 2
recursiveA1: 1
recursiveA1: 0
================================================================================
Probed function: [main]
Backtrace:
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicB1]
Backtrace:
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateB1]
Backtrace:
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA1]
Backtrace:
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA2]
Backtrace:
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA1]
Backtrace:
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA2]
Backtrace:
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]

View File

@ -0,0 +1,142 @@
publicB1
privateB1
publicA1
publicA2
privateA1
privateA2
recursiveA1: 3
recursiveA1: 2
recursiveA1: 1
recursiveA1: 0
================================================================================
Probed function: [main]
Backtrace:
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicB1]
Backtrace:
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateB1]
Backtrace:
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA1]
Backtrace:
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA2]
Backtrace:
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA1]
Backtrace:
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA2]
Backtrace:
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.17+ADDRESS/ADDRESS [PATH]

View File

@ -0,0 +1,153 @@
publicB1
privateB1
publicA1
publicA2
privateA1
privateA2
recursiveA1: 3
recursiveA1: 2
recursiveA1: 1
recursiveA1: 0
================================================================================
Probed function: [main]
Backtrace:
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicB1]
Backtrace:
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateB1]
Backtrace:
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA1]
Backtrace:
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA2]
Backtrace:
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA1]
Backtrace:
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA2]
Backtrace:
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]

View File

@ -0,0 +1,153 @@
publicB1
privateB1
publicA1
publicA2
privateA1
privateA2
recursiveA1: 3
recursiveA1: 2
recursiveA1: 1
recursiveA1: 0
================================================================================
Probed function: [main]
Backtrace:
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicB1]
Backtrace:
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateB1]
Backtrace:
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA1]
Backtrace:
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA2]
Backtrace:
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA1]
Backtrace:
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA2]
Backtrace:
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_call_main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main@GLIBC_2.2.5+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]

View File

@ -0,0 +1,142 @@
publicB1
privateB1
publicA1
publicA2
privateA1
privateA2
recursiveA1: 3
recursiveA1: 2
recursiveA1: 1
recursiveA1: 0
================================================================================
Probed function: [main]
Backtrace:
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicB1]
Backtrace:
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateB1]
Backtrace:
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA1]
Backtrace:
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [publicA2]
Backtrace:
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA1]
Backtrace:
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [privateA2]
Backtrace:
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]
================================================================================
Probed function: [recursiveA1]
Backtrace:
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : recursiveA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA2+ADDRESS/ADDRESS [PATH]
ADDRESS : privateA1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA2+ADDRESS/ADDRESS [PATH]
ADDRESS : publicA1+ADDRESS/ADDRESS [PATH]
ADDRESS : privateB1+ADDRESS/ADDRESS [PATH]
ADDRESS : publicB1+ADDRESS/ADDRESS [PATH]
ADDRESS : main+ADDRESS/ADDRESS [PATH]
ADDRESS : __libc_start_main+ADDRESS/ADDRESS [PATH]
ADDRESS : _start+ADDRESS/ADDRESS [PATH]

View File

@ -0,0 +1,10 @@
#include "classes.hpp"
int main(){
A a;
B b;
b.publicB1(a);
return 0;
}

View File

@ -0,0 +1,14 @@
summary: Tests backtracking in C++ programs
description: ''
contact: Petr Muller <pmuller@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
- gcc-c++
- glibc-debuginfo
duration: 10m
extra-summary: /tools/systemtap/Regression/RHEL6Feature-cpp-backtraces
extra-task: /tools/systemtap/Regression/RHEL6Feature-cpp-backtraces

View File

@ -0,0 +1,116 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/RHEL6Feature-cpp-backtraces
# Description: Tests backtracking in C++ programs
# Author: Petr Muller <pmuller@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include rhts environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
inputAs_rlLog(){
while read line
do
rlLog "$line"
done
}
compareAndLog(){
rlAssertNotDiffer "$1" "$2"
if [ "$?" != "0" ]
then
rlLog "Difference:"
diff -u "$1" "$2" | inputAs_rlLog
fi
}
rlJournalStart
rlPhaseStartSetup
rlRun "g++ classes.cpp main.cpp -g -o classes"
rlAssertRpm glibc # show NVR
rlAssertRpm glibc-debuginfo
rlRun "stap-prep" 0-255
rlPhaseEnd
rlPhaseStartTest
rlRun "stap --ldd backtrackator.stp -c ./classes > output.out"
rlRun "cp output.out unprocessed.out"
rlLog "Processing output"
rlRun "sed -i -r -e 's/0x[0-9a-f]+/ADDRESS/g' output.out"
rlRun "sed -i -r -e 's/_[_A-Za-z0-9]*publicA1[A-Za-z0-9]*/publicA1/g' output.out"
rlRun "sed -i -r -e 's/_[_A-Za-z0-9]*publicA2[A-Za-z0-9]*/publicA2/g' output.out"
rlRun "sed -i -r -e 's/_[_A-Za-z0-9]*privateA1[A-Za-z0-9]*/privateA1/g' output.out"
rlRun "sed -i -r -e 's/_[_A-Za-z0-9]*privateA2[A-Za-z0-9]*/privateA2/g' output.out"
rlRun "sed -i -r -e 's/_[_A-Za-z0-9]*recursiveA1[A-Za-z0-9]*/recursiveA1/g' output.out"
rlRun "sed -i -r -e 's/_[_A-Za-z0-9]*publicB1[A-Za-z0-9]*/publicB1/g' output.out"
rlRun "sed -i -r -e 's/_[_A-Za-z0-9]*privateB1[A-Za-z0-9]*/privateB1/g' output.out"
rlRun "sed -i -r -e 's!\[((.*\/.*)|(classes))\]!\[PATH\]!g' output.out"
# http://stackoverflow.com/questions/13963150/what-does-the-gcc-function-suffix-isra-mean
rlIsRHEL '>=' 7 && arch | grep -q ppc && \
rlRun "sed -i 's/generic_start_main.isra.0/generic_start_main/' output.out"
if rlIsRHEL '>=' 9; then
[[ "`uname -m`" =~ "ppc64" ]] && \
rlRun "cat golden.el9.`arch`.out > golden-ppc64-17.out" || \
rlRun "cat golden.el9.`arch`.out > golden.out"
fi
# RHEL-9 s390x runtime/stack-s390.c:63:52: error: ASYNC_SIZE undeclared
# (PAGE_SIZE << 1) on stap side seems to work it around
if [ "`uname -m`" == "s390x" ] && ( rlIsRHEL 5 || rlIsRHEL 4 )
then
rlLog "Detected we are running on: s390x && RHEL <= 5"
rlLog "Using special expected output"
compareAndLog golden-s390x.out output.out
elif [ "`uname -m`" == "ppc64" ] && ( rlIsRHEL 5 || rlIsRHEL 4 )
then
rlLog "Detected we are running on: ppc64 && RHEL <= 5"
rlLog "Using special expected output"
compareAndLog golden-ppc64.out output.out
elif [[ "`uname -m`" =~ "ppc64" ]]
then
rlLog "Detected we are running on: ppc64"
rlLog "Using special expected output"
compareAndLog golden-ppc64-17.out output.out
else
rlLog "Detected we are running on: nothing special"
rlLog "Using generic expected output"
compareAndLog golden.out output.out
fi
rlPhaseEnd
rlPhaseStartCleanup
rlFileSubmit output.out
rlFileSubmit golden.out
rlFileSubmit unprocessed.out
rlRun "rm -f classes output.out unprocessed.out"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,39 @@
#include <iostream>
class Explicit{
public:
int data;
Explicit();
Explicit(int argument);
Explicit(const Explicit &original);
~Explicit();
};
class Implicit{
public:
int data;
};
Explicit::Explicit() { this->data=0; }
Explicit::Explicit(int a) {this->data=0; }
Explicit::Explicit(const Explicit &orig){this->data = orig.data;}
Explicit::~Explicit(){}
int main(){
Explicit e1; //static ctor call
Explicit *e2;
e2 = new Explicit(); //dynamic ctor call
delete e2; //dynamic dtor call
e2 = new Explicit(2); //dynamic ctor call
Explicit e3 = *e2; //copy ctor
delete e2; //dtor
Implicit i1; //ctor
Implicit *i2 = new Implicit(); //ctor
Implicit i3 = *i2; //implicit copy ctor
delete i2; //dtor
return 0; // dtor e1, e3, i1, i3
}

View File

@ -0,0 +1,16 @@
Explicit constructor start
Explicit constructor end
Explicit constructor start
Explicit constructor end
Explicit destructor start
Explicit destructor end
Explicit constructor start
Explicit constructor end
Explicit constructor start
Explicit constructor end
Explicit destructor start
Explicit destructor end
Explicit destructor start
Explicit destructor end
Explicit destructor start
Explicit destructor end

View File

@ -0,0 +1,13 @@
summary: Tests probing constructors and destructors
description: ''
contact: Petr Muller <pmuller@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
- gcc-c++
duration: 5m
extra-summary: /tools/systemtap/Regression/RHEL6Feature-cpp-ctors-and-dtors
extra-task: /tools/systemtap/Regression/RHEL6Feature-cpp-ctors-and-dtors

View File

@ -0,0 +1,52 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/RHEL6Feature-cpp-ctors-and-dtors
# Description: Tests probing constructors and destructors
# Author: Petr Muller <pmuller@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include rhts environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartSetup
rlRun "g++ classes.cpp -g -o classes"
rlPhaseEnd
rlPhaseStartTest
rlRun "stap -c ./classes tracker.stp -o output.out"
rlAssertNotDiffer golden.out output.out
rlPhaseEnd
rlPhaseStartCleanup
rlFileSubmit "output.out"
rlFileSubmit "golden.out"
rlRun "rm -rf classes output.out"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,23 @@
probe process("classes").function("Explicit::Explicit"){
printf("Explicit constructor start\n");
}
probe process("classes").function("Explicit::~Explicit"){
printf("Explicit destructor start\n");
}
probe process("classes").function("Explicit::Explicit").return{
printf("Explicit constructor end\n");
}
probe process("classes").function("Explicit::~Explicit").return{
printf("Explicit destructor end\n");
}
//probe process("classes").function("Implicit::Implicit"){
// printf("Implicitconstructor\n");
//}
//probe process("classes").function("Implicit::Implicit"){
// printf("Implicit constructor\n");
//}

View File

@ -0,0 +1,56 @@
#include <iostream>
class A{
public:
void one(){ std::cout << "A::one" << std::endl; }
void two(){ std::cout << "A::two" << std::endl; }
virtual void three() { std::cout << "A::three" << std::endl; }
virtual void four() { std::cout << "A::four" << std::endl; }
};
class B : public A{
public:
void one() { std::cout << "B::one" << std::endl; }
int one(int a) { std::cout << "B::one" << std::endl; }
virtual void three() { std::cout << "B::three" << std::endl; }
};
int main(){
A a;
B b;
A *ap = new A();
A *apb = new B();
B *bp = new B();
a.one();
a.two();
a.three();
a.four();
b.one();
b.two();
b.three();
b.four();
ap->one();
ap->two();
ap->three();
ap->four();
apb->one();
apb->two();
apb->three();
apb->four();
bp->one();
bp->two();
bp->three();
bp->four();
return 0;
}

View File

@ -0,0 +1,13 @@
summary: Tests systemtap handling inheritance
description: ''
contact: Petr Muller <pmuller@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
- gcc-c++
duration: 10m
extra-summary: /tools/systemtap/Regression/RHEL6Feature-cpp-inheritance
extra-task: /tools/systemtap/Regression/RHEL6Feature-cpp-inheritance

View File

@ -0,0 +1,56 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/RHEL6Feature-cpp-inheritance
# Description: Tests systemtap handling inheritance
# Author: Petr Muller <pmuller@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include rhts environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
# if this testcase caused kernel crash and reboot, don't try to rerun it
[[ $REBOOTCOUNT -gt 0 ]] && exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartSetup
rlRun "g++ classes.cpp -o classes -g"
rlRun "./classes > program.out" 0 "Preparing the golden output"
rlPhaseEnd
rlPhaseStartTest
rlRun "stap -c ./classes tracker.stp -o stap.out"
rlAssertNotDiffer program.out stap.out
rlPhaseEnd
rlPhaseStartCleanup
rlFileSubmit program.out
rlFileSubmit stap.out
rlRun "rm -f classes stap.out program.out"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,6 @@
probe process("classes").function("A::one"){printf("A::one\n");}
probe process("classes").function("A::two"){printf("A::two\n");}
probe process("classes").function("A::three"){printf("A::three\n");}
probe process("classes").function("A::four"){printf("A::four\n");}
probe process("classes").function("B::one"){printf("B::one\n");}
probe process("classes").function("B::three"){printf("B::three\n");}

View File

@ -0,0 +1,71 @@
__attribute__((noinline)) void StandaloneFunction(){
}
class CLASS1{
private:
void prMethod() {};
public:
void puMethod() {this->prMethod();};
static void stMethod() {};
};
namespace inner{
void StandaloneFunction(){
}
class CLASS1{
private:
void prMethod() {};
public:
void puMethod() {this->prMethod();};
static void stMethod() {};
};
};
namespace moreinner{
void StandaloneFunction(){
}
class CLASS1{
private:
__attribute__((noinline)) void prMethod() {};
public:
__attribute__((noinline)) void puMethod() {this->prMethod();};
__attribute__((noinline)) static void stMethod() {};
};
};
int main(){
StandaloneFunction();
inner::StandaloneFunction();
moreinner::StandaloneFunction();
CLASS1 A;
inner::CLASS1 B;
moreinner::CLASS1 C;
CLASS1* pA = new CLASS1();
inner::CLASS1 *pB = new inner::CLASS1();
moreinner::CLASS1 *pC = new moreinner::CLASS1();
A.puMethod();
A.stMethod();
B.puMethod();
B.stMethod();
C.puMethod();
C.stMethod();
pA->puMethod();
pA->stMethod();
pB->puMethod();
pB->stMethod();
pC->puMethod();
pC->stMethod();
return 0;
}

View File

@ -0,0 +1,70 @@
StandaloneFunction start: _Z18StandaloneFunctionv
StandaloneFunction end: main
StandaloneFunction start: _ZN5inner18StandaloneFunctionEv
inner::StandaloneFunction start: _ZN5inner18StandaloneFunctionEv
StandaloneFunction end: main
inner::StandaloneFunction end: main
StandaloneFunction start: _ZN9moreinner18StandaloneFunctionEv
moreinner::StandaloneFunction start: _ZN9moreinner18StandaloneFunctionEv
StandaloneFunction end: main
moreinner::StandaloneFunction end: main
puMethod start: _ZN6CLASS18puMethodEv
prMethod start: _ZN6CLASS18prMethodEv
prMethod end: _ZN6CLASS18puMethodEv
puMethod end: main
stMethod start: _ZN6CLASS18stMethodEv
stMethod end: main
puMethod start: _ZN5inner6CLASS18puMethodEv
inner::puMethod start: _ZN5inner6CLASS18puMethodEv
prMethod start: _ZN5inner6CLASS18prMethodEv
inner::prMethod start: _ZN5inner6CLASS18prMethodEv
prMethod end: _ZN5inner6CLASS18puMethodEv
inner::prMethod end: _ZN5inner6CLASS18puMethodEv
puMethod end: main
inner::puMethod end: main
stMethod start: _ZN5inner6CLASS18stMethodEv
inner::stMethod start: _ZN5inner6CLASS18stMethodEv
stMethod end: main
inner::stMethod end: main
puMethod start: _ZN9moreinner6CLASS18puMethodEv
moreinner::puMethod start: _ZN9moreinner6CLASS18puMethodEv
prMethod start: _ZN9moreinner6CLASS18prMethodEv
moreinner::prMethod start: _ZN9moreinner6CLASS18prMethodEv
prMethod end: _ZN9moreinner6CLASS18puMethodEv
moreinner::prMethod end: _ZN9moreinner6CLASS18puMethodEv
puMethod end: main
moreinner::puMethod end: main
stMethod start: _ZN9moreinner6CLASS18stMethodEv
moreinner::stMethod start: _ZN9moreinner6CLASS18stMethodEv
stMethod end: main
moreinner::stMethod end: main
puMethod start: _ZN6CLASS18puMethodEv
prMethod start: _ZN6CLASS18prMethodEv
prMethod end: _ZN6CLASS18puMethodEv
puMethod end: main
stMethod start: _ZN6CLASS18stMethodEv
stMethod end: main
puMethod start: _ZN5inner6CLASS18puMethodEv
inner::puMethod start: _ZN5inner6CLASS18puMethodEv
prMethod start: _ZN5inner6CLASS18prMethodEv
inner::prMethod start: _ZN5inner6CLASS18prMethodEv
prMethod end: _ZN5inner6CLASS18puMethodEv
inner::prMethod end: _ZN5inner6CLASS18puMethodEv
puMethod end: main
inner::puMethod end: main
stMethod start: _ZN5inner6CLASS18stMethodEv
inner::stMethod start: _ZN5inner6CLASS18stMethodEv
stMethod end: main
inner::stMethod end: main
puMethod start: _ZN9moreinner6CLASS18puMethodEv
moreinner::puMethod start: _ZN9moreinner6CLASS18puMethodEv
prMethod start: _ZN9moreinner6CLASS18prMethodEv
moreinner::prMethod start: _ZN9moreinner6CLASS18prMethodEv
prMethod end: _ZN9moreinner6CLASS18puMethodEv
moreinner::prMethod end: _ZN9moreinner6CLASS18puMethodEv
puMethod end: main
moreinner::puMethod end: main
stMethod start: _ZN9moreinner6CLASS18stMethodEv
moreinner::stMethod start: _ZN9moreinner6CLASS18stMethodEv
stMethod end: main
moreinner::stMethod end: main

View File

@ -0,0 +1,83 @@
StandaloneFunction start: _Z18StandaloneFunctionv
StandaloneFunction end: main
StandaloneFunction start: _ZN5inner18StandaloneFunctionEv
inner::StandaloneFunction start: _ZN5inner18StandaloneFunctionEv
StandaloneFunction end: main
inner::StandaloneFunction end: main
StandaloneFunction start: _ZN9moreinner18StandaloneFunctionEv
moreinner::StandaloneFunction start: _ZN9moreinner18StandaloneFunctionEv
StandaloneFunction end: main
moreinner::StandaloneFunction end: main
puMethod start: _ZN6CLASS18puMethodEv
prMethod start: _ZN6CLASS18prMethodEv
prMethod end: _ZN6CLASS18puMethodEv
puMethod end: main
stMethod start: _ZN6CLASS18stMethodEv
stMethod end: main
puMethod start: _ZN5inner6CLASS18puMethodEv
inner::puMethod start: _ZN5inner6CLASS18puMethodEv
prMethod start: _ZN5inner6CLASS18prMethodEv
inner::prMethod start: _ZN5inner6CLASS18prMethodEv
prMethod end: _ZN5inner6CLASS18puMethodEv
inner::prMethod end: _ZN5inner6CLASS18puMethodEv
puMethod end: main
inner::puMethod end: main
stMethod start: _ZN5inner6CLASS18stMethodEv
inner::stMethod start: _ZN5inner6CLASS18stMethodEv
stMethod end: main
inner::stMethod end: main
puMethod start: _ZN9moreinner6CLASS18puMethodEv
moreinner::puMethod start: _ZN9moreinner6CLASS18puMethodEv
prMethod start: _ZN9moreinner6CLASS18prMethodEv
moreinner::prMethod start: _ZN9moreinner6CLASS18prMethodEv
prMethod end: _ZN9moreinner6CLASS18puMethodEv
moreinner::prMethod end: _ZN9moreinner6CLASS18puMethodEv
puMethod end: main
moreinner::puMethod end: main
stMethod start: _ZN9moreinner6CLASS18stMethodEv
moreinner::stMethod start: _ZN9moreinner6CLASS18stMethodEv
stMethod end: main
moreinner::stMethod end: main
puMethod start: _ZN6CLASS18puMethodEv
prMethod start: _ZN6CLASS18prMethodEv
prMethod end: _ZN6CLASS18puMethodEv
puMethod end: main
stMethod start: _ZN6CLASS18stMethodEv
stMethod end: main
puMethod start: _ZN5inner6CLASS18puMethodEv
inner::puMethod start: _ZN5inner6CLASS18puMethodEv
prMethod start: _ZN5inner6CLASS18prMethodEv
inner::prMethod start: _ZN5inner6CLASS18prMethodEv
prMethod end: _ZN5inner6CLASS18puMethodEv
inner::prMethod end: _ZN5inner6CLASS18puMethodEv
puMethod end: main
inner::puMethod end: main
stMethod start: _ZN5inner6CLASS18stMethodEv
inner::stMethod start: _ZN5inner6CLASS18stMethodEv
stMethod end: main
inner::stMethod end: main
puMethod start: _ZN9moreinner6CLASS18puMethodEv
moreinner::puMethod start: _ZN9moreinner6CLASS18puMethodEv
prMethod start: _ZN9moreinner6CLASS18prMethodEv
moreinner::prMethod start: _ZN9moreinner6CLASS18prMethodEv
prMethod end: _ZN9moreinner6CLASS18puMethodEv
moreinner::prMethod end: _ZN9moreinner6CLASS18puMethodEv
puMethod end: main
moreinner::puMethod end: main
stMethod start: _ZN9moreinner6CLASS18stMethodEv
moreinner::stMethod start: _ZN9moreinner6CLASS18stMethodEv
stMethod end: main
moreinner::stMethod end: main
__StandaloneFunction=0
__hitcount=70
__inner_StandaloneFunction=0
__moreinner_StandaloneFunction=0
__stMethod=0
__inner_CLASS1_stMethod=0
__moreinner_star_stMethod=0
__prMethod=0
__inner_CLASS1_prMethod=0
__moreinner_star_prMethod=0
__puMethod=0
__inner_CLASS1_puMethod=0
__moreinner_star_puMethod=0

View File

@ -0,0 +1,70 @@
StandaloneFunction start: StandaloneFunction
StandaloneFunction end: StandaloneFunction
StandaloneFunction start: StandaloneFunction
inner::StandaloneFunction start: inner::StandaloneFunction
inner::StandaloneFunction end: inner::StandaloneFunction
StandaloneFunction end: StandaloneFunction
StandaloneFunction start: StandaloneFunction
moreinner::StandaloneFunction start: moreinner::StandaloneFunction
moreinner::StandaloneFunction end: moreinner::StandaloneFunction
StandaloneFunction end: StandaloneFunction
puMethod start: puMethod
prMethod start: prMethod
prMethod end: prMethod
puMethod end: puMethod
stMethod start: stMethod
stMethod end: stMethod
puMethod start: puMethod
inner::puMethod start: inner::CLASS1::puMethod
prMethod start: prMethod
inner::prMethod start: inner::CLASS1::prMethod
inner::prMethod end: inner::CLASS1::prMethod
prMethod end: prMethod
inner::puMethod end: inner::CLASS1::puMethod
puMethod end: puMethod
stMethod start: stMethod
inner::stMethod start: inner::CLASS1::stMethod
inner::stMethod end: inner::CLASS1::stMethod
stMethod end: stMethod
puMethod start: puMethod
moreinner::puMethod start: moreinner::CLASS1::puMethod
prMethod start: prMethod
moreinner::prMethod start: moreinner::CLASS1::prMethod
moreinner::prMethod end: moreinner::CLASS1::prMethod
prMethod end: prMethod
moreinner::puMethod end: moreinner::CLASS1::puMethod
puMethod end: puMethod
stMethod start: stMethod
moreinner::stMethod start: moreinner::CLASS1::stMethod
moreinner::stMethod end: moreinner::CLASS1::stMethod
stMethod end: stMethod
puMethod start: puMethod
prMethod start: prMethod
prMethod end: prMethod
puMethod end: puMethod
stMethod start: stMethod
stMethod end: stMethod
puMethod start: puMethod
inner::puMethod start: inner::CLASS1::puMethod
prMethod start: prMethod
inner::prMethod start: inner::CLASS1::prMethod
inner::prMethod end: inner::CLASS1::prMethod
prMethod end: prMethod
inner::puMethod end: inner::CLASS1::puMethod
puMethod end: puMethod
stMethod start: stMethod
inner::stMethod start: inner::CLASS1::stMethod
inner::stMethod end: inner::CLASS1::stMethod
stMethod end: stMethod
puMethod start: puMethod
moreinner::puMethod start: moreinner::CLASS1::puMethod
prMethod start: prMethod
moreinner::prMethod start: moreinner::CLASS1::prMethod
moreinner::prMethod end: moreinner::CLASS1::prMethod
prMethod end: prMethod
moreinner::puMethod end: moreinner::CLASS1::puMethod
puMethod end: puMethod
stMethod start: stMethod
moreinner::stMethod start: moreinner::CLASS1::stMethod
moreinner::stMethod end: moreinner::CLASS1::stMethod
stMethod end: stMethod

View File

@ -0,0 +1,13 @@
__hitcount=70
__inner_CLASS1_prMethod=0
__inner_CLASS1_puMethod=0
__inner_CLASS1_stMethod=0
__inner_StandaloneFunction=0
__moreinner_StandaloneFunction=0
__moreinner_star_prMethod=0
__moreinner_star_puMethod=0
__moreinner_star_stMethod=0
__prMethod=0
__puMethod=0
__StandaloneFunction=0
__stMethod=0

View File

@ -0,0 +1,13 @@
summary: Tests C++ methods
description: ''
contact: Petr Muller <pmuller@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
- gcc-c++
duration: 120m
extra-summary: /tools/systemtap/Regression/RHEL6Feature-cpp-methods
extra-task: /tools/systemtap/Regression/RHEL6Feature-cpp-methods

View File

@ -0,0 +1,72 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/RHEL6Feature-cpp-methods
# Description: Tests C++ methods
# Author: Petr Muller <pmuller@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2010 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include rhts environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartSetup
rlRun "stap-prep" 0-255
rlRun "g++ -O0 classes.cpp -o classes -g"
rlIsRHEL 6 && COMPAT='--compatible=1.8'
# rlIsRHEL 7 && cp -f golden.el7.out golden.out
# rlIsRHEL 8 && cp -f golden.el8.out golden.out
rlPhaseEnd
rlPhaseStartTest
rlRun "stap $COMPAT -c ./classes tracker.stp -o output.out"
# Stop comparing literally against a golden file,
# do a sanity check instead. The literal golden file check
# sort of regressed between rhel-8.2 and rhel-8.3
# rlRun "diff golden.out output.out"
rlRun "grep ^__ output.out | sort > summary.out"
# RHEL6: covert hex to dec:
rlRun "sed -i 's/0x0/0/' summary.out"
rlRun "sed -i 's/0x46/70/' summary.out"
# Sanity check
rlRun "diff golden_summary.out summary.out" || (
rlRun "cat golden_summary.out"
rlRun "cat summary.out"
)
rlPhaseEnd
rlPhaseStartCleanup
rlFileSubmit golden.out
rlFileSubmit output.out
rlRun "rm -f output.out classes"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,162 @@
global __hitcount = 0
global __StandaloneFunction = 0
global __inner_StandaloneFunction = 0
global __moreinner_StandaloneFunction = 0
global __stMethod = 0
global __inner_CLASS1_stMethod = 0
global __moreinner_star_stMethod = 0
global __prMethod = 0
global __inner_CLASS1_prMethod = 0
global __moreinner_star_prMethod = 0
global __puMethod = 0
global __inner_CLASS1_puMethod = 0
global __moreinner_star_puMethod = 0
probe process("classes").function("StandaloneFunction").call{
__StandaloneFunction++
__hitcount++
printf("StandaloneFunction start: %s\n", probefunc());
}
probe process("classes").function("StandaloneFunction").return{
__StandaloneFunction--
__hitcount++
printf("StandaloneFunction end: %s\n", probefunc());
}
probe process("classes").function("inner::StandaloneFunction").call{
__inner_StandaloneFunction++
__hitcount++
printf("inner::StandaloneFunction start: %s\n", probefunc());
}
probe process("classes").function("inner::StandaloneFunction").return{
__inner_StandaloneFunction--
__hitcount++
printf("inner::StandaloneFunction end: %s\n", probefunc());
}
probe process("classes").function("moreinner::StandaloneFunction").call{
__moreinner_StandaloneFunction++
__hitcount++
printf("moreinner::StandaloneFunction start: %s\n", probefunc());
}
probe process("classes").function("moreinner::StandaloneFunction").return{
__moreinner_StandaloneFunction--
__hitcount++
printf("moreinner::StandaloneFunction end: %s\n", probefunc());
}
// ============================================================================
probe process("classes").function("stMethod").call{
__stMethod++
__hitcount++
printf("stMethod start: %s\n", probefunc());
}
probe process("classes").function("stMethod").return{
__stMethod--
__hitcount++
printf("stMethod end: %s\n", probefunc());
}
probe process("classes").function("inner::CLASS1::stMethod").call{
__inner_CLASS1_stMethod++
__hitcount++
printf("inner::stMethod start: %s\n", probefunc());
}
probe process("classes").function("inner::CLASS1::stMethod").return{
__inner_CLASS1_stMethod--
__hitcount++
printf("inner::stMethod end: %s\n", probefunc());
}
probe process("classes").function("moreinner::*::stMethod").call{
__moreinner_star_stMethod++
__hitcount++
printf("moreinner::stMethod start: %s\n", probefunc());
}
probe process("classes").function("moreinner::*::stMethod").return{
__moreinner_star_stMethod--
__hitcount++
printf("moreinner::stMethod end: %s\n", probefunc());
}
//=============================================================================
probe process("classes").function("prMethod").call{
__prMethod++
__hitcount++
printf("prMethod start: %s\n", probefunc());
}
probe process("classes").function("prMethod").return{
__prMethod--
__hitcount++
printf("prMethod end: %s\n", probefunc());
}
probe process("classes").function("inner::CLASS1::prMethod").call{
__inner_CLASS1_prMethod++
__hitcount++
printf("inner::prMethod start: %s\n", probefunc());
}
probe process("classes").function("inner::CLASS1::prMethod").return{
__inner_CLASS1_prMethod--
__hitcount++
printf("inner::prMethod end: %s\n", probefunc());
}
probe process("classes").function("moreinner::*::prMethod").call{
__moreinner_star_prMethod++
__hitcount++
printf("moreinner::prMethod start: %s\n", probefunc());
}
probe process("classes").function("moreinner::*::prMethod").return{
__moreinner_star_prMethod--
__hitcount++
printf("moreinner::prMethod end: %s\n", probefunc());
}
//=============================================================================
probe process("classes").function("puMethod").call{
__puMethod++
__hitcount++
printf("puMethod start: %s\n", probefunc());
}
probe process("classes").function("puMethod").return{
__puMethod--
__hitcount++
printf("puMethod end: %s\n", probefunc());
}
probe process("classes").function("inner::CLASS1::puMethod").call{
__inner_CLASS1_puMethod++
__hitcount++
printf("inner::puMethod start: %s\n", probefunc());
}
probe process("classes").function("inner::CLASS1::puMethod").return{
__inner_CLASS1_puMethod--
__hitcount++
printf("inner::puMethod end: %s\n", probefunc());
}
probe process("classes").function("moreinner::*::puMethod").call{
__moreinner_star_puMethod++
__hitcount++
printf("moreinner::puMethod start: %s\n", probefunc());
}
probe process("classes").function("moreinner::*::puMethod").return{
__moreinner_star_puMethod--
__hitcount++
printf("moreinner::puMethod end: %s\n", probefunc());
}

View File

@ -0,0 +1,14 @@
summary: Test for BZ#1572501 (RHEL7.5 - backtraces no longer work with systemtap)
description: Test for BZ#1572501
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
duration: 48h
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1572501
extra-summary: /tools/systemtap/Regression/RHEL7-5-backtraces-no-longer-work-with-systemtap
extra-task: /tools/systemtap/Regression/RHEL7-5-backtraces-no-longer-work-with-systemtap

View File

@ -0,0 +1,49 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/RHEL7-5-backtraces-no-longer-work-with-systemtap
# Description: Test for BZ#1572501 (RHEL7.5 - backtraces no longer work with systemtap)
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2018 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartTest
if arch | grep -q s390x; then
rlLogWarning "Test not relevant"
else
TEMPFILE=$(mktemp)
rlRun "stap --all-modules -vwe 'probe kernel.function(\"kmem_cache_alloc\") { print_backtrace(); exit() }' >& $TEMPFILE"
# since it's hard to find some reasonable pattern to grep for across arches in the backrtrace
# we'll simply count the lines. We'll want at least 9 lines of output (6 as the results of -v,
# and another at least three coming from the backtrace itself.
rlRun "cat $TEMPFILE"
rlRun "test 9 -le $(wc -l $TEMPFILE | awk '{print $1}')"
rm $TEMPFILE
fi
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,63 @@
Kernel porting needed.
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: Test
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:: [ 09:22:47 ] :: [ INFO ] :: Checking whether we might want to try prologue search.
:: [ 09:23:10 ] :: [ BEGIN ] :: Running 'stap -P -vp4 readpages.stp'
Pass 1: parsed user script and 484 library scripts using 122428virt/95036res/15532shr/79120data kb, in 200usr/110sys/315real ms.
WARNING: never-assigned local variable 'nr_pages' (similar: rpages, __page, dev, name, file): identifier 'nr_pages' at readpages.stp:5:26
source: printf("nr_pages=%d\n", nr_pages);
^
WARNING: never-assigned local variable 'rpages' (similar: nr_pages, __page, dev, name, rsize): identifier 'rpages' at :7:24
source: printf("rpages=%d\n", rpages);
^
Pass 2: analyzed script: 2 probes, 17 functions, 3 embeds, 0 globals using 351676virt/327836res/19060shr/308368data kb, in 2880usr/1970sys/4927real ms.
Pass 3: translated to C into "/tmp/stapWU958g/stap_f189533513b6d61221ada924fedfc9c4_6369_src.c" using 351692virt/327964res/19188shr/308384data kb, in 490usr/800sys/1301real ms.
In file included from /usr/share/systemtap/runtime/linux/../regs.c:16,
from /usr/share/systemtap/runtime/linux/runtime.h:270,
from /usr/share/systemtap/runtime/runtime.h:26,
from /tmp/stapWU958g/stap_f189533513b6d61221ada924fedfc9c4_6369_src.c:21:
/tmp/stapWU958g/stap_f189533513b6d61221ada924fedfc9c4_6369_src.c: In function enter_kretprobe_common:
/tmp/stapWU958g/stap_f189533513b6d61221ada924fedfc9c4_6369_src.c:2499:45: error: struct kretprobe_instance has no member named ret_addr
2499 | SET_REG_IP(regs, (unsigned long)inst->ret_addr);
| ^~
/usr/share/systemtap/runtime/linux/../regs.h:85:44: note: in definition of macro SET_REG_IP
85 | #define SET_REG_IP(regs, x) REG_IP(regs) = x
| ^
make[1]: *** [scripts/Makefile.build:288: /tmp/stapWU958g/stap_f189533513b6d61221ada924fedfc9c4_6369_src.o] Error 1
make: *** [Makefile:1844: /tmp/stapWU958g] Error 2
WARNING: kbuild exited with status: 2
Pass 4: compiled C into "stap_f189533513b6d61221ada924fedfc9c4_6369.ko" in 1150usr/1910sys/2659real ms.
Pass 4: compilation failed. [man error::pass4]
:: [ 09:23:20 ] :: [ FAIL ] :: Command 'stap -P -vp4 readpages.stp' (Expected 0, got 1)
:: [ 09:23:20 ] :: [ BEGIN ] :: Running 'stap -P -vp4 tcp.sendmsg.stp'
Pass 1: parsed user script and 484 library scripts using 122428virt/95044res/15536shr/79120data kb, in 180usr/130sys/316real ms.
Pass 2: analyzed script: 5 probes, 2 functions, 4 embeds, 3 globals using 202292virt/178300res/19224shr/158984data kb, in 1720usr/1750sys/3531real ms.
Pass 3: translated to C into "/tmp/stapzXlpka/stap_c98d0598383a49c9b0a715336e876a54_18911_src.c" using 202308virt/178492res/19416shr/159000data kb, in 160usr/720sys/899real ms.
In file included from /usr/share/systemtap/runtime/linux/../regs.c:16,
from /usr/share/systemtap/runtime/linux/runtime.h:270,
from /usr/share/systemtap/runtime/runtime.h:26,
from /tmp/stapzXlpka/stap_c98d0598383a49c9b0a715336e876a54_18911_src.c:21:
/tmp/stapzXlpka/stap_c98d0598383a49c9b0a715336e876a54_18911_src.c: In function enter_kretprobe_common:
/tmp/stapzXlpka/stap_c98d0598383a49c9b0a715336e876a54_18911_src.c:2190:45: error: struct kretprobe_instance has no member named ret_addr
2190 | SET_REG_IP(regs, (unsigned long)inst->ret_addr);
| ^~
/usr/share/systemtap/runtime/linux/../regs.h:85:44: note: in definition of macro SET_REG_IP
85 | #define SET_REG_IP(regs, x) REG_IP(regs) = x
| ^
make[1]: *** [scripts/Makefile.build:288: /tmp/stapzXlpka/stap_c98d0598383a49c9b0a715336e876a54_18911_src.o] Error 1
make: *** [Makefile:1844: /tmp/stapzXlpka] Error 2
WARNING: kbuild exited with status: 2
Pass 4: compiled C into "stap_c98d0598383a49c9b0a715336e876a54_18911.ko" in 1250usr/1900sys/2762real ms.
Pass 4: compilation failed. [man error::pass4]
:: [ 09:23:28 ] :: [ FAIL ] :: Command 'stap -P -vp4 tcp.sendmsg.stp' (Expected 0, got 1)
:: [ 09:23:28 ] :: [ BEGIN ] :: Running 'stap -P -vp4 bdflush.stp'
Pass 1: parsed user script and 484 library scripts using 122428virt/94968res/15468shr/79120data kb, in 180usr/130sys/317real ms.
Pass 2: analyzed script: 3 probes, 5 functions, 98 embeds, 4 globals using 198116virt/174376res/18956shr/154808data kb, in 1930usr/2660sys/4689real ms.
/root/.systemtap/cache/87/stap_8728db2fdfe761c96d8963fd0c4fffd2_71969.ko
Pass 3: using cached /root/.systemtap/cache/87/stap_8728db2fdfe761c96d8963fd0c4fffd2_71969.c
Pass 4: using cached /root/.systemtap/cache/87/stap_8728db2fdfe761c96d8963fd0c4fffd2_71969.ko
:: [ 09:23:33 ] :: [ PASS ] :: Command 'stap -P -vp4 bdflush.stp' (Expected 0, got 0)

View File

@ -0,0 +1,8 @@
probe syscall.bdflush {
printf("%s\n", name)
printf("%s\n", argstr)
}
probe syscall.bdflush.return {
printf("%s\n", name)
}

View File

@ -0,0 +1,14 @@
summary: bz544960-no-cfa_ops-supplied
description: ''
contact: Martin Hatina <mhatina@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
duration: 30m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=544960
extra-summary: /tools/systemtap/Regression/bz544960-no-cfa_ops-supplied
extra-task: /tools/systemtap/Regression/bz544960-no-cfa_ops-supplied

View File

@ -0,0 +1,19 @@
probe nfs.aop.readpages !, nfs.aop.readpage {
log(name);
printf("dev=%d\n", dev);
printf("ino=%d\n", ino);
printf("nr_pages=%d\n", nr_pages);
printf("file=%d\n", file);
printf("rpages=%d\n", rpages);
printf("rsize=%d\n", rsize);
printf("argstr=%s\n", argstr);
printf("size=%d\n", size);
printf("units=%s\n", units);
}
probe nfs.aop.readpages.return !, nfs.aop.readpage.return {
log(name);
printf("retstr=%s\n", retstr);
printf("size=%d\n", size);
printf("units=%s\n", units);
}

View File

@ -0,0 +1,48 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/bz544960-no-cfa_ops-supplied
# Description: What the test does
# Author: Martin Hatina <mhatina@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
_SCRIPTS="readpages.stp tcp.sendmsg.stp bdflush.stp"
rlJournalStart
rlPhaseStartTest
rlLogInfo "Checking whether we might want to try prologue search."
p=""
for s in $_SCRIPTS; do
stap -vp4 $s >& /dev/null || p="-P"
done
for s in $_SCRIPTS; do
rlRun "stap $p -vp4 $s"
done
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,7 @@
probe tcp.sendmsg {
printf("%d\n", size)
}
probe tcp.sendmsg.return {
printf("%d\n", size)
}

View File

@ -0,0 +1,15 @@
summary: bz706185-various-build-and-run
description: bz706185-various-build-and-run
contact: Petr Muller <pmuller@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
require:
recommend:
- systemtap
duration: 20m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=706185
extra-summary: /tools/systemtap/Regression/bz706185-various-build-and-run
extra-task: /tools/systemtap/Regression/bz706185-various-build-and-run

View File

@ -0,0 +1,87 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/bz706185-various-build-and-run
# Description: Test containing several build and run testcases.
# Author: Petr Muller <pmuller@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2011 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartSetup
rlRun "rpm -qf $(which stap)"
rlRun "uname -r"
rlPhaseEnd
rlPhaseStartTest "Build testcases"
export STAPOUT=`mktemp`
export TRACOUT=`mktemp`
for testcase in *.stp
do
rlLog "Testcase: $testcase"
rlRun "stap -v -p4 $testcase -m testcase --poison-cache &>$STAPOUT" 0 "Building testcase: $testcase"
if [ $? -ne 0 ]
then
rlLog "=== systemtap output start"
while read line
do
rlLog "$line"
done < $STAPOUT
rlLog "=== systemtap output end"
fi
rm -f testcase.ko
rm -f $STAPOUT
done
rlPhaseEnd
rlPhaseStartTest "Run testcases"
for testcase in *.run
do
rlLog "Testcase: $testcase"
COMMAND="`cat $testcase`"
COMMAND="$COMMAND -o $TRACOUT $testcase --poison-cache &>$STAPOUT"
rlLog "Assembled command: [$COMMAND]"
rlRun "$COMMAND" 0 "Running testcase: $testcase"
if [ $? -ne 0 ]
then
rlLog "=== systemtap output start"
while read line; do rlLog "$line"; done < $STAPOUT
rlLog "=== systemtap output end"
rlLog ""
rlLog "=== tracing output start"
while read line; do rlLog "$line"; done < $TRACOUT
rlLog "=== tracing output end"
fi
rm -f $STAPOUT $TRACOUT
done
rlPhaseEnd
rlPhaseStartCleanup
rlRun "rm -f $STAPOUT $TRACOUT"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1 @@
stap -v softirq.stp

View File

@ -0,0 +1,3 @@
probe softirq.entry { println(">>> softirq") }
probe softirq.exit { println("<<< softirq")}
probe timer.ms(5000) { exit() }

View File

@ -0,0 +1,15 @@
summary: dtrace-create-Wall-Wextra-pedantic-clean-code
description: dtrace-create-Wall-Wextra-pedantic-clean-code
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
- systemtap-sdt-devel
duration: 5m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=902739
extra-summary: /tools/systemtap/Regression/dtrace-create-Wall-Wextra-pedantic-clean-code
extra-task: /tools/systemtap/Regression/dtrace-create-Wall-Wextra-pedantic-clean-code

View File

@ -0,0 +1,57 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/dtrace-create-Wall-Wextra-pedantic-clean-code
# Description: dtrace-create-Wall-Wextra-pedantic-clean-code
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
rlJournalStart
rlPhaseStartSetup
rlRun "TMPDIR=$(mktemp -d)"
rlRun "pushd $TMPDIR"
rlPhaseEnd
rlPhaseStart WARN "Info"
rlRun "which dtrace"
rlPhaseEnd
rlPhaseStartTest
rlRun "printf \"provider xxx { probe xxx(); };\n\" > xxx"
rlRun "dtrace -G -k -s xxx &> dtrace.out"
rlRun "cat dtrace.out"
rlRun "CF=$( awk '/^source:/ {print $2}' dtrace.out )"
rlRun "gcc -c -Wall -Wextra -pedantic $CF 2>&1 | tee gcc.out"
rlRun "grep -i warning gcc.out" 1
rlRun "grep -i error gcc.out" 1
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TMPDIR"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,28 @@
#!/bin/bash
set -xe
rm -rf ~/.debuginfod_client_cache ~/.systemtap ||:
debuginfod -p 8008 -d $(mktemp) -vvvvv >& debuginfod.log &
PID=$!
sleep 5
export SYSTEMTAP_DEBUGINFO_PATH=/tmp
export DEBUGINFOD_URLS="http://127.0.0.1:8008"
# The following doesn't work on aarch64 and s390x because of:
# https://sourceware.org/bugzilla/show_bug.cgi?id=25498
# stap -p2 -e 'probe kernel.function("vfs_read") {println(pp())}' ||:
stap -p2 -e 'probe process("/bin/true").function("main") {println(pp())}' -c /bin/true ||:
sleep 5
kill -9 $PID
grep 'started http server on' debuginfod.log
grep 'searching for buildid=[a-z0-9]* artifacttype=debuginfo' debuginfod.log

View File

@ -0,0 +1,14 @@
summary: elfutils-debuginfod-client-not-being-called
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- elfutils-debuginfod
duration: 48h
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1778921
extra-summary: /tools/systemtap/Regression/elfutils-debuginfod-client-not-being-called
extra-task: /tools/systemtap/Regression/elfutils-debuginfod-client-not-being-called

View File

@ -0,0 +1,52 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/elfutils-debuginfod-client-not-being-called
# Description: elfutils-debuginfod-client-not-being-called
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2020 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartSetup
rlAssertRpm $PACKAGE
rlRun "TMP=$(mktemp -d)"
rlRun "cp dotest.sh $TMP/"
rlRun "pushd $TMP"
rlPhaseEnd
rlPhaseStartTest
rlRun "bash dotest.sh" ||
rlRun "cat debuginfod.log"
rlFileSubmit debuginfod.log
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TMP"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,8 @@
probe begin
{
printf ( "hello trace : printf\n")
printk (20,"hello trace : printk")
ftrace ( "hello trace : ftrace\n")
exit ()
}

View File

@ -0,0 +1,14 @@
summary: ftrace-logging-tapset-not-working-as-expected-in
description: ftrace-logging-tapset-not-working-as-expected-in
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
duration: 48h
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1810216
extra-summary: /tools/systemtap/Regression/ftrace-logging-tapset-not-working-as-expected-in
extra-task: /tools/systemtap/Regression/ftrace-logging-tapset-not-working-as-expected-in

View File

@ -0,0 +1,47 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/ftrace-logging-tapset-not-working-as-expected-in
# Description: ftrace-logging-tapset-not-working-as-expected-in
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2020 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
LOG1=$(mktemp)
LOG2=$(mktemp)
rlJournalStart
rlPhaseStartTest
rlRun "mount | fgrep -i 'debugfs on'"
rlRun "cat /sys/kernel/debug/tracing/tracing_on | grep '^1$'"
rlRun "journalctl > $LOG1"
rlRun "stap -g -k -v hellotrace.stp"
rlRun "journalctl > $LOG2"
rlRun "diff $LOG1 $LOG2 | grep '^>.*hello trace : printk'"
rlRun "rm $LOG1 $LOG2"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,16 @@
summary: Test for BZ#822503 (ipv6 tapset support)
description: ipv6 tapset support
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
- nfs-utils
- setup
duration: 50m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=822503
extra-summary: /tools/systemtap/Regression/ipv6-tapset-support
extra-task: /tools/systemtap/Regression/ipv6-tapset-support

View File

@ -0,0 +1,12 @@
#!/usr/bin/stap
# http://sourceware.org/systemtap/examples/network/nfsdtop.stp
probe nfsd.proc.lookup {
printf("%s %s\n", client_ip, filename);
}
probe timer.ms(100000) {
exit ();
}

View File

@ -0,0 +1,76 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/ipv6-tapset-support
# Description: Test for BZ#822503 (ipv6 tapset support)
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
rlJournalStart
rlPhaseStartSetup
rlAssertRpm nfs-utils
rlRun "uname -r"
rlRun "which stap"
rlRun "TMPD=$(mktemp -d --tmpdir=$HOME tmp.XXXXXXX)"
rlRun "mkdir $TMPD/{A,B}"
rlRun "chmod --recursive 0777 $TMPD"
rlRun "STAPLOG=$(mktemp)"
rlServiceStart rpcbind
sleep 5
NFS_SERVICE=nfs
rlIsRHEL '>=8' && NFS_SERVICE=nfs-server
rlServiceStart $NFS_SERVICE
sleep 10
rlRun "exportfs -ua"
rlRun "exportfs -i -o 'rw,no_root_squash' *:$TMPD/A"
rlPhaseEnd
rlPhaseStartTest
# ======= work around bz1605574
rlLogInfo "Let's check if we can compile the module."
rlLogInfo "In case we can't, we'll go ahead with prologue searching."
set -x
EXTRA_SWITCHES=''
stap -p4 nfsd.proc.lookup.stp || EXTRA_SWITCHES="-P"
set +x
# =============================
# mount is sufficient to invoke nfsd.proc.lookup
rlRun "stap $EXTRA_SWITCHES -v -c 'mount -t nfs -v [::1]:$TMPD/A $TMPD/B' nfsd.proc.lookup.stp |& tee $STAPLOG"
rlRun "umount $TMPD/B"
rlRun "grep 'Unsupported Address Family' $STAPLOG" 1
rlRun "egrep '^\[0000:0000:0000:0000:0000:0000:0000:0001\]:[0-9]+.*$(basename $TMPD)' $STAPLOG"
rlPhaseEnd
rlPhaseStartCleanup
rlServiceRestore $NFS_SERVICE
rlServiceRestore rpcbind
rlRun "rm -rf $TMPD $STAPLOG"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,15 @@
summary: irq-vector-tracepoints
description: irq-vector-tracepoints
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap-devel
- kernel-debuginfo
duration: 15m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1020437
extra-summary: /tools/systemtap/Regression/irq-vector-tracepoints
extra-task: /tools/systemtap/Regression/irq-vector-tracepoints

View File

@ -0,0 +1,74 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/irq-vector-tracepoints
# Description: irq-vector-tracepoints
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
rlJournalStart
rlPhaseStartSetup
rlRun "TMPDIR=$(mktemp -d)"
rlRun "pushd $TMPDIR"
rlRun "mount -t debugfs /dev/null /sys/kernel/debug" 0-255
rlRun "test -d /sys/kernel/debug/tracing/events"
rlPhaseEnd
rlPhaseStart FAIL "Systemtap sanity check"
rlRun "stap --version"
rlRun "stap -v -e 'probe kernel.function(\"vfs_read\"){ exit() }'"
rlPhaseEnd
rlPhaseStart FAIL "Create list of all kernel tracepoints known to stap"
rlRun "stap -l 'kernel.trace(\"*\")' > tracepoints"
rlFileSubmit tracepoints
rlPhaseEnd
rlPhaseStart FAIL "Check irq_vectors"
dir='/sys/kernel/debug/tracing/events/irq_vectors'
if test -d $dir; then
for p in $( find $dir -mindepth 1 -type d | awk -F\/ '{print $NF}' ); do
rlLogInfo "Checking $p"
rlRun "grep -q $p tracepoints"
done
# additional checks
rlRun "stap -vp4 -e 'probe kernel.trace(\"local_timer_entry\") {println(pp())}'"
rlRun "stap -vp4 -e 'probe kernel.trace(\"reschedule_entry\") {println(pp())}'"
else
if arch | egrep 'x86_64|i[36]86'; then
rlLogError "$dir does not exist"
else
rlLogInfo "$dir does not exist"
fi
fi
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TMPDIR"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,14 @@
summary: netdev.receive
description: bz1518462 netdev.receive
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
duration: 15m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1518462
extra-summary: /tools/systemtap/Regression/netdev-receive
extra-task: /tools/systemtap/Regression/netdev-receive

View File

@ -0,0 +1,44 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/netdev-receive
# Description: netdev.receive
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2017 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
TMPFILE=$(mktemp)
rlJournalStart
rlPhaseStartTest
# Here we rely on that netdev.receive gets hit immediately without us explicitly triggering it.
# Not all rhel-7 stap versions have -T already, so we use -E instead.
rlRun "stap -o $TMPFILE -ve 'probe netdev.receive{log(\"HIT\") exit()}' -E 'probe timer.s(10) {log(\"TIMEOUT\") exit()}'"
rlRun "cat $TMPFILE"
rlRun "grep HIT $TMPFILE"
rlRun "grep TIMEOUT $TMPFILE" 1
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,16 @@
summary: Test for BZ#1055778 (Pass 4 failure on RHEL7 for examples)
description: Test for BZ#1055778 (Pass 4 failure on RHEL7 for examples)
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- valgrind
- systemtap
- systemtap-testsuite
duration: 30m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1055778
extra-summary: /tools/systemtap/Regression/pass-4-failure-netfilter-examples
extra-task: /tools/systemtap/Regression/pass-4-failure-netfilter-examples

View File

@ -0,0 +1,55 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/pass-4-failure-netfilter-examples
# Description: Test for BZ#1055778 (Pass 4 failure on RHEL7 for examples)
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartSetup
TESTS=$(mktemp)
rlRun "rpm -qa | fgrep systemtap-testsuite"
rlPhaseEnd
rpm -qa | grep systemtap-testsuite | xargs rpm -ql \
| egrep 'netfilter_drop.stp|netfilter_summary.stp' \
| while read line; do
rlPhaseStart FAIL "Testing $line"
rlRun "stap -p4 $line -v -g TCP 1" && \
echo $line >> $TESTS
rlPhaseEnd
done
rlPhaseStart FAIL "Check what was tested"
rlRun "grep netfilter_drop.stp $TESTS"
rlRun "grep netfilter_summary.stp $TESTS"
rm -f $TESTS
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -1,10 +1,5 @@
summary: Systemtap static probes test
description: |
This test checks basic functionality of Python's systemtap static
probes. It runs list & top systemtap scripts (examples from the
python rpm) and then a python script using the "random" module.
Finally it checks that the "random" module is correctly listed in
the output of both systemtap scripts.
description: Systemtap static probes test
contact: Petr Splichal <psplicha@redhat.com>
component:
- python
@ -21,3 +16,4 @@ recommend:
duration: 15m
extra-summary: /CoreOS/python/Sanity/systemtap
extra-task: /CoreOS/python/Sanity/systemtap
tier: 1

View File

@ -0,0 +1,16 @@
summary: second-command-not-captured
description: second-command-not-captured
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
- ruby
- ruby-libs
duration: 48h
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1857749
extra-summary: /tools/systemtap/Regression/second-command-not-captured
extra-task: /tools/systemtap/Regression/second-command-not-captured

View File

@ -0,0 +1,7 @@
probe ruby.method.entry, ruby.cmethod.entry {
printf("%d -> %s::%s %s:%d\n", tid(), classname, methodname, file, line);
}
probe ruby.method.return, ruby.cmethod.return {
printf("%d <- %s::%s %s:%d\n", tid(), classname, methodname, file, line);
}

View File

@ -0,0 +1,42 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/second-command-not-captured
# Description: second-command-not-captured
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2020 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartTest
rlLog "`which stap`"
rlLog "`stap -V`"
rlRun "stap -s 100 -v ./ruby-exercise.stp -c ./test.sh -o stap.log"
rlRun "grep 'Array::push' stap.log" ||
rlFileSubmit "stap.log"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,7 @@
#!/bin/bash
set -e
ruby -e 'puts "ABC"'
ruby -e '[1, 2, 3].push(4)'
sleep 10

View File

@ -0,0 +1,23 @@
summary: selected-parts-of-upstream-testsuite
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
- libstdc++
- dejagnu
- elfutils-devel
- gettext
- libgcc
- glibc-devel
- gcc-c++
- libstdc++-devel
- dyninst
- dyninst-devel
- systemtap-testsuite
duration: 48h
extra-summary: /tools/systemtap/Regression/selected-parts-of-upstream-testsuite
extra-task: /tools/systemtap/Regression/selected-parts-of-upstream-testsuite

View File

@ -0,0 +1,184 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/selected-parts-of-upstream-testsuite
# Description: selected-parts-of-upstream-testsuite
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2017 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Be tolerant about selinux
export AVC_ERROR='+no_avc_check'
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
DMESG1=$(mktemp)
DMESG2=$(mktemp)
PACKAGE="systemtap"
SUBTESTS="\
attach_detach.exp \
bz1126645.exp \
bz1214176.exp \
bz1252436.exp \
exelib.exp \
pr22005.exp \
server.exp \
systemtap-service.exp \
task_dentry_path.exp \
task_paths.exp \
tracepoints.exp \
"
blacklist_subtest()
{
token=${1/\//\\/}
SUBTESTS=${SUBTESTS/$token/}
}
P4TESTS="\
buildok/nfs-all-probes.stp \
buildok/nfs-detailed.stp \
buildok/nfs-fop.check_flags.stp \
buildok/nfs_proc-detailed.stp \
buildok/nfsd-all-probes.stp \
buildok/nfsd-detailed.stp \
systemtap.examples/io/nfs_func_users.stp \
systemtap.examples/network/nfsdtop.stp \
"
blacklist_p4()
{
token=${1/\//\\/}
P4TESTS=${P4TESTS/$token/}
}
if [[ $(rpm --eval '%{rhel}') -ge 8 ]]; then
# mjw authored that testcase - had been notified
arch | fgrep 'x86_64' && blacklist_subtest 'exelib.exp'
blacklist_p4 'buildok/nfs-fop.check_flags.stp'
blacklist_p4 'buildok/nfs_proc-detailed.stp'
blacklist_p4 'buildok/nfsd-detailed.stp'
# bz1709831
blacklist_p4 'buildok/nfs-detailed.stp'
arch | fgrep -q ppc64le && blacklist_p4 'buildok/nfs-all-probes.stp'
elif [[ $(rpm --eval '%{rhel}') -eq 7 ]]; then
# RHEL-ALT
if rpm -qi kernel | fgrep -q kernel-alt; then
# at_var.exp is expected to fail on Pegas - https://bugzilla.redhat.com/show_bug.cgi?id=1165848#c7
blacklist_subtest 'at_var.exp'
fi
# bz1107616, bz1698737
blacklist_p4 'buildok/nfsd-detailed.stp'
if arch | fgrep -q ppc64le; then
blacklist_p4 'buildok/nfs-all-probes.stp'
blacklist_p4 'buildok/nfs-detailed.stp'
blacklist_p4 'buildok/nfsd-all-probes.stp'
fi
elif [[ $(rpm --eval '%{rhel}') -le 6 ]]; then
true
fi
which stap | fgrep -q toolset && blacklist_subtest 'modules_out_of_tree.exp'
rlJournalStart
rlPhaseStartSetup
TESTSUITERPM="$(rpm --queryformat='%{name}\n' -qf $(which stap) | head -1 | grep -o '.*systemtap')-testsuite"
rlLogInfo "$(rpm -q $TESTSUITERPM)"
TESTSUITEDIR="$(rpm -ql $TESTSUITERPM | grep -o '.*share/systemtap/testsuite/' | head -1)"
rlLogInfo "$TESTSUITEDIR"
# For devtoolset, compat arch support was dropped for non-x86_64 arches. Ref: bz1493500
if echo $TESTSUITEDIR | grep -q toolset && arch | egrep -q '^(ppc64|s390x)$'; then
sed -i '/^proc arch_compile_flags/,/^}/d' $TESTSUITEDIR/lib/compile_flags.exp
echo 'proc arch_compile_flags {} { return 1 }' >> $TESTSUITEDIR/lib/compile_flags.exp
fi
# Need to suppress warnings so that task_dentry_path.exp can pass
# And --skip-badvars to let task_paths.exp pass
rlRun "sed -i 's/--rlimit-cpu=850/-w --skip-badvars \0/' $TESTSUITEDIR/lib/systemtap.exp"
rlServiceStop firewalld
rlServiceStop iptables
rlServiceStop ip6tables
rlServiceStart avahi-daemon
rlRun "rpm -qa | grep ^kernel | grep -v `uname -r` | xargs rpm -e" 0-255
rlRun "stap-prep" 0,127
PKGMGR="yum --skip-broken --nogpgcheck"
rpm -q dnf && PKGMGR="dnf --setopt=strict=0 --nogpgcheck"
rlRun "$PKGMGR -y install --setopt=multilib_policy=all libstdc++ dejagnu elfutils-devel gettext libgcc glibc-devel gcc-c++ libstdc++-devel dyninst dyninst-devel"
rlRun "sysctl -w kernel.panic=1"
rlRun "sysctl -w kernel.panic_on_oops=1"
rlPhaseEnd
rlPhaseStartTest
rlRun "cd $TESTSUITEDIR"
rlRun "make clean"
rlRun "dmesg > $DMESG1"
rlRun "make installcheck RUNTESTFLAGS=\"${RUNTESTFLAGS:-$SUBTESTS}\""
rlRun "dmesg > $DMESG2"
rlLogInfo "$SUBTESTS"
rlDejaSum "systemtap.sum"
rlFileSubmit "systemtap.log"
rlFileSubmit "systemtap.sum"
rlPhaseEnd
rlPhaseStart FAIL "Run selected -p4 tests"
for t in $P4TESTS; do
rlLogInfo "Trying to compile $t without prologue search ..."
ADDSWITCHES=''
stap $ADDSWITCHES -w -o /dev/null -p4 $t || ADDSWITCHES='-P'
rlRun "stap $ADDSWITCHES -w -p4 $t"
done
rlPhaseEnd
rlPhaseStart FAIL "Check for BUG: in dmesg"
rlRun "diff $DMESG1 $DMESG2" 0-255
rlRun "diff $DMESG1 $DMESG2 | grep 'BUG:'" 1
rlPhaseEnd
rlPhaseStart FAIL "Evaluate test results"
TEMPLOG=$(mktemp)
rlRun "cp systemtap.sum $TEMPLOG"
# BLACKLIST
if which stap | grep -q toolset; then
rlLogInfo "Ignore boot time probing subtest FAILures per bz1121363#c20 for devtoolset"
sed -i '/^FAIL: stap-service::boot probing - install script/d' $TEMPLOG
sed -i '/^FAIL: stap-service::boot probing - check script/d' $TEMPLOG
fi
# check for failures
rlRun "grep ^PASS $TEMPLOG" 0 "Assert a/some PASS"
rlRun "grep ^FAIL $TEMPLOG" 1 "Assert no FAIL"
rm -f $TEMPLOG
rlPhaseEnd
rlPhaseStartCleanup
rlServiceRestore firewalld
rlServiceRestore iptables
rlServiceRestore ip6tables
rlServiceRestore avahi-daemon
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,14 @@
summary: semantic-error-nfs-proc-read_setup
description: semantic-error-nfs-proc-read_setup
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
duration: 5m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=884951
extra-summary: /tools/systemtap/Regression/semantic-error-nfs-proc-read_setup
extra-task: /tools/systemtap/Regression/semantic-error-nfs-proc-read_setup

View File

@ -0,0 +1,5 @@
probe nfs.proc.read_setup{
println("nfs.proc.read_setup server_ip: ", server_ip);
println("nfs.proc.read_setup prot: ", prot);
}

View File

@ -0,0 +1,45 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/semantic-error-nfs-proc-read_setup
# Description: semantic-error-nfs-proc-read_setup
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2013 Red Hat, Inc. All rights reserved.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
rlJournalStart
rlPhaseStartSetup
rlRun "uname -r"
rlRun "rpm -qa | grep ^kernel | sort"
rlRun "rpm -qa | grep systemtap | sort"
rlRun "which stap"
rlPhaseEnd
rlPhaseStartTest
rlRun "stap -v -p 2 nfs.proc.read_setup.stp"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,14 @@
summary: semantic-errors-bz1062076
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
duration: 30m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1062076
extra-summary: /tools/systemtap/Regression/semantic-errors-bz1062076
extra-task: /tools/systemtap/Regression/semantic-errors-bz1062076

View File

@ -0,0 +1,40 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/semantic-errors-bz1062076
# Description: semantic-errors-bz1062076
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
rlJournalStart
rlPhaseStartTest
rlLogInfo "Check if we might want to try out prologue search"
p=""
stap -vp4 sript.stp >& /dev/null || p="-P"
rlRun "stap $p -vp4 script.stp"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,3 @@
probe nfsd.close? { printf("%s\n", filename) } probe never { exit() }
probe sunrpc.clnt.clone_client { print(progname) }
probe scsi.iodone { printf("%d, %d, %d, %d, %d, %d, %d, %d\n", host_no, channel, lun, dev_id, device_state, data_direction, req_addr, scsi_timer_pending ) }

View File

@ -0,0 +1,17 @@
summary: semantic-errors-bz953776
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
require:
recommend:
- systemtap
- perf
- gcc
duration: 60m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=953776
extra-summary: /tools/systemtap/Regression/semantic-errors-bz953776
extra-task: /tools/systemtap/Regression/semantic-errors-bz953776

View File

@ -0,0 +1,161 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/semantic-errors-bz953776
# Description: semantic-errors-bz953776
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
_rhelmajor=$(rpm --eval '%{rhel}')
_arch=$(arch)
function perf_probe_failed ()
{
probe=$1
perf probe -d $probe ||:
perf probe --add $probe
retval=$?
test $retval -eq 0 && \
rlLogInfo "Running perf probe --add $probe PASSED" || \
rlLogInfo "Running perf probe --add $probe FAILED"
perf probe -d $probe ||:
if test $retval -eq 0; then
return 1
else
return 0
fi
}
function perf_found_none_of ()
{
ret=0
for f in "$@"; do
perf_probe_failed $f || ret=1
done
return $ret
}
rlJournalStart
# CHECK FOR PERF ----------------------------------------------
rlPhaseStart FAIL "CHECK FOR PERF"
rlRun "perf --version"
rlPhaseEnd
rlPhaseStartSetup
rlRun "TMPDIR=$(mktemp -d)"
rlRun "pushd $TMPDIR"
# prepare sigaltstack for case-5
cat > sigaltstack.c <<EOF
#define _XOPEN_SOURCE 700
#include <signal.h>
#include <unistd.h>
void handler(int sig)
{
write(2, "stack overflow\n", 15);
_exit(1);
}
unsigned infinite_recursion(unsigned x) {
return infinite_recursion(x)+1;
}
int main()
{
static char stack[SIGSTKSZ];
stack_t ss = {
.ss_size = SIGSTKSZ,
.ss_sp = stack,
};
struct sigaction sa = {
.sa_handler = handler,
.sa_flags = SA_ONSTACK
};
sigaltstack(&ss, 0);
sigfillset(&sa.sa_mask);
sigaction(SIGSEGV, &sa, 0);
infinite_recursion(0);
}
EOF
rlRun "gcc -o sigaltstack sigaltstack.c"
rlPhaseEnd
p=""
uname -m | grep -q ^ppc && p="-P"
p="$p -E 'probe timer.s(900){error(\"probe timeout after 15 minutes\")}'"
export p
rlPhaseStart FAIL 'case-1'
rlRun "stap $p -v -e 'probe syscall.close { println(fd); exit(); }'"
rlPhaseEnd
# After fixing bz1657681, this constraint can be removed
if [[ $(rpm --eval %rhel) -le 7 ]]; then
if arch | grep -vq ppc; then
rlPhaseStart FAIL 'case-2'
# https://bugzilla.redhat.com/show_bug.cgi?id=1657681
rlRun "stap $p -v -e 'probe socket.close { print(protocol); print(family); print(state); print(flags); print(type); exit() }'"
rlPhaseEnd
fi
fi
(
test $_rhelmajor -le 8 && exit
perf_found_none_of "sys_read" "__arm64_sys_read" "do_syscall_64" && exit
test $_rhelmajor -ge 9 && test $_arch = ppc64le -o $_arch = aarch64 && p="$p -p4" # no hits
rlPhaseStart FAIL 'case-3'
rlRun "stap $p -v -e 'probe kernel.function(\"sys_read\").return!, kernel.function(\"__arm64_sys_read\").return!, kernel.function(\"do_syscall_64\").return { println(probefunc()) exit()}'"
rlPhaseEnd
)
rlPhaseStart FAIL 'case-4'
rlRun "stap $p -v -e 'probe syscall.open, syscall.openat { if (\"open\" == execname()) println(argstr); exit() }'"
rlPhaseEnd
rlPhaseStart FAIL 'case-5'
rlRun "stap $p -ve 'probe syscall.sigaltstack { println(name); exit() }' -c './sigaltstack || true'"
rlPhaseEnd
# gcc 8.2.1->8.3.1 change related to systemtap debuginfo regression in rhel-8.1.0, kernel -84 -> -85
# https://bugzilla.redhat.com/show_bug.cgi?id=1709831#c17
# ( fgrep RESULT: /tmp/typescript | sort -u )
rlPhaseStart FAIL 'case-6'
rlRun "stap $p -vp4 -e 'probe sunrpc.clnt.shutdown_client { println(servername) }'"
rlPhaseEnd
rlPhaseStart FAIL 'case-7'
rlRun "stap $p -vp4 -e 'probe sunrpc.clnt.bind_new_program { println(servername) }'"
rlPhaseEnd
rlPhaseStart FAIL 'case-8'
rlRun "stap $p -vp4 -e 'probe sunrpc.clnt.bind_new_program { println(servername, vers) }'"
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TMPDIR"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -1,4 +1,4 @@
summary: suns small tests
summary: Small tests
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
@ -12,3 +12,4 @@ recommend:
duration: 10m
extra-summary: /tools/systemtap/Regression/small-tests
extra-task: /tools/systemtap/Regression/small-tests
tier: 1

View File

@ -179,5 +179,44 @@ rlJournalStart
rlPhaseStart FAIL "test 12 bz1940761"
rlRun "stap -v /usr/share/systemtap/examples/process/strace.stp -w -c \"echo hello world\""
rlPhaseEnd
# broken-tapset-print-ubacktrace ------------------------------
rlPhaseStart FAIL "test 13 broken-tapset-print-ubacktrace"
rlRun "stap -p4 -e 'probe begin { print_ubacktrace() }'"
rlPhaseEnd
# Protected from elision --------------------------------------
rlPhaseStart FAIL "test 14 protected from elision"
rlRun "stap -v -e 'probe nfs.fop.fsync {} probe begin {print(\"Protected from elision\")}' -c true |\
fgrep 'Protected from elision'"
rlPhaseEnd
# bz544207 ----------------------------------------------------
rlPhaseStart FAIL "test 15 bz544207"
extra_opts=""
stap -vp4 -e 'probe nfs.proc.write_setup{ println(how) }' || extra_opts="-P"
rlRun "stap $extra_opts -vp4 -e 'probe nfs.proc.write_setup{ println(how) }'"
rlPhaseEnd
# bz544209 ----------------------------------------------------
rlPhaseStart FAIL "test 16 bz544209"
rlRun "stap -vp2 -e 'probe sunrpc.clnt.create_client.return {}'"
rlPhaseEnd
# bz592830 ----------------------------------------------------
rlPhaseStart FAIL "test 17 bz592830"
rlRun "stap -vp2 -e 'probe signal.check_ignored.return {println(1)}'"
rlPhaseEnd
# caller-does-not-work ----------------------------------------
rlPhaseStart FAIL "test 18 caller-does-not-work"
rlRun "stap -ve 'probe kernel.function(\"vfs_read\") \
{ printf(\"%s\n\", caller()); exit() }' 2>&1 | tee strace.log"
rlPhaseEnd
# missing-rpc-tracepoints -------------------------------------
rlPhaseStart FAIL "test 19 missing-rpc-tracepoints"
rlRun "stap -L 'kernel.trace(\"rpc*\")'"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,14 @@
summary: Test for BZ#1566422 (stap ERROR Build-id mismatch with)
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
duration: 48h
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1566422
extra-summary: /tools/systemtap/Regression/stap-ERROR-Build-id-mismatch-with
extra-task: /tools/systemtap/Regression/stap-ERROR-Build-id-mismatch-with

View File

@ -0,0 +1,43 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/stap-ERROR-Build-id-mismatch-with
# Description: Test for BZ#1566422 (stap ERROR Build-id mismatch with)
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2018 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartTest
if arch | grep -q s390x; then
rlLogWarning "Test not relevant"
else
rlRun "sudo modprobe igb"
rlRun "stap -e 'probe module(\"igb\").function(\"igb_*_module\") { printf(\"%s: %s.\n\", ctime(gettimeofday_s()), ppfunc()); }' -c \"bash -c 'sudo rmmod igb; sudo modprobe igb'\""
fi
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,15 @@
summary: Test for BZ#1020207 (stapio possible circular locking dependency)
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
require:
recommend:
- systemtap
duration: 4h
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1020207
extra-summary: /tools/systemtap/Regression/stapio-possible-circular-locking-dependency
extra-task: /tools/systemtap/Regression/stapio-possible-circular-locking-dependency

View File

@ -0,0 +1,74 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/stapio-possible-circular-locking-dependency
# Description: Test for BZ#1020207 (stapio possible circular locking dependency)
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
rlJournalStart
rlPhaseStartSetup
rlRun "TMPDIR=\$(mktemp -d)"
rlRun "pushd $TMPDIR"
cat > test5.stap <<EOF
global dummy
probe end { printf("dummy: %d\n", dummy); }
probe kernel.trace("__extent_writepage") { dummy = dummy + 1; }
EOF
cat > reproduce.sh <<EOF
#!/bin/bash
i=0
while [ True ]; do
i=\$((i+1))
echo "Attempt \$i"
echo 3 > /proc/sys/vm/drop_caches
stap test5.stap -c "sleep 2"
if dmesg 2>&1 | grep "possible circular locking dependency detected"; then
dmesg
exit 1
fi
done
exit 0
EOF
rlRun "chmod +x reproduce.sh"
rlPhaseEnd
rlPhaseStartTest
TO=180 # timeout seconds
# when timeout TO is hit, exitcode 124 is returned
rlRun "timeout $TO ./reproduce.sh" 0,124
# if issue doesn't get reproduced within TO, the test will pass
rlPhaseEnd
rlPhaseStartCleanup
rlRun "popd"
rlRun "rm -r $TMPDIR"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,14 @@
summary: suspicious-RCU-usage
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
duration: 48h
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1788662
extra-summary: /tools/systemtap/Regression/suspicious-RCU-usage
extra-task: /tools/systemtap/Regression/suspicious-RCU-usage

View File

@ -0,0 +1,49 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/suspicious-RCU-usage
# Description: suspicious-RCU-usage
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2020 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartTest
dmesg1=$(mktemp)
dmesg2=$(mktemp)
diff=$(mktemp)
dmesg > $dmesg1
rlRun "stap -e 'probe kernel.trace(\"*\"){}' -t -u -v -c '/bin/true'"
sleep 10
dmesg > $dmesg2
rlRun "diff $dmesg1 $dmesg2 |& tee $diff"
# Reproduced on hpe-moonshot-02-c02.hpe1.lab.eng.bos.redhat.com
# using kernel-4.18.0-167.el8.aarch64+debug and systemtap-4.2-1.el8.aarch64.
rlRun "fgrep -i rcu $diff" 1
rm $dmesg{1,2} $diff
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,15 @@
summary: Test for BZ#1004059 (syscall_get_arguments() returning wrong value)
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
- perf
duration: 30m
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1004059
extra-summary: /tools/systemtap/Regression/syscall-get-arguments-returning-wrong-value
extra-task: /tools/systemtap/Regression/syscall-get-arguments-returning-wrong-value

View File

@ -0,0 +1,76 @@
#!/bin/bash
# vim: dict=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/syscall-get-arguments-returning-wrong-value
# Description: Test for BZ#1004059 (syscall_get_arguments() returning wrong value)
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2014 Red Hat, Inc.
#
# This copyrighted material is made available to anyone wishing
# to use, modify, copy, or redistribute it subject to the terms
# and conditions of the GNU General Public License version 2.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with this program; if not, write to the Free
# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
ASMLINKAGE='';
uname -m | egrep 'i[36]86' && \
ASMLINKAGE='asmlinkage();'
SCRIPT=$( mktemp )
cat > $SCRIPT <<-EOF
probe kernel.function("sys_open") {
$ASMLINKAGE
if (\$filename == pointer_arg(1)) {
exit();
} else {
error("Possible manifestation of rhbz1004059.");
}
}
EOF
function perf_probe_failed ()
{
probe=$1
perf probe -d $probe ||:
perf probe --add $probe
retval=$?
test $retval -eq 0 && \
rlLogInfo "Running perf probe --add $probe PASSED" || \
rlLogInfo "Running perf probe --add $probe FAILED"
perf probe -d $probe ||:
if test $retval -eq 0; then
return 1
else
return 0
fi
}
rlJournalStart
rlPhaseStartTest
(
perf_probe_failed "sys_open" && exit
stap -p4 $SCRIPT >&/dev/null && p="" || p='-P'
rlRun "stap $p -v $SCRIPT -c 'cat /dev/null'"
)
rm $SCRIPT
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,14 @@
summary: task-cwd-path-results-in-an-in-kernel-memory-leak
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
duration: 48h
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1412691
extra-summary: /tools/systemtap/Regression/task-cwd-path-results-in-an-in-kernel-memory-leak
extra-task: /tools/systemtap/Regression/task-cwd-path-results-in-an-in-kernel-memory-leak

View File

@ -0,0 +1,10 @@
probe kprocess.exit
{
path=fullpath_struct_path(task_cwd_path(task_current()))
printf("%s\n", path)
}
#probe timer.s(240)
#{
# exit()
#}

View File

@ -0,0 +1,46 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/task-cwd-path-results-in-an-in-kernel-memory-leak
# Description: task-cwd-path-results-in-an-in-kernel-memory-leak
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2017 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartTest
EXTRA=""
arch | fgrep ppc64le && EXTRA='-P'
# We rely on (and check for) units to be kB
rlRun "test \"$( awk '/KernelStack/ {print $3}' /proc/meminfo )\" == \"kB\""
rlRun "STACK1=$(awk '/KernelStack/ {print $2}' /proc/meminfo)"
rlRun "stap $EXTRA -w reproducer.stp -c 'bash ./trigger.sh' -o /dev/null"
rlRun "STACK2=$(awk '/KernelStack/ {print $2}' /proc/meminfo)"
rlRun "test $((STACK2 - 1000)) -le $STACK1"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,7 @@
#!/bin/bash
for i in `seq 1 2000`; do
ls / > /dev/null
done

View File

@ -0,0 +1,14 @@
summary: task-exe-file-results-in-an-file-struct-leak
description: ''
contact: Martin Cermak <mcermak@redhat.com>
component:
- systemtap
test: ./runtest.sh
framework: beakerlib
recommend:
- systemtap
duration: 48h
link:
- relates: https://bugzilla.redhat.com/show_bug.cgi?id=1430861
extra-summary: /tools/systemtap/Regression/task-exe-file-results-in-an-file-struct-leak
extra-task: /tools/systemtap/Regression/task-exe-file-results-in-an-file-struct-leak

View File

@ -0,0 +1,6 @@
probe kprocess.exit
{
t=task_current()
path=fullpath_struct_file(t, task_exe_file(t))
printf("%s\n", path)
}

View File

@ -0,0 +1,5 @@
probe kprocess.exit
{
path=fullpath_struct_path(task_cwd_path(task_current()))
printf("%s\n", path)
}

View File

@ -0,0 +1,45 @@
#!/bin/bash
# vim: dict+=/usr/share/beakerlib/dictionary.vim cpt=.,w,b,u,t,i,k
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# runtest.sh of /tools/systemtap/Regression/task-exe-file-results-in-an-file-struct-leak
# Description: task-exe-file-results-in-an-file-struct-leak
# Author: Martin Cermak <mcermak@redhat.com>
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#
# Copyright (c) 2017 Red Hat, Inc.
#
# This program is free software: you can redistribute it and/or
# modify it under the terms of the GNU General Public License as
# published by the Free Software Foundation, either version 2 of
# the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be
# useful, but WITHOUT ANY WARRANTY; without even the implied
# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/.
#
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Include Beaker environment
. /usr/share/beakerlib/beakerlib.sh || exit 1
PACKAGE="systemtap"
rlJournalStart
rlPhaseStartTest
EXTRA=''
arch | fgrep ppc64le && EXTRA="-P"
rlRun "FILE_NR1=$(awk '{print $1}' /proc/sys/fs/file-nr)"
REPRODUCER=reproducer.stp
rlRun "stap -g -w $EXTRA --dump-functions | fgrep task_exe_file || REPRODUCER=reproducer2.stp"
rlRun "stap -w $EXTRA $REPRODUCER -c 'bash ./trigger.sh' -o /dev/null"
rlRun "FILE_NR2=$(awk '{print $1}' /proc/sys/fs/file-nr)"
rlRun "test $((FILE_NR2 - 1000)) -le $FILE_NR1"
rlPhaseEnd
rlJournalPrintText
rlJournalEnd

View File

@ -0,0 +1,7 @@
#!/bin/bash
for i in `seq 1 100000`; do
/bin/true
done

View File

@ -0,0 +1,158 @@
#!/bin/bash
# Show the testcase list on demand.
if [[ "$1" == "TCLIST" ]]; then
if [[ "$(arch)" == "s390x" ]]; then
# Save the s390x machine time (regardless the rhel major):
# Almost all the testcases are failing there, and those, that
# do not, are flaky.
echo -n "notest.exp"
else
echo -n "bpf-asm.exp bpf.exp"
fi
exit 0
fi
_LOG=systemtap.check
cp systemtap.sum $_LOG
_cleanup()
{
rm $_LOG
}
trap _cleanup EXIT
set -xe
EXPECTED_PASSES_TRESHOLD=-1
if test $(rpm --eval '0%{rhel}') -eq 8; then
# systemtap-4.0-7.el8, kernel-4.18.0-64.el8
case `arch` in
x86_64)
EXPECTED_PASSES_TRESHOLD=55
sed -i '/FAIL: bigmap1.stp/d' $_LOG || :
sed -i '/FAIL: cast_op_tracepoint.stp/d' $_LOG || :
sed -i '/FAIL: logging1.stp/d' $_LOG || :
sed -i '/FAIL: perf1.stp/d' $_LOG || :
sed -i '/FAIL: pr23875_loop.stp/d' $_LOG || :
sed -i '/FAIL: pr23875_smash.stp/d' $_LOG || :
sed -i '/FAIL: reg_alloc3.stp/d' $_LOG || :
sed -i '/FAIL: string3.stp/d' $_LOG || :
sed -i '/FAIL: timer1.stp/d' $_LOG || :
sed -i '/FAIL: timer2.stp/d' $_LOG || :
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
;;
aarch64)
EXPECTED_PASSES_TRESHOLD=58
sed -i '/FAIL: bigmap1.stp/d' $_LOG || :
sed -i '/FAIL: logging1.stp/d' $_LOG || :
sed -i '/FAIL: perf1.stp/d' $_LOG || :
sed -i '/FAIL: perf2.stp/d' $_LOG || :
sed -i '/FAIL: pr23875_loop.stp/d' $_LOG || :
sed -i '/FAIL: pr23875_smash.stp/d' $_LOG || :
sed -i '/FAIL: reg_alloc3.stp/d' $_LOG || :
sed -i '/FAIL: string3.stp/d' $_LOG || :
sed -i '/FAIL: timer2.stp/d' $_LOG || :
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
;;
ppc64le)
EXPECTED_PASSES_TRESHOLD=53
sed -i '/FAIL: array.stp/d' $_LOG || :
sed -i '/FAIL: array_preinit.stp/d' $_LOG || :
sed -i '/FAIL: context_vars1.stp/d' $_LOG || :
sed -i '/FAIL: context_vars2.stp/d' $_LOG || :
sed -i '/FAIL: context_vars2.stp/d' $_LOG || :
sed -i '/FAIL: context_vars3.stp/d' $_LOG || :
sed -i '/FAIL: globals2.stp/d' $_LOG || :
sed -i '/FAIL: globals3.stp/d' $_LOG || :
sed -i '/FAIL: kprobes.stp/d' $_LOG || :
sed -i '/FAIL: logging1.stp/d' $_LOG || :
sed -i '/FAIL: perf1.stp/d' $_LOG || :
sed -i '/FAIL: perf2.stp/d' $_LOG || :
sed -i '/FAIL: pr23875_loop.stp/d' $_LOG || :
sed -i '/FAIL: pr23875_loop.stp/d' $_LOG || :
sed -i '/FAIL: pr23875_smash.stp/d' $_LOG || :
sed -i '/FAIL: reg_alloc3.stp/d' $_LOG || :
sed -i '/FAIL: string3.stp/d' $_LOG || :
sed -i '/FAIL: timer2.stp/d' $_LOG || :
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
;;
s390x)
# Many testcases fail for s390x, many of them are flaky
# Not worth testing at all at this stage at all probably.
echo "INFO: UNSUPPORTED RHEL7 ARCHITECTIRE ($(arch))"
exit 0
;;
*)
echo "ERROR: UNSUPPORTED RHEL8 ARCHITECTIRE"
exit 1
;;
esac
elif test $(rpm --eval '0%{rhel}') -eq 7; then
case `arch` in
x86_64)
# (rhel7) systemtap-3.3-3.el7.x86_64, kernel-3.10.0-993.el7.x86_64
if test $(rpm -q --queryformat='%{version}\n' kernel | awk -F. '{print $1}') -eq 3; then
EXPECTED_PASSES_TRESHOLD=32
sed -i '/FAIL: cast_op_tracepoint.stp/d' $_LOG || :
sed -i '/FAIL: perf2.stp/d' $_LOG || :
sed -i '/FAIL: reg_alloc3.stp/d' $_LOG || :
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
elif test $(rpm -q --queryformat='%{version}\n' kernel | awk -F. '{print $1}') -eq 4; then
# (rhel-alt-7) systemtap-3.3-3.el7.x86_64, kernel-4.14.0-115.el7a.x86_64
echo "ERROR: known bug on rhel-alt ('map entry 0: Function not implemented')"
echo "<@fche> # CONFIG_BPF_SYSCALL is not set"
exit 0
else
echo "ERROR: UNSUPPORTED RHEL7 KERNEL VERSION"
exit 1
fi
;;
*)
echo "INFO: UNSUPPORTED RHEL7 ARCHITECTIRE ($(arch))"
exit 0
;;
esac
elif test $(rpm --eval '0%{fedora}') -eq 29; then
case `arch` in
x86_64)
EXPECTED_PASSES_TRESHOLD=33
sed -i '/FAIL: array.stp/d' $_LOG || :
sed -i '/FAIL: bigmap1.stp/d' $_LOG || :
sed -i '/FAIL: cast_op_tracepoint.stp/d' $_LOG || :
sed -i '/FAIL: no_end.stp/d' $_LOG || :
sed -i '/FAIL: printf.stp/d' $_LOG || :
sed -i '/FAIL: reg_alloc3.stp/d' $_LOG || :
sed -i '/FAIL: string1.stp/d' $_LOG || :
sed -i '/FAIL: timer2.stp/d' $_LOG || :
sed -i '/FAIL: tracepoint1.stp/d' $_LOG || :
;;
*)
# No test results for other arches yet
true;
;;
esac
else
echo "ERROR: UNSUPPORTED RHELMAJOR"
exit 1
fi
true _v_v_v_v_v_v_v_v_v_v_v_ UNEXPECTED FAILURES: _v_v_v_v_v_v_v_v_v_v_v_v_v_v_
fgrep 'FAIL: ' $_LOG || :
true -^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-^-
EXPECTED_PASSES=$(grep -a '^PASS: ' $_LOG | wc -l)
UNEXPECTED_FAILURES=$(grep -a '^FAIL: ' $_LOG | wc -l)
test ${EXPECTED_PASSES_TRESHOLD} -gt 1
test 0${EXPECTED_PASSES} -ge 0${EXPECTED_PASSES_TRESHOLD}
test 0${UNEXPECTED_FAILURES} -eq 0
rm $_LOG
set +xe

Some files were not shown because too many files have changed in this diff Show More