├── .dir-locals.el ├── .git-commit-template ├── .github └── workflows │ └── check.yml ├── .gitignore ├── .travis.yml ├── COPYING ├── Makefile.am ├── NEWS ├── README.md ├── RELEASE ├── apidoc ├── Doxyfile.in ├── Makefile.am └── html │ └── Makefile.am ├── autogen.sh ├── codecov.yml ├── configure.ac ├── docs └── doxygen.conf ├── gen-version ├── include ├── Makefile.am ├── abrt.h ├── core │ ├── frame.h │ ├── stacktrace.h │ ├── thread.h │ └── unwind.h ├── deb.h ├── distance.h ├── frame.h ├── gdb │ ├── frame.h │ ├── sharedlib.h │ ├── stacktrace.h │ └── thread.h ├── java │ ├── frame.h │ ├── stacktrace.h │ └── thread.h ├── js │ ├── frame.h │ ├── platform.h │ └── stacktrace.h ├── koops │ ├── frame.h │ └── stacktrace.h ├── location.h ├── normalize.h ├── operating_system.h ├── python │ ├── frame.h │ └── stacktrace.h ├── report.h ├── report_type.h ├── rpm.h ├── ruby │ ├── frame.h │ └── stacktrace.h ├── stacktrace.h ├── thread.h └── utils.h ├── lib ├── Makefile.am ├── abrt.c ├── callgraph.c ├── callgraph.h ├── cluster.c ├── cluster.h ├── core_frame.c ├── core_stacktrace.c ├── core_thread.c ├── core_unwind.c ├── core_unwind_elfutils.c ├── core_unwind_libunwind.c ├── deb.c ├── disasm.c ├── disasm.h ├── distance.c ├── elves.c ├── elves.h ├── gdb_frame.c ├── gdb_sharedlib.c ├── gdb_stacktrace.c ├── gdb_thread.c ├── generic_frame.c ├── generic_frame.h ├── generic_stacktrace.c ├── generic_stacktrace.h ├── generic_thread.c ├── generic_thread.h ├── internal_unwind.h ├── internal_utils.h ├── java_frame.c ├── java_stacktrace.c ├── java_thread.c ├── js_frame.c ├── js_platform.c ├── js_stacktrace.c ├── json_utils.c ├── json_utils.h ├── koops_frame.c ├── koops_stacktrace.c ├── location.c ├── normalize.c ├── normalize_hash.gperf ├── operating_system.c ├── python_frame.c ├── python_stacktrace.c ├── report.c ├── rpm.c ├── ruby_frame.c ├── ruby_stacktrace.c ├── unstrip.c ├── unstrip.h └── utils.c ├── m4 ├── .gitignore └── ax_valgrind_check.m4 ├── python ├── Makefile.am ├── __init__.py ├── doc │ ├── Makefile.am │ ├── clustering.rst │ ├── conf.py.in │ ├── index.rst │ ├── report.rst │ ├── satyr.py │ └── stacktrace.rst ├── py_base_frame.c ├── py_base_frame.h ├── py_base_stacktrace.c ├── py_base_stacktrace.h ├── py_base_thread.c ├── py_base_thread.h ├── py_cluster.c ├── py_cluster.h ├── py_common.c ├── py_common.h ├── py_core_frame.c ├── py_core_frame.h ├── py_core_stacktrace.c ├── py_core_stacktrace.h ├── py_core_thread.c ├── py_core_thread.h ├── py_gdb_frame.c ├── py_gdb_frame.h ├── py_gdb_sharedlib.c ├── py_gdb_sharedlib.h ├── py_gdb_stacktrace.c ├── py_gdb_stacktrace.h ├── py_gdb_thread.c ├── py_gdb_thread.h ├── py_java_frame.c ├── py_java_frame.h ├── py_java_stacktrace.c ├── py_java_stacktrace.h ├── py_java_thread.c ├── py_java_thread.h ├── py_js_frame.c ├── py_js_frame.h ├── py_js_stacktrace.c ├── py_js_stacktrace.h ├── py_koops_frame.c ├── py_koops_frame.h ├── py_koops_stacktrace.c ├── py_koops_stacktrace.h ├── py_metrics.c ├── py_metrics.h ├── py_module.c ├── py_operating_system.c ├── py_operating_system.h ├── py_python_frame.c ├── py_python_frame.h ├── py_python_stacktrace.c ├── py_python_stacktrace.h ├── py_report.c ├── py_report.h ├── py_rpm_package.c ├── py_rpm_package.h ├── py_ruby_frame.c ├── py_ruby_frame.h ├── py_ruby_stacktrace.c └── py_ruby_stacktrace.h ├── ruby ├── Makefile.am ├── Rakefile ├── lib │ └── satyr.rb ├── rubygem-satyr.spec.in ├── satyr.gemspec └── test │ ├── data │ └── ureport-1 │ └── test_satyr.rb ├── satyr.1.in ├── satyr.c ├── satyr.pc.in ├── satyr.spec.in └── tests ├── .gitignore ├── Makefile.am ├── abrt.c ├── atlocal.in ├── cluster.c ├── core.21426 ├── core_frame.c ├── core_stacktrace.c ├── core_thread.c ├── dump_core.c ├── gdb_frame.c ├── gdb_sharedlib.c ├── gdb_stacktrace.c ├── gdb_stacktraces ├── no-crash-frame-found ├── no-thread-header ├── quality_100 ├── quality_89 ├── rhbz-1032472 ├── rhbz-1119072 ├── rhbz-1239318 ├── rhbz-1239318_modified ├── rhbz-621492 ├── rhbz-803600 └── rhbz-955617 ├── gdb_thread.c ├── java_frame.c ├── java_stacktrace.c ├── java_stacktraces ├── java-01 ├── java-02 ├── java-03 └── java-04 ├── java_testcases.c ├── java_thread.c ├── js_frame.c ├── js_platform.c ├── js_stacktrace.c ├── js_stacktraces ├── node-01 ├── node-01-expected-json ├── node-02 └── node-02-expected-json ├── json_files ├── core-01 ├── ureport-1 ├── ureport-1-auth └── ureport-from-problem-dir ├── kerneloopses ├── arm-hung-task-oops ├── arm-hung-task-oops-2 ├── github-102 ├── github-113 ├── github-73 ├── github-73-modified ├── gitlog-01 ├── gitlog-02 ├── gitlog-03 ├── gitlog-04 ├── gitlog-05 ├── gitlog-06 ├── gitlog-07 ├── gitlog-08 ├── gitlog-09 ├── gitlog-10 ├── gitlog-11 ├── gitlog-12 ├── gitlog-13 ├── gitlog-14 ├── gitlog-15 ├── gitlog-16 ├── gitlog-17 ├── gitlog-18 ├── gitlog-19 ├── gitlog-20 ├── gitlog-21 ├── gitlog-22 ├── gitlog-23 ├── gitlog-24 ├── gitlog-25 ├── gitlog-26 ├── gitlog-27 ├── gitlog-28 ├── gitlog-29 ├── gitlog-30 ├── gitlog-31 ├── rhbz-1040900-ppc64-1 ├── rhbz-1040900-s390x-1 ├── rhbz-1040900-s390x-2 ├── rhbz-1140681 ├── rhbz-1235021 ├── rhbz-1518943 ├── rhbz-827868 ├── rhbz-827868-modified ├── rhbz-836206 ├── rhbz-865695-0 ├── rhbz-865695-2 └── rhbz-865695-2-notime ├── koops_frame.c ├── koops_stacktrace.c ├── local.at ├── metrics.c ├── normalize.c ├── operating_system.c ├── problem_dir ├── .libreport │ └── owner ├── abrt_version ├── analyzer ├── architecture ├── cgroup ├── cmdline ├── component ├── core_backtrace ├── count ├── dso_list ├── environ ├── executable ├── global_pid ├── hostname ├── kernel ├── last_occurrence ├── limits ├── maps ├── mountinfo ├── namespaces ├── open_fds ├── os_info ├── os_release ├── package ├── pid ├── pkg_arch ├── pkg_epoch ├── pkg_fingerprint ├── pkg_name ├── pkg_release ├── pkg_vendor ├── pkg_version ├── proc_pid_status ├── pwd ├── reason ├── runlevel ├── tid ├── time ├── type ├── uid ├── username ├── uuid └── var_log_messages ├── programs ├── a.out ├── abi_library.c ├── abi_program.c ├── libabi_library.so ├── null_dereference.bin.x86_64 ├── null_dereference.c └── null_dereference.core.x86_64 ├── python ├── core.py ├── gdb.py ├── java.py ├── javascript.py ├── koops.py ├── metrics.py ├── misc.py ├── python.py ├── report.py ├── ruby.py ├── satyr.py └── test_helpers.py ├── python_bindings.at ├── python_stacktraces ├── python-01 ├── python-02 ├── python-03 ├── python-04 ├── python-05 └── python-06 ├── report.c ├── rpm.c ├── ruby_frame.c ├── ruby_stacktrace.c ├── ruby_stacktraces ├── ruby-01 ├── ruby-01-expected-json ├── ruby-02 ├── ruby-02-expected-json ├── ruby-03 ├── ruby-03-expected-json ├── ruby-04 └── ruby-04-expected-json ├── testsuite.at ├── utils.c └── valgrind.supp /.dir-locals.el: -------------------------------------------------------------------------------- 1 | ;; Emacs settings for btparser 2 | ((c-mode . ((c-file-style . "BSD") 3 | (c-basic-offset . 4) 4 | (indent-tabs-mode . nil) 5 | (show-trailing-whitespace . t)))) 6 | -------------------------------------------------------------------------------- /.git-commit-template: -------------------------------------------------------------------------------- 1 | COMPONENT: Subject 2 | 3 | Explanation 4 | 5 | Resolves: 6 | https://github.com/abrt/satyr/issues/XXXX 7 | https://bugzilla.redhat.com/show_bug.cgi?id=XXXXXX 8 | 9 | # Try to keep the subject line within 52 chars ----| 10 | # Also please try to not exceed 72 characters of length for the body --| 11 | # Avoid using exact file names as COMPONENT. Use keywords such as spec, 12 | # client, dump_dir etc. You do not need to follow this template 100%. 13 | # See git log for examples. 14 | -------------------------------------------------------------------------------- /.github/workflows/check.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | on: 3 | pull_request: 4 | branches: [master] 5 | push: 6 | branches: [master] 7 | jobs: 8 | build: 9 | name: Build 10 | container: 11 | image: fedora:latest 12 | # All for gcore in core_stacktrace tests. 13 | options: "--cap-add=SYS_PTRACE --security-opt=apparmor:unconfined --security-opt=seccomp=unconfined" 14 | runs-on: ubuntu-latest 15 | steps: 16 | - name: Check out sources 17 | uses: actions/checkout@v2 18 | 19 | - name: Install build environment 20 | run: | 21 | dnf --assumeyes install dnf-plugins-core 22 | dnf --assumeyes copr enable @abrt/devel 23 | dnf --assumeyes install \ 24 | @c-development @development-tools @rpm-development-tools \ 25 | intltool 26 | 27 | - name: Install build dependencies 28 | run: ./autogen.sh sysdeps --install 29 | 30 | - name: Configure build 31 | run: ./autogen.sh 32 | 33 | - name: Build 34 | run: make --load-average=2 35 | 36 | - name: Run tests 37 | run: make check 38 | 39 | - name: Upload test log 40 | uses: actions/upload-artifact@v3 41 | with: 42 | name: testsuite.log 43 | path: tests/testsuite.log 44 | if: ${{ failure() }} 45 | 46 | coverage: 47 | name: Coverage 48 | container: 49 | image: fedora:latest 50 | # All for gcore in core_stacktrace tests. 51 | options: "--cap-add=SYS_PTRACE --security-opt=apparmor:unconfined --security-opt=seccomp=unconfined" 52 | runs-on: ubuntu-latest 53 | steps: 54 | - name: Check out sources 55 | uses: actions/checkout@v2 56 | 57 | - name: Install build environment 58 | run: | 59 | dnf --assumeyes install dnf-plugins-core 60 | dnf --assumeyes copr enable @abrt/devel 61 | dnf --assumeyes install \ 62 | @c-development @development-tools @rpm-development-tools \ 63 | intltool python3-codecov 64 | 65 | - name: Install build dependencies 66 | run: ./autogen.sh sysdeps --install 67 | 68 | - name: Configure build 69 | run: ./autogen.sh 70 | 71 | - name: Build 72 | run: make --load-average=2 CFLAGS+='--coverage -O0' 73 | 74 | - name: Run tests 75 | run: make check 76 | 77 | - name: Analyse code coverage 78 | run: cd lib && gcov -pbufc -o .libs *.lo 79 | 80 | - name: Upload coverage report 81 | run: codecov -X gcov pycov --gcov-glob 'python/*' 'tests/*' 82 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | .deps 3 | .libs 4 | Makefile 5 | Doxyfile 6 | *.o 7 | Makefile.in 8 | ar-lib 9 | compile 10 | satyr.1 11 | 12 | build/* 13 | 14 | /autom4te.cache 15 | /satyr 16 | /satyr.pc 17 | /satyr.spec 18 | /satyr-version 19 | /aclocal.m4 20 | /config.log 21 | /config.status 22 | /config.guess 23 | /config.sub 24 | /configure 25 | /depcomp 26 | /install-sh 27 | /ltmain.sh 28 | /libtool 29 | /missing 30 | /py-compile 31 | 32 | /docs/*.aux 33 | /docs/btparser.idx 34 | /docs/btparser.ilg 35 | /docs/btparser.ind 36 | /docs/btparser.log 37 | /docs/btparser.out 38 | /docs/btparser.toc 39 | /docs/doxygen 40 | 41 | /apidoc/html/*.html 42 | /apidoc/html/*.css 43 | /apidoc/html/*.js 44 | /apidoc/html/*.png 45 | /apidoc/html/search 46 | 47 | /lib/.deps 48 | /lib/.libs 49 | /lib/*.l[ao] 50 | /lib/Makefile 51 | /lib/stamp-h1 52 | /lib/config.h 53 | /lib/config.h.in 54 | /lib/normalize_hash.h 55 | 56 | /python/*.l[ao] 57 | /python/doc/conf.py 58 | /python/doc/_build 59 | 60 | /ruby/rubygem-satyr.spec 61 | /ruby/satyr-*.gem 62 | 63 | /test-driver 64 | /tests/*.log 65 | /tests/*.trs 66 | /tests/Makefile 67 | /tests/atconfig 68 | /tests/atlocal 69 | /tests/package.m4 70 | /tests/testsuite 71 | /tests/testsuite.log 72 | /tests/testsuite.dir 73 | /tests/python/test_helpers.pyc 74 | /tests/python/__pycache__ 75 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | compiler: 3 | - gcc 4 | - clang 5 | script: autoreconf -if && ./configure && make && make check || cat tests/testsuite.log 6 | -------------------------------------------------------------------------------- /Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = lib python tests include ruby apidoc 2 | 3 | # Automatic update of libtool. 4 | libtool: $(LIBTOOL_DEPS) 5 | $(SHELL) ./config.status libtool 6 | 7 | bin_PROGRAMS = satyr 8 | satyr_CFLAGS = -Wall -Iinclude -Ilib $(GLIB_CFLAGS) $(JSON_CFLAGS) 9 | satyr_SOURCES = satyr.c 10 | satyr_LDADD = lib/libsatyr.la 11 | 12 | man_MANS = satyr.1 13 | EXTRA_DIST = \ 14 | satyr.1.in \ 15 | satyr-version 16 | 17 | dist_doc_DATA = README.md 18 | 19 | satyr.1: satyr.1.in 20 | sed -e "s,\@PACKAGE_STRING\@,$(PACKAGE_STRING),g" $< > $@ 21 | 22 | pkgconfigdir = $(libdir)/pkgconfig 23 | pkgconfig_DATA = satyr.pc 24 | DISTCLEANFILES = $(pkgconfig_DATA) 25 | EXTRA_DIST += satyr.pc.in 26 | 27 | EXTRA_DIST += autogen.sh RELEASE 28 | 29 | #UPLOAD_URI = user@fedorahosted.org:abrt 30 | #.PHONY: upload 31 | #upload: 32 | # make dist 33 | # scp $(distdir).tar.gz $(UPLOAD_URI) 34 | 35 | RPM_DIRS = --define "_sourcedir `pwd`" \ 36 | --define "_rpmdir `pwd`/build" \ 37 | --define "_specdir `pwd`" \ 38 | --define "_builddir `pwd`/build" \ 39 | --define "_srcrpmdir `pwd`/build" 40 | 41 | EXTRA_DIST += satyr.spec.in 42 | rpm: dist satyr.spec 43 | rpmbuild $(RPM_DIRS) $(RPM_FLAGS) -ba satyr.spec 44 | srpm: dist satyr.spec 45 | rpmbuild $(RPM_DIRS) -bs satyr.spec 46 | 47 | .PHONY: release-minor 48 | release-minor: 49 | OLD_VER=$$(git describe --tags --match "[0-9]*" --abbrev=0 HEAD 2>/dev/null); \ 50 | MAJOR_VER=$$(echo $$OLD_VER | cut -d. -f 1); \ 51 | MINOR_VER=$$(echo $$OLD_VER | cut -d. -f 2); \ 52 | $(MAKE) release OLD_VER=$$OLD_VER NEW_VER="$$MAJOR_VER.$$((MINOR_VER+1))" 53 | 54 | .PHONY: release-major 55 | release-major: 56 | OLD_VER=$$(git describe --tags --match "[0-9]*" --abbrev=0 HEAD 2>/dev/null); \ 57 | MAJOR_VER=$$(echo $$OLD_VER | cut -d. -f 1); \ 58 | $(MAKE) release OLD_VER=$$OLD_VER NEW_VER="$$((MAJOR_VER+1)).0" 59 | 60 | .PHONY: release 61 | release: 62 | echo "* $$(LC_TIME='en_US.UTF-8' date +'%a %b %d %Y') $$(git config --get user.name) <$$(git config --get user.email)> $$NEW_VER-1" | sort > /tmp/changelog.tmp; \ 63 | git log --oneline $$OLD_VER..HEAD | awk '{$$1=""; if (a[$$0]++ == 0) print "-" $$0} END {print ""}' | grep -v -e "- Merge" -e "- testsuite:" -e "- make:" >> /tmp/changelog.tmp; \ 64 | sed "$$(grep -n %changelog satyr.spec.in | cut -f1 -d: | head -1)"'r /tmp/changelog.tmp' -i satyr.spec.in; \ 65 | sed 's|DEF_VER=.*$$|DEF_VER='$$NEW_VER'|' -i gen-version; \ 66 | git add gen-version satyr.spec.in; \ 67 | git commit -s -m "Release $$NEW_VER"; \ 68 | git tag "$$NEW_VER"; \ 69 | echo -n "$$NEW_VER" > satyr-version 70 | autoconf --force 71 | $(MAKE) dist 72 | -------------------------------------------------------------------------------- /RELEASE: -------------------------------------------------------------------------------- 1 | Releasing a new version of satyr 2 | -------------------------------- 3 | 4 | 1. Check that all changes from all work computers are committed. Then 5 | check, that the local clone of the program is up-to-date: 6 | $ git status 7 | $ git pull 8 | 9 | 10 | 2. In lib/Makefile.am, update the library version according to the libtool documentation 11 | (info(1) libtool or https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html): 12 | libsatyr_la_LDFLAGS = -version-info 2:1:0 13 | 14 | 15 | 3. Update NEWS file to include user-visible, important informations 16 | about the new release. Provide the date of the release (Released 17 | YYYY-MM-DD). 18 | * NEWS: Document recent changes. 19 | 20 | 21 | 4. Read and update the README.md file, if you see that some change made 22 | since the last release expanded the project scope, or added 23 | significant new functionality. 24 | 25 | 26 | 5. Read and update the man page, to be sure that it's synchronized 27 | with the code. 28 | 29 | 30 | 6. Run make release-{minor,major}, when all changes are committed. 31 | -------------------------------------------------------------------------------- /apidoc/Makefile.am: -------------------------------------------------------------------------------- 1 | if DOXYGEN_DOCS_ENABLED 2 | SUBDIRS = html 3 | 4 | EXTRA_DIST = Doxyfile.in 5 | 6 | noinst_PROGRAMS = index.html 7 | 8 | index_html_SOURCES = Doxyfile 9 | 10 | index.html: Doxyfile 11 | doxygen Doxyfile 12 | 13 | endif 14 | 15 | MAINTAINERCLEANFILES = \ 16 | Makefile.in 17 | -------------------------------------------------------------------------------- /apidoc/html/Makefile.am: -------------------------------------------------------------------------------- 1 | CLEANFILES = *.html *.css *.png *.gif *.js 2 | 3 | MAINTAINERCLEANFILES = \ 4 | Makefile.in 5 | -------------------------------------------------------------------------------- /autogen.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | set -x 4 | 5 | print_help() 6 | { 7 | cat << EOH 8 | Prepares the source tree for configuration 9 | 10 | Usage: 11 | autogen.sh [sysdeps [--install]] 12 | 13 | Options: 14 | 15 | sysdeps prints out all dependencies 16 | --install install all dependencies ('sudo yum install \$DEPS') 17 | 18 | EOH 19 | } 20 | 21 | build_depslist() 22 | { 23 | PACKAGE=$1 24 | TEMPFILE=$(mktemp -u --suffix=.spec) 25 | sed 's/@@SATYR_VERSION@@/1/' < $PACKAGE.spec.in | sed 's/@.*@//' > $TEMPFILE 26 | rpmspec -P $TEMPFILE | grep "^\(Build\)\?Requires:" | \ 27 | tr -s " " | tr "," "\n" | cut -f2- -d " " | \ 28 | grep -v "\(^\|python[23]-\)"$PACKAGE | sort -u | \ 29 | sed -E -e 's/^(.*) (.*)$/"\1 \2"/' -e 's|([[:alpha:]]+\(.+\))|"\1"|' | \ 30 | tr \" \' 31 | rm $TEMPFILE 32 | } 33 | 34 | case "$1" in 35 | "--help"|"-h") 36 | print_help 37 | exit 0 38 | ;; 39 | "sysdeps") 40 | DEPS_LIST=$(build_depslist satyr) 41 | 42 | if [ "$2" == "--install" ]; then 43 | set -x verbose 44 | eval sudo dnf --assumeyes install --setopt=strict=0 $DEPS_LIST 45 | set +x verbose 46 | else 47 | echo $DEPS_LIST 48 | fi 49 | exit 0 50 | ;; 51 | *) 52 | echo "Running gen-version" 53 | ./gen-version 54 | 55 | echo "Running autoreconf" 56 | autoreconf --install --force 57 | 58 | echo "Running configure" 59 | ./configure "$@" 60 | ;; 61 | esac 62 | -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- 1 | comment: 2 | # Only comment on a pull request if code coverage changes. 3 | require_changes: true 4 | 5 | fixes: 6 | # Fix file structure imposed by GitHub Actions runners. 7 | - "/__w/satyr/satyr/::" 8 | -------------------------------------------------------------------------------- /gen-version: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | DEF_VER=0.43 4 | LF=' 5 | ' 6 | 7 | if test -d .git -o -f .git && 8 | VN=$(git describe --tags --match "[0-9]*" --abbrev=4 HEAD 2>/dev/null) && 9 | case "$VN" in 10 | *$LF*) (exit 1) ;; 11 | [0-9]*) 12 | git update-index -q --refresh 13 | test -z "$(git diff-index --name-only HEAD --)" || VN="$VN-dirty" 14 | esac 15 | then 16 | VN=$(echo "$VN" | sed -e 's/-/./g'); 17 | else 18 | VN="$DEF_VER" 19 | fi 20 | 21 | sed -e "s/@@SATYR_VERSION@@/$VN/g" < satyr.spec.in > satyr.spec 22 | 23 | echo -n $VN > satyr-version 24 | -------------------------------------------------------------------------------- /include/Makefile.am: -------------------------------------------------------------------------------- 1 | mainheadersdir = $(includedir)/satyr 2 | mainheaders_HEADERS = \ 3 | abrt.h \ 4 | deb.h \ 5 | distance.h \ 6 | location.h \ 7 | normalize.h \ 8 | operating_system.h \ 9 | report.h \ 10 | report_type.h \ 11 | rpm.h \ 12 | utils.h \ 13 | stacktrace.h \ 14 | thread.h \ 15 | frame.h 16 | 17 | # If you know HOW can I include subdirectories without explicitly enumerating 18 | # them, PLEASE tell me. 19 | 20 | coreheadersdir = $(includedir)/satyr/core 21 | coreheaders_HEADERS = \ 22 | core/frame.h \ 23 | core/stacktrace.h \ 24 | core/thread.h \ 25 | core/unwind.h 26 | 27 | gdbheadersdir = $(includedir)/satyr/gdb 28 | gdbheaders_HEADERS = \ 29 | gdb/frame.h \ 30 | gdb/sharedlib.h \ 31 | gdb/stacktrace.h \ 32 | gdb/thread.h 33 | 34 | javaheadersdir = $(includedir)/satyr/java 35 | javaheaders_HEADERS = \ 36 | java/frame.h \ 37 | java/thread.h \ 38 | java/stacktrace.h 39 | 40 | koopsheadersdir = $(includedir)/satyr/koops 41 | koopsheaders_HEADERS = \ 42 | koops/frame.h \ 43 | koops/stacktrace.h 44 | 45 | pythonheadersdir = $(includedir)/satyr/python 46 | pythonheaders_HEADERS = \ 47 | python/frame.h \ 48 | python/stacktrace.h 49 | 50 | rubyheadersdir = $(includedir)/satyr/ruby 51 | rubyheaders_HEADERS = \ 52 | ruby/frame.h \ 53 | ruby/stacktrace.h 54 | 55 | jsheadersdir = $(includedir)/satyr/js 56 | jsheaders_HEADERS = \ 57 | js/platform.h \ 58 | js/frame.h \ 59 | js/stacktrace.h 60 | -------------------------------------------------------------------------------- /include/core/unwind.h: -------------------------------------------------------------------------------- 1 | /* 2 | core_unwind.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_CORE_UNWIND_H 21 | #define SATYR_CORE_UNWIND_H 22 | 23 | /** 24 | * @file 25 | * @brief Core unwind 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | 34 | struct sr_core_stacktrace; 35 | struct sr_gdb_stacktrace; 36 | struct sr_core_stracetrace_unwind_state; 37 | 38 | struct sr_core_stacktrace * 39 | sr_parse_coredump(const char *coredump_filename, 40 | const char *executable_filename, 41 | char **error_message); 42 | 43 | struct sr_core_stacktrace * 44 | sr_core_stacktrace_from_gdb(const char *gdb_output, 45 | const char *coredump_filename, 46 | const char *executable_filename, 47 | char **error_message); 48 | 49 | /* This function can be used to unwind stack of live ("dying") process, invoked 50 | * from the core dump hook (/proc/sys/kernel/core_pattern). 51 | * 52 | * Beware: 53 | * 54 | * - It can only unwind one thread of the process, the thread that caused the 55 | * terminating signal to be sent. You must supply that thread's tid. 56 | * - The function calls close() on stdin, meaning that in the core handler you 57 | * cannot access the core image after calling this function. 58 | */ 59 | struct sr_core_stacktrace * 60 | sr_core_stacktrace_from_core_hook(pid_t thread_id, 61 | const char *executable_filename, 62 | int signum, 63 | char **error_message); 64 | 65 | struct sr_core_stracetrace_unwind_state * 66 | sr_core_stacktrace_from_core_hook_prepare(pid_t tid, char **error_msg); 67 | 68 | struct sr_core_stacktrace * 69 | sr_core_stacktrace_from_core_hook_generate(pid_t tid, 70 | const char *executable, 71 | int signum, 72 | struct sr_core_stracetrace_unwind_state *state, 73 | char **error_msg); 74 | 75 | void 76 | sr_core_stacktrace_unwind_state_free(struct sr_core_stracetrace_unwind_state *state); 77 | 78 | #ifdef __cplusplus 79 | } 80 | #endif 81 | 82 | #endif 83 | -------------------------------------------------------------------------------- /include/deb.h: -------------------------------------------------------------------------------- 1 | /* 2 | deb.h 3 | 4 | Copyright (C) 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_DEB_H 21 | #define SATYR_DEB_H 22 | 23 | /** 24 | * @file 25 | * @brief Deb-related structures and utilities. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | 34 | struct sr_deb_package 35 | { 36 | struct sr_deb_package *next; 37 | }; 38 | 39 | void 40 | sr_deb_package_free(struct sr_deb_package *package, bool recursive); 41 | 42 | #ifdef __cplusplus 43 | } 44 | #endif 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /include/frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | frame.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_FRAME_H 21 | #define SATYR_FRAME_H 22 | 23 | /** 24 | * @file 25 | * @brief Frame 26 | */ 27 | 28 | /** 29 | * Functions declared here work with all frame types, i.e. 30 | * * sr_core_frame 31 | * * sr_python_frame 32 | * * sr_koops_frame 33 | * * sr_java_frame 34 | * * sr_gdb_frame 35 | * * sr_ruby_frame 36 | * * sr_js_frame 37 | * You may need to explicitly cast the pointer to struct sr_frame in order to 38 | * avoid compiler warning. 39 | */ 40 | 41 | #ifdef __cplusplus 42 | extern "C" { 43 | #endif 44 | 45 | #include 46 | #include "report_type.h" 47 | 48 | 49 | struct sr_frame 50 | { 51 | enum sr_report_type type; 52 | }; 53 | 54 | /** 55 | * Return the next frame linked from this frame (corresponds to reading the 56 | * "next" struct member). 57 | */ 58 | struct sr_frame * 59 | sr_frame_next(struct sr_frame *frame); 60 | 61 | /** 62 | * Set the next pointer. 63 | */ 64 | void 65 | sr_frame_set_next(struct sr_frame *cur, struct sr_frame *next); 66 | 67 | /** 68 | * Appends textual representation of the frame to buffer strbuf. 69 | */ 70 | void 71 | sr_frame_append_to_str(struct sr_frame *frame, GString *strbuf); 72 | 73 | /** 74 | * Compares two frames. Returns 0 on equality. Frames of distinct type are 75 | * always unequal. 76 | */ 77 | int 78 | sr_frame_cmp(struct sr_frame *t1, struct sr_frame *t2); 79 | 80 | /** 81 | * Compares two frames for the purpose of thread distance computation. Returns 82 | * 0 on equality. Frames of distinct type are always unequal. 83 | */ 84 | int 85 | sr_frame_cmp_distance(struct sr_frame *t1, struct sr_frame *t2); 86 | 87 | void 88 | sr_frame_free(struct sr_frame *frame); 89 | 90 | #ifdef __cplusplus 91 | } 92 | #endif 93 | 94 | #endif 95 | -------------------------------------------------------------------------------- /include/js/frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | js_frame.h 3 | 4 | Copyright (C) 2016 ABRT Team 5 | Copyright (C) 2016 Red Hat, Inc. 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | */ 21 | #ifndef SATYR_JS_FRAME_H 22 | #define SATYR_JS_FRAME_H 23 | 24 | /** 25 | * @file 26 | * @brief JavaScript frame structure and related routines. 27 | */ 28 | 29 | #ifdef __cplusplus 30 | extern "C" { 31 | #endif 32 | 33 | #include "../report_type.h" 34 | #include 35 | #include 36 | #include 37 | #include 38 | 39 | struct sr_location; 40 | 41 | struct sr_js_frame 42 | { 43 | enum sr_report_type type; 44 | 45 | char *file_name; 46 | 47 | uint32_t file_line; 48 | 49 | uint32_t line_column; 50 | 51 | char *function_name; 52 | 53 | struct sr_js_frame *next; 54 | }; 55 | 56 | struct sr_js_frame * 57 | sr_js_frame_new(void); 58 | 59 | void 60 | sr_js_frame_init(struct sr_js_frame *frame); 61 | 62 | void 63 | sr_js_frame_free(struct sr_js_frame *frame); 64 | 65 | struct sr_js_frame * 66 | sr_js_frame_dup(struct sr_js_frame *frame, bool siblings); 67 | 68 | int 69 | sr_js_frame_cmp(struct sr_js_frame *frame1, struct sr_js_frame *frame2); 70 | 71 | int 72 | sr_js_frame_cmp_distance(struct sr_js_frame *frame1, 73 | struct sr_js_frame *frame2); 74 | 75 | struct sr_js_frame * 76 | sr_js_frame_append(struct sr_js_frame *dest, 77 | struct sr_js_frame *item); 78 | 79 | struct sr_js_frame * 80 | sr_js_frame_parse(const char **input, struct sr_location *location); 81 | 82 | struct sr_js_frame * 83 | sr_js_frame_parse_v8(const char **input, struct sr_location *location); 84 | 85 | char * 86 | sr_js_frame_to_json(struct sr_js_frame *frame); 87 | 88 | struct sr_js_frame * 89 | sr_js_frame_from_json(json_object *root, char **error_message); 90 | 91 | void 92 | sr_js_frame_append_to_str(struct sr_js_frame *frame, GString *dest); 93 | 94 | #ifdef __cplusplus 95 | } 96 | #endif 97 | 98 | #endif 99 | -------------------------------------------------------------------------------- /include/js/stacktrace.h: -------------------------------------------------------------------------------- 1 | /* 2 | js_stacktrace.h 3 | 4 | Copyright (C) 2016 ABRT Team 5 | Copyright (C) 2016 Red Hat, Inc. 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | */ 21 | #ifndef SATYR_JS_STACKTRACE_H 22 | #define SATYR_JS_STACKTRACE_H 23 | 24 | /** 25 | * @file 26 | * @brief JavaScript stack trace 27 | */ 28 | 29 | #ifdef __cplusplus 30 | extern "C" { 31 | #endif 32 | 33 | #include "platform.h" 34 | #include "../report_type.h" 35 | #include 36 | #include 37 | 38 | struct sr_js_frame; 39 | struct sr_location; 40 | 41 | struct sr_js_stacktrace 42 | { 43 | enum sr_report_type type; 44 | 45 | char *exception_name; 46 | 47 | struct sr_js_frame *frames; 48 | 49 | sr_js_platform_t platform; 50 | }; 51 | 52 | struct sr_js_stacktrace * 53 | sr_js_stacktrace_new(void); 54 | 55 | void 56 | sr_js_stacktrace_init(struct sr_js_stacktrace *stacktrace); 57 | 58 | void 59 | sr_js_stacktrace_free(struct sr_js_stacktrace *stacktrace); 60 | 61 | struct sr_js_stacktrace * 62 | sr_js_stacktrace_dup(struct sr_js_stacktrace *stacktrace); 63 | 64 | struct sr_js_stacktrace * 65 | sr_js_stacktrace_parse(const char **input, 66 | struct sr_location *location); 67 | 68 | struct sr_js_stacktrace * 69 | sr_js_stacktrace_parse_v8(const char **input, 70 | struct sr_location *location); 71 | 72 | char * 73 | sr_js_stacktrace_get_reason(struct sr_js_stacktrace *stacktrace); 74 | 75 | char * 76 | sr_js_stacktrace_to_json(struct sr_js_stacktrace *stacktrace); 77 | 78 | struct sr_js_stacktrace * 79 | sr_js_stacktrace_from_json(json_object *root, char **error_message); 80 | 81 | #ifdef __cplusplus 82 | } 83 | #endif 84 | 85 | #endif 86 | -------------------------------------------------------------------------------- /include/normalize.h: -------------------------------------------------------------------------------- 1 | /* 2 | normalize.h 3 | 4 | Copyright (C) 2010 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_NORMALIZE_H 21 | #define SATYR_NORMALIZE_H 22 | 23 | /** 24 | * @file 25 | * @brief Normalization of stack traces. 26 | * 27 | * Normalization changes stack traces with respect to similarity by 28 | * removing unnecessary differences. Normalized stack traces can be 29 | * used to compute clusters and similarity of stack traces. 30 | */ 31 | 32 | #ifdef __cplusplus 33 | extern "C" { 34 | #endif 35 | 36 | struct sr_gdb_frame; 37 | struct sr_gdb_thread; 38 | struct sr_gdb_stacktrace; 39 | struct sr_core_thread; 40 | 41 | void 42 | sr_normalize_gdb_thread(struct sr_gdb_thread *thread); 43 | 44 | void 45 | sr_normalize_gdb_stacktrace(struct sr_gdb_stacktrace *stacktrace); 46 | 47 | void 48 | sr_normalize_core_thread(struct sr_core_thread *thread); 49 | 50 | // TODO: move to gdb_stacktrace.h 51 | /** 52 | * Checks whether the thread it contains some function used to exit 53 | * application. If a frame with the function is found, it is 54 | * returned. If there are multiple frames with abort function, the 55 | * lowest one is returned. 56 | * @returns 57 | * Returns NULL if such a frame is not found. 58 | */ 59 | struct sr_gdb_frame * 60 | sr_glibc_thread_find_exit_frame(struct sr_gdb_thread *thread); 61 | 62 | // TODO: move to metrics.h 63 | /** 64 | * Renames unknown function names ("??") that are between the same 65 | * function names to be treated as similar in later comparison. 66 | * Leaves unpair unknown functions unchanged. 67 | */ 68 | void 69 | sr_normalize_gdb_paired_unknown_function_names(struct sr_gdb_thread *thread1, 70 | struct sr_gdb_thread *thread2); 71 | 72 | // TODO: merge into normalization or something else 73 | /** 74 | * Remove frames which are not interesting in comparison with other threads. 75 | */ 76 | void 77 | sr_gdb_normalize_optimize_thread(struct sr_gdb_thread *thread); 78 | 79 | #ifdef __cplusplus 80 | } 81 | #endif 82 | 83 | #endif 84 | -------------------------------------------------------------------------------- /include/operating_system.h: -------------------------------------------------------------------------------- 1 | /* 2 | operating_system.h 3 | 4 | Copyright (C) 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_OPERATING_SYSTEM_H 21 | #define SATYR_OPERATING_SYSTEM_H 22 | 23 | /** 24 | * @file 25 | * @brief Operating system 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | #include 35 | 36 | struct sr_operating_system 37 | { 38 | char *name; 39 | char *version; 40 | char *architecture; 41 | char *cpe; 42 | /* Uptime in seconds. */ 43 | uint64_t uptime; 44 | char *desktop; 45 | char *variant; 46 | }; 47 | 48 | struct sr_operating_system * 49 | sr_operating_system_new(void); 50 | 51 | void 52 | sr_operating_system_init(struct sr_operating_system *operating_system); 53 | 54 | void 55 | sr_operating_system_free(struct sr_operating_system *operating_system); 56 | 57 | char * 58 | sr_operating_system_to_json(struct sr_operating_system *operating_system); 59 | 60 | struct sr_operating_system * 61 | sr_operating_system_from_json(json_object *root, char **error_message); 62 | 63 | bool 64 | sr_operating_system_parse_etc_system_release(const char *etc_system_release, 65 | char **name, 66 | char **version); 67 | bool 68 | sr_operating_system_parse_etc_os_release(const char *etc_os_release, 69 | struct sr_operating_system *operating_system); 70 | 71 | #ifdef __cplusplus 72 | } 73 | #endif 74 | 75 | #endif 76 | -------------------------------------------------------------------------------- /include/report.h: -------------------------------------------------------------------------------- 1 | /* 2 | report.h 3 | 4 | Copyright (C) 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_REPORT_H 21 | #define SATYR_REPORT_H 22 | 23 | /** 24 | * @file 25 | * @brief Report 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include "report_type.h" 33 | #include 34 | #include 35 | #include 36 | 37 | struct sr_stacktrace; 38 | 39 | struct sr_report_custom_entry 40 | { 41 | char *key; 42 | char *value; 43 | struct sr_report_custom_entry *next; 44 | }; 45 | 46 | struct sr_report 47 | { 48 | uint32_t report_version; 49 | enum sr_report_type report_type; 50 | 51 | char *reporter_name; 52 | char *reporter_version; 53 | 54 | // This is the real user id, not effective. 55 | bool user_root; 56 | bool user_local; 57 | 58 | struct sr_operating_system *operating_system; 59 | 60 | char *component_name; 61 | struct sr_rpm_package *rpm_packages; 62 | 63 | struct sr_stacktrace *stacktrace; 64 | 65 | struct sr_report_custom_entry *auth_entries; 66 | 67 | uint32_t serial; 68 | }; 69 | 70 | struct sr_report * 71 | sr_report_new(void); 72 | 73 | void 74 | sr_report_init(struct sr_report *report); 75 | 76 | void 77 | sr_report_free(struct sr_report *report); 78 | 79 | 80 | /* @brief Adds a new entry to 'auth' object 81 | * 82 | * The implementation is LIFO. The resulting list is in reversed. 83 | */ 84 | void 85 | sr_report_add_auth(struct sr_report *report, const char *key, const char *value); 86 | 87 | char * 88 | sr_report_to_json(struct sr_report *report); 89 | 90 | struct sr_report * 91 | sr_report_from_json(json_object *root, char **error_message); 92 | 93 | struct sr_report * 94 | sr_report_from_json_text(const char *text, char **error_message); 95 | 96 | #ifdef __cplusplus 97 | } 98 | #endif 99 | 100 | #endif 101 | -------------------------------------------------------------------------------- /include/report_type.h: -------------------------------------------------------------------------------- 1 | /* 2 | report_type.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_REPORT_TYPE_H 21 | #define SATYR_REPORT_TYPE_H 22 | 23 | /** 24 | * @file 25 | * @brief Report type 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | enum sr_report_type 33 | { 34 | SR_REPORT_INVALID = 0, 35 | SR_REPORT_CORE, 36 | SR_REPORT_PYTHON, 37 | SR_REPORT_KERNELOOPS, 38 | SR_REPORT_JAVA, 39 | SR_REPORT_GDB, 40 | SR_REPORT_RUBY, 41 | SR_REPORT_JAVASCRIPT, 42 | 43 | /* Keep this the last entry. */ 44 | SR_REPORT_NUM 45 | }; 46 | 47 | /* returns g_malloc()ed string representation of report_type */ 48 | char * 49 | sr_report_type_to_string(enum sr_report_type report_type); 50 | 51 | /* inverse function */ 52 | enum sr_report_type 53 | sr_report_type_from_string(const char *report_type_str); 54 | 55 | #ifdef __cplusplus 56 | } 57 | #endif 58 | 59 | #endif 60 | -------------------------------------------------------------------------------- /include/ruby/frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | ruby_frame.h 3 | 4 | Copyright (C) 2015 ABRT Team 5 | Copyright (C) 2015 Red Hat, Inc. 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | */ 21 | #ifndef SATYR_RUBY_FRAME_H 22 | #define SATYR_RUBY_FRAME_H 23 | 24 | /** 25 | * @file 26 | * @brief Ruby frame structure and related routines. 27 | */ 28 | 29 | #ifdef __cplusplus 30 | extern "C" { 31 | #endif 32 | 33 | #include "../report_type.h" 34 | #include 35 | #include 36 | #include 37 | #include 38 | 39 | struct sr_location; 40 | 41 | struct sr_ruby_frame 42 | { 43 | enum sr_report_type type; 44 | 45 | char *file_name; 46 | 47 | uint32_t file_line; 48 | 49 | bool special_function; 50 | 51 | char *function_name; 52 | 53 | uint32_t block_level; 54 | 55 | uint32_t rescue_level; 56 | 57 | struct sr_ruby_frame *next; 58 | }; 59 | 60 | struct sr_ruby_frame * 61 | sr_ruby_frame_new(void); 62 | 63 | void 64 | sr_ruby_frame_init(struct sr_ruby_frame *frame); 65 | 66 | void 67 | sr_ruby_frame_free(struct sr_ruby_frame *frame); 68 | 69 | struct sr_ruby_frame * 70 | sr_ruby_frame_dup(struct sr_ruby_frame *frame, bool siblings); 71 | 72 | int 73 | sr_ruby_frame_cmp(struct sr_ruby_frame *frame1, struct sr_ruby_frame *frame2); 74 | 75 | int 76 | sr_ruby_frame_cmp_distance(struct sr_ruby_frame *frame1, 77 | struct sr_ruby_frame *frame2); 78 | 79 | struct sr_ruby_frame * 80 | sr_ruby_frame_append(struct sr_ruby_frame *dest, 81 | struct sr_ruby_frame *item); 82 | 83 | struct sr_ruby_frame * 84 | sr_ruby_frame_parse(const char **input, struct sr_location *location); 85 | 86 | char * 87 | sr_ruby_frame_to_json(struct sr_ruby_frame *frame); 88 | 89 | struct sr_ruby_frame * 90 | sr_ruby_frame_from_json(json_object *root, char **error_message); 91 | 92 | void 93 | sr_ruby_frame_append_to_str(struct sr_ruby_frame *frame, GString *dest); 94 | 95 | #ifdef __cplusplus 96 | } 97 | #endif 98 | 99 | #endif 100 | -------------------------------------------------------------------------------- /include/ruby/stacktrace.h: -------------------------------------------------------------------------------- 1 | /* 2 | ruby_stacktrace.h 3 | 4 | Copyright (C) 2015 ABRT Team 5 | Copyright (C) 2015 Red Hat, Inc. 6 | 7 | This program is free software; you can redistribute it and/or modify 8 | it under the terms of the GNU General Public License as published by 9 | the Free Software Foundation; either version 2 of the License, or 10 | (at your option) any later version. 11 | 12 | This program is distributed in the hope that it will be useful, 13 | but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | GNU General Public License for more details. 16 | 17 | You should have received a copy of the GNU General Public License along 18 | with this program; if not, write to the Free Software Foundation, Inc., 19 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 20 | */ 21 | #ifndef SATYR_RUBY_STACKTRACE_H 22 | #define SATYR_RUBY_STACKTRACE_H 23 | 24 | /** 25 | * @file 26 | * @brief Ruby stack trace 27 | */ 28 | 29 | #ifdef __cplusplus 30 | extern "C" { 31 | #endif 32 | 33 | #include "../report_type.h" 34 | #include 35 | #include 36 | 37 | struct sr_ruby_frame; 38 | struct sr_location; 39 | 40 | struct sr_ruby_stacktrace 41 | { 42 | enum sr_report_type type; 43 | 44 | char *exception_name; 45 | 46 | struct sr_ruby_frame *frames; 47 | }; 48 | 49 | struct sr_ruby_stacktrace * 50 | sr_ruby_stacktrace_new(void); 51 | 52 | void 53 | sr_ruby_stacktrace_init(struct sr_ruby_stacktrace *stacktrace); 54 | 55 | void 56 | sr_ruby_stacktrace_free(struct sr_ruby_stacktrace *stacktrace); 57 | 58 | struct sr_ruby_stacktrace * 59 | sr_ruby_stacktrace_dup(struct sr_ruby_stacktrace *stacktrace); 60 | 61 | struct sr_ruby_stacktrace * 62 | sr_ruby_stacktrace_parse(const char **input, 63 | struct sr_location *location); 64 | 65 | char * 66 | sr_ruby_stacktrace_get_reason(struct sr_ruby_stacktrace *stacktrace); 67 | 68 | char * 69 | sr_ruby_stacktrace_to_json(struct sr_ruby_stacktrace *stacktrace); 70 | 71 | struct sr_ruby_stacktrace * 72 | sr_ruby_stacktrace_from_json(json_object *root, char **error_message); 73 | 74 | #ifdef __cplusplus 75 | } 76 | #endif 77 | 78 | #endif 79 | -------------------------------------------------------------------------------- /lib/deb.c: -------------------------------------------------------------------------------- 1 | /* 2 | deb.c 3 | 4 | Copyright (C) 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #include "deb.h" 21 | 22 | void 23 | sr_deb_package_free(struct sr_deb_package *package, bool recursive) 24 | { 25 | } 26 | -------------------------------------------------------------------------------- /lib/disasm.h: -------------------------------------------------------------------------------- 1 | /* 2 | disasm.h 3 | 4 | Copyright (C) 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_DISASSEMBLER_H 21 | #define SATYR_DISASSEMBLER_H 22 | 23 | /** 24 | * @file 25 | * @brief BFD-based function disassembler. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | struct sr_disasm_state; 36 | 37 | struct sr_disasm_state * 38 | sr_disasm_init(const char *file_name, 39 | char **error_message); 40 | 41 | void 42 | sr_disasm_free(struct sr_disasm_state *state); 43 | 44 | /** 45 | * Disassemble the function starting at 'start_offset' and taking 46 | * 'size' bytes, returning a list of (char*) instructions. 47 | */ 48 | char ** 49 | sr_disasm_get_function_instructions(struct sr_disasm_state *state, 50 | uint64_t start_offset, 51 | uint64_t size, 52 | char **error_message); 53 | 54 | void 55 | sr_disasm_instructions_free(char **instructions); 56 | 57 | bool 58 | sr_disasm_instruction_is_one_of(char *instruction, 59 | const char **mnemonics); 60 | 61 | bool 62 | sr_disasm_instruction_present(char **instructions, 63 | const char **mnemonics); 64 | 65 | bool 66 | sr_disasm_instruction_parse_single_address_operand(char *instruction, 67 | uint64_t *dest); 68 | 69 | /* Given list of instructions, returns lists of addresses that are 70 | * (directly) called by them. The list is terminated by address 0. 71 | */ 72 | uint64_t * 73 | sr_disasm_get_callee_addresses(char **instructions); 74 | 75 | char * 76 | sr_disasm_instructions_to_text(char **instructions); 77 | 78 | char * 79 | sr_disasm_binary_to_text(struct sr_disasm_state *state, 80 | uint64_t start_offset, 81 | uint64_t size, 82 | char **error_message); 83 | 84 | #ifdef __cplusplus 85 | } 86 | #endif 87 | 88 | #endif // SATYR_DISASSEMBLER_H 89 | -------------------------------------------------------------------------------- /lib/generic_frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | generic_frame.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_GENERIC_FRAME_H 21 | #define SATYR_GENERIC_FRAME_H 22 | 23 | #include "frame.h" 24 | 25 | enum sr_bthash_flags; 26 | enum sr_duphash_flags; 27 | 28 | typedef void (*append_to_str_fn_t)(struct sr_frame *, GString *); 29 | typedef struct sr_frame* (*next_frame_fn_t)(struct sr_frame *); 30 | typedef void (*set_next_frame_fn_t)(struct sr_frame *, struct sr_frame *); 31 | typedef int (*frame_cmp_fn_t)(struct sr_frame *, struct sr_frame *); 32 | typedef void (*frame_append_bthash_text_fn_t)(struct sr_frame*, enum sr_bthash_flags, 33 | GString*); 34 | typedef void (*frame_append_duphash_text_fn_t)(struct sr_frame*, enum sr_duphash_flags, 35 | GString*); 36 | typedef void (*frame_free_fn_t)(struct sr_frame*); 37 | 38 | struct frame_methods 39 | { 40 | append_to_str_fn_t append_to_str; 41 | next_frame_fn_t next; 42 | set_next_frame_fn_t set_next; 43 | frame_cmp_fn_t cmp; 44 | frame_cmp_fn_t cmp_distance; 45 | frame_append_bthash_text_fn_t frame_append_bthash_text; 46 | frame_append_duphash_text_fn_t frame_append_duphash_text; 47 | frame_free_fn_t frame_free; 48 | }; 49 | 50 | extern struct frame_methods core_frame_methods, python_frame_methods, 51 | koops_frame_methods, gdb_frame_methods, java_frame_methods, 52 | ruby_frame_methods, js_frame_methods; 53 | 54 | void 55 | frame_append_bthash_text(struct sr_frame *frame, enum sr_bthash_flags flags, 56 | GString *strbuf); 57 | 58 | void 59 | frame_append_duphash_text(struct sr_frame *frame, enum sr_duphash_flags flags, 60 | GString *strbuf); 61 | 62 | #endif 63 | -------------------------------------------------------------------------------- /lib/json_utils.h: -------------------------------------------------------------------------------- 1 | /* Copyright (C) 2019 Red Hat, Inc. 2 | * 3 | * satyr is free software: you can redistribute it and/or modify 4 | * it under the terms of the GNU General Public License as published by 5 | * the Free Software Foundation, either version 2 of the License, or 6 | * (at your option) any later version. 7 | * 8 | * satyr is distributed in the hope that it will be useful, 9 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 | * GNU General Public License for more details. 12 | * 13 | * You should have received a copy of the GNU General Public License 14 | * along with this program. If not, see . 15 | */ 16 | 17 | #pragma once 18 | 19 | #include 20 | #include 21 | #include 22 | 23 | /* Checks whether json value is of the right type and sets the error_message if 24 | * not. The "name" argument is used in the error message. 25 | */ 26 | bool 27 | json_check_type(json_object *object, json_type type, 28 | const char *name, char **error_message); 29 | 30 | /* These functions check whether JSON object "object" has key "key_name". If it 31 | * does not, they don't do anything and return true. 32 | * 33 | * If it does, they check whether the JSON type of the element corresponds to 34 | * the C type of "dest" -- if it does not, they set the error message and 35 | * return false. 36 | * 37 | * Finally, if the type is correct, they write the value to "dest" and return true. 38 | */ 39 | bool 40 | json_read_uint64(json_object *object, const char *key_name, uint64_t *dest, 41 | char **error_message); 42 | bool 43 | json_read_uint32(json_object *object, const char *key_name, uint32_t *dest, 44 | char **error_message); 45 | bool 46 | json_read_uint16(json_object *object, const char *key_name, uint16_t *dest, 47 | char **error_message); 48 | bool 49 | json_read_string(json_object *object, const char *key_name, char **dest, 50 | char **error_message); 51 | bool 52 | json_read_bool(json_object *object, const char *key_name, bool *dest, 53 | char **error_message); 54 | 55 | /* same as above with implicit error_message argument */ 56 | #define JSON_READ_UINT64(object, key_name, dest) \ 57 | json_read_uint64(object, key_name, dest, error_message) 58 | #define JSON_READ_UINT32(object, key_name, dest) \ 59 | json_read_uint32(object, key_name, dest, error_message) 60 | #define JSON_READ_UINT16(object, key_name, dest) \ 61 | json_read_uint16(object, key_name, dest, error_message) 62 | #define JSON_READ_STRING(object, key_name, dest) \ 63 | json_read_string(object, key_name, dest, error_message) 64 | #define JSON_READ_BOOL(object, key_name, dest) \ 65 | json_read_bool(object, key_name, dest, error_message) 66 | 67 | GString * 68 | sr_json_append_escaped(GString *strbuf, const char *str); 69 | -------------------------------------------------------------------------------- /lib/unstrip.h: -------------------------------------------------------------------------------- 1 | /* 2 | unstrip.h 3 | 4 | Copyright (C) 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_UNSTRIP_H 21 | #define SATYR_UNSTRIP_H 22 | 23 | /** 24 | * @file 25 | * @brief Parser for the output of the unstrip utility. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | 34 | /** 35 | * @brief Core dump memory layout as reported by the unstrip utility. 36 | */ 37 | struct sr_unstrip_entry 38 | { 39 | uint64_t start; 40 | uint64_t length; 41 | char *build_id; 42 | char *file_name; 43 | char *mod_name; 44 | struct sr_unstrip_entry *next; 45 | }; 46 | 47 | struct sr_unstrip_entry * 48 | sr_unstrip_parse(const char *unstrip_output); 49 | 50 | struct sr_unstrip_entry * 51 | sr_unstrip_find_address(struct sr_unstrip_entry *entries, 52 | uint64_t address); 53 | 54 | void 55 | sr_unstrip_free(struct sr_unstrip_entry *entries); 56 | 57 | #ifdef __cplusplus 58 | } 59 | #endif 60 | 61 | #endif 62 | -------------------------------------------------------------------------------- /m4/.gitignore: -------------------------------------------------------------------------------- 1 | /libtool.m4 2 | /ltoptions.m4 3 | /ltsugar.m4 4 | /ltversion.m4 5 | /lt~obsolete.m4 6 | -------------------------------------------------------------------------------- /python/Makefile.am: -------------------------------------------------------------------------------- 1 | SUBDIRS = . doc 2 | 3 | PYEXTFILES = \ 4 | py_cluster.h \ 5 | py_cluster.c \ 6 | py_base_frame.h \ 7 | py_base_frame.c \ 8 | py_base_thread.h \ 9 | py_base_thread.c \ 10 | py_base_stacktrace.h \ 11 | py_base_stacktrace.c \ 12 | py_core_frame.h \ 13 | py_core_frame.c \ 14 | py_core_thread.h \ 15 | py_core_thread.c \ 16 | py_core_stacktrace.h \ 17 | py_core_stacktrace.c \ 18 | py_gdb_frame.h \ 19 | py_gdb_frame.c \ 20 | py_gdb_sharedlib.h \ 21 | py_gdb_sharedlib.c \ 22 | py_gdb_stacktrace.h \ 23 | py_gdb_stacktrace.c \ 24 | py_gdb_thread.h \ 25 | py_gdb_thread.c \ 26 | py_koops_frame.h \ 27 | py_koops_frame.c \ 28 | py_koops_stacktrace.h \ 29 | py_koops_stacktrace.c \ 30 | py_python_frame.h \ 31 | py_python_frame.c \ 32 | py_python_stacktrace.h \ 33 | py_python_stacktrace.c \ 34 | py_java_frame.h \ 35 | py_java_frame.c \ 36 | py_java_thread.h \ 37 | py_java_thread.c \ 38 | py_java_stacktrace.h \ 39 | py_java_stacktrace.c \ 40 | py_ruby_frame.h \ 41 | py_ruby_frame.c \ 42 | py_ruby_stacktrace.h \ 43 | py_ruby_stacktrace.c \ 44 | py_js_frame.h \ 45 | py_js_frame.c \ 46 | py_js_stacktrace.h \ 47 | py_js_stacktrace.c \ 48 | py_rpm_package.h \ 49 | py_rpm_package.c \ 50 | py_metrics.h \ 51 | py_metrics.c \ 52 | py_operating_system.h \ 53 | py_operating_system.c \ 54 | py_report.h \ 55 | py_report.c \ 56 | py_common.h \ 57 | py_common.c \ 58 | py_module.c 59 | 60 | PYEXTCPPFLAGS = \ 61 | -I../include \ 62 | -I../lib \ 63 | -D_GNU_SOURCE \ 64 | -Wall -Wwrite-strings \ 65 | -fno-strict-aliasing 66 | 67 | PYEXTLDFLAGS = \ 68 | -module \ 69 | -avoid-version 70 | 71 | if WITH_PYTHON3 72 | py3satyrdir = $(py3execdir)/satyr 73 | 74 | # XXX: Using _PYTHON instead of _DATA runs py-compile that produces python2 75 | # .pyc and .pyo files, which we obviously don't want. Treat it as data for now, 76 | # RPM macros will produce the bytecode anyway. 77 | py3satyr_DATA = \ 78 | __init__.py 79 | 80 | py3satyr_LTLIBRARIES = _satyr3.la 81 | 82 | _satyr3_la_SOURCES = $(PYEXTFILES) 83 | _satyr3_la_CPPFLAGS = \ 84 | $(GLIB_CFLAGS) \ 85 | $(JSON_CFLAGS) \ 86 | $(PYEXTCPPFLAGS) \ 87 | $(PYTHON3_CFLAGS) \ 88 | -Wno-error=declaration-after-statement 89 | _satyr3_la_LDFLAGS = \ 90 | $(PYEXTLDFLAGS) \ 91 | -export-symbols-regex PyInit__satyr3 92 | 93 | if ENABLE_STATIC_PYTHON_MODULE 94 | _satyr3_la_LIBADD = ../lib/libsatyr_conv.la 95 | else 96 | _satyr3_la_LIBADD = ../lib/libsatyr.la 97 | endif 98 | endif 99 | 100 | EXTRA_DIST = \ 101 | __init__.py 102 | -------------------------------------------------------------------------------- /python/__init__.py: -------------------------------------------------------------------------------- 1 | """satyr - python bindings for satyr library""" 2 | 3 | import sys 4 | 5 | from ._satyr3 import * 6 | -------------------------------------------------------------------------------- /python/doc/clustering.rst: -------------------------------------------------------------------------------- 1 | .. _clustering: 2 | .. currentmodule:: satyr 3 | 4 | Clustering 5 | ========== 6 | 7 | Distance matrix 8 | --------------- 9 | 10 | .. autoclass:: Distances 11 | :members: 12 | 13 | .. autoclass:: DistancesPart 14 | :members: 15 | 16 | Dendrogram 17 | ---------- 18 | 19 | .. autoclass:: Dendrogram 20 | :members: 21 | -------------------------------------------------------------------------------- /python/doc/index.rst: -------------------------------------------------------------------------------- 1 | .. satyr-python documentation master file, created by 2 | sphinx-quickstart on Wed Aug 28 14:56:55 2013. 3 | You can adapt this file completely to your liking, but it should at least 4 | contain the root `toctree` directive. 5 | 6 | Welcome to satyr-python documentation! 7 | ====================================== 8 | 9 | Contents: 10 | 11 | .. toctree:: 12 | :maxdepth: 2 13 | 14 | report 15 | stacktrace 16 | clustering 17 | 18 | 19 | Indices and tables 20 | ================== 21 | 22 | * :ref:`genindex` 23 | * :ref:`modindex` 24 | * :ref:`search` 25 | -------------------------------------------------------------------------------- /python/doc/report.rst: -------------------------------------------------------------------------------- 1 | .. _report: 2 | .. currentmodule:: satyr 3 | 4 | Report 5 | ====== 6 | 7 | A :class:`Report` object represents a single problem report in the `uReport format `_. 8 | 9 | .. autoclass:: Report 10 | :members: 11 | 12 | Operating system 13 | ---------------- 14 | 15 | Data about operating system are stored in the :class:`OperatingSystem` object. 16 | 17 | .. autoclass:: OperatingSystem 18 | :members: 19 | 20 | Package 21 | ------- 22 | 23 | The :class:`Report` can contain a list of software packages. Currently, only `RPM `_ packages are supported. 24 | 25 | .. autoclass:: RpmPackage 26 | :members: 27 | -------------------------------------------------------------------------------- /python/doc/satyr.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | # 4 | # this file exists for the sole reason of _satyr module appearing as satyr 5 | # without the underscore in the generated documentation 6 | # 7 | 8 | import os, sys 9 | 10 | sys.path.insert(0, os.path.abspath('../.libs')) 11 | 12 | from _satyr3 import * 13 | -------------------------------------------------------------------------------- /python/py_base_frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_base_frame.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_BASE_FRAME_H 21 | #define SATYR_PY_BASE_FRAME_H 22 | 23 | /** 24 | * @file 25 | * @brief Base class for call frames. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_base_frame_type; 36 | 37 | struct sr_py_base_frame 38 | { 39 | PyObject_HEAD 40 | struct sr_frame *frame; 41 | }; 42 | 43 | PyObject *sr_py_base_frame_equals(PyObject *self, PyObject *args); 44 | 45 | PyObject *sr_py_base_frame_short_string(PyObject *self, PyObject *args); 46 | 47 | #ifdef __cplusplus 48 | } 49 | #endif 50 | 51 | #endif 52 | -------------------------------------------------------------------------------- /python/py_base_stacktrace.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_base_stacktrace.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_BASE_STACKTRACE_H 21 | #define SATYR_PY_BASE_STACKTRACE_H 22 | 23 | /** 24 | * @file 25 | * @brief Base classes for stacktrace structures. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | #include "py_base_thread.h" 36 | 37 | extern PyTypeObject sr_py_single_stacktrace_type; 38 | extern PyTypeObject sr_py_multi_stacktrace_type; 39 | 40 | /* Python object for multi threaded stacktraces. */ 41 | struct sr_py_multi_stacktrace 42 | { 43 | PyObject_HEAD 44 | struct sr_stacktrace *stacktrace; 45 | PyObject *threads; 46 | PyTypeObject *thread_type; 47 | PyTypeObject *frame_type; 48 | }; 49 | 50 | /* helpers */ 51 | int threads_prepare_linked_list(struct sr_py_multi_stacktrace *stacktrace); 52 | PyObject *threads_to_python_list(struct sr_stacktrace *stacktrace, 53 | PyTypeObject *thread_type, PyTypeObject *frame_type); 54 | 55 | /* methods */ 56 | PyObject *sr_py_single_stacktrace_to_short_text(PyObject *self, PyObject *args); 57 | PyObject *sr_py_multi_stacktrace_to_short_text(PyObject *self, PyObject *args); 58 | PyObject *sr_py_single_stacktrace_get_bthash(PyObject *self, PyObject *args); 59 | PyObject *sr_py_multi_stacktrace_get_bthash(PyObject *self, PyObject *args); 60 | PyObject *sr_py_single_stacktrace_from_json(PyObject *cls, PyObject *args); 61 | PyObject *sr_py_multi_stacktrace_from_json(PyObject *cls, PyObject *args); 62 | 63 | PyObject *sr_py_single_stacktrace_get_crash(PyObject *self, void *unused); 64 | int sr_py_single_stacktrace_set_crash(PyObject *self, PyObject *value, void *unused); 65 | PyObject *sr_py_multi_stacktrace_get_crash(PyObject *self, void *unused); 66 | int sr_py_multi_stacktrace_set_crash(PyObject *self, PyObject *value, void *unused); 67 | 68 | #ifdef __cplusplus 69 | } 70 | #endif 71 | 72 | #endif 73 | -------------------------------------------------------------------------------- /python/py_base_thread.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_base_thread.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_BASE_THREAD_H 21 | #define SATYR_PY_BASE_THREAD_H 22 | 23 | /** 24 | * @file 25 | * @brief Base class for threads. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_base_thread_type; 36 | 37 | struct sr_py_base_thread 38 | { 39 | PyObject_HEAD 40 | struct sr_thread *thread; 41 | PyObject *frames; 42 | PyTypeObject *frame_type; 43 | }; 44 | 45 | /* helpers */ 46 | int frames_prepare_linked_list(struct sr_py_base_thread *thread); 47 | PyObject *frames_to_python_list(struct sr_thread *thread, PyTypeObject *frame_type); 48 | 49 | PyObject *sr_py_base_thread_equals(PyObject *self, PyObject *args); 50 | 51 | /* methods */ 52 | PyObject *sr_py_base_thread_distance(PyObject *self, PyObject *args, PyObject *kwds); 53 | PyObject *sr_py_base_thread_get_duphash(PyObject *self, PyObject *args, PyObject *kwds); 54 | 55 | #ifdef __cplusplus 56 | } 57 | #endif 58 | 59 | #endif 60 | -------------------------------------------------------------------------------- /python/py_cluster.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_cluster.h 3 | 4 | Copyright (C) 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_CLUSTER_H 21 | #define SATYR_PY_CLUSTER_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for clustering. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_dendrogram_type; 36 | 37 | struct sr_py_dendrogram 38 | { 39 | PyObject_HEAD 40 | struct sr_dendrogram *dendrogram; 41 | }; 42 | 43 | /* constructor */ 44 | PyObject *sr_py_dendrogram_new(PyTypeObject *object, 45 | PyObject *args, 46 | PyObject *kwds); 47 | 48 | /* destructor */ 49 | void sr_py_dendrogram_free(PyObject *object); 50 | 51 | /* str */ 52 | PyObject *sr_py_dendrogram_str(PyObject *self); 53 | 54 | /* getters & setters */ 55 | PyObject *sr_py_dendrogram_get_size(PyObject *self, PyObject *args); 56 | PyObject *sr_py_dendrogram_get_object(PyObject *self, PyObject *args); 57 | PyObject *sr_py_dendrogram_get_merge_level(PyObject *self, PyObject *args); 58 | 59 | /* methods */ 60 | PyObject *sr_py_dendrogram_cut(PyObject *self, PyObject *args); 61 | 62 | #ifdef __cplusplus 63 | } 64 | #endif 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /python/py_core_frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_core_frame.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_CORE_FRAME_H 21 | #define SATYR_PY_CORE_FRAME_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for core frame. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_core_frame_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_frame. 39 | */ 40 | struct sr_py_core_frame 41 | { 42 | PyObject_HEAD 43 | struct sr_core_frame *frame; 44 | }; 45 | 46 | /** 47 | * Constructor. 48 | */ 49 | PyObject *sr_py_core_frame_new(PyTypeObject *object, 50 | PyObject *args, PyObject *kwds); 51 | 52 | /** 53 | * Destructor. 54 | */ 55 | void sr_py_core_frame_free(PyObject *object); 56 | 57 | /** 58 | * str 59 | */ 60 | PyObject *sr_py_core_frame_str(PyObject *self); 61 | 62 | /* methods */ 63 | PyObject *sr_py_core_frame_dup(PyObject *self, PyObject *args); 64 | 65 | #ifdef __cplusplus 66 | } 67 | #endif 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /python/py_core_stacktrace.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_core_stacktrace.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_CORE_STACKTRACE_H 21 | #define SATYR_PY_CORE_STACKTRACE_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for Core stack trace. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | struct sr_py_core_frame; 36 | struct sr_py_core_thread; 37 | 38 | extern PyTypeObject sr_py_core_stacktrace_type; 39 | 40 | /* The beginning of this structure has to have the same layout as 41 | * sr_py_multi_thread_stacktrace. 42 | */ 43 | struct sr_py_core_stacktrace 44 | { 45 | PyObject_HEAD 46 | struct sr_core_stacktrace *stacktrace; 47 | PyObject *threads; 48 | PyTypeObject *thread_type; 49 | PyTypeObject *frame_type; 50 | }; 51 | 52 | /* helpers */ 53 | PyObject *core_stacktrace_to_python_obj(struct sr_core_stacktrace *stacktrace); 54 | 55 | /* constructor */ 56 | PyObject *sr_py_core_stacktrace_new(PyTypeObject *object, 57 | PyObject *args, 58 | PyObject *kwds); 59 | 60 | /* destructor */ 61 | void sr_py_core_stacktrace_free(PyObject *object); 62 | 63 | /* str */ 64 | PyObject *sr_py_core_stacktrace_str(PyObject *self); 65 | 66 | /* methods */ 67 | PyObject *sr_py_core_stacktrace_dup(PyObject *self, PyObject *args); 68 | PyObject *sr_py_core_stacktrace_normalize(PyObject *self, PyObject *args); 69 | 70 | #ifdef __cplusplus 71 | } 72 | #endif 73 | 74 | #endif 75 | -------------------------------------------------------------------------------- /python/py_core_thread.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_core_thread.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_CORE_THREAD_H 21 | #define SATYR_PY_CORE_THREAD_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for Core thread. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_core_thread_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_thread. 39 | */ 40 | struct sr_py_core_thread 41 | { 42 | PyObject_HEAD 43 | struct sr_core_thread *thread; 44 | PyObject *frames; 45 | PyTypeObject *frame_type; 46 | }; 47 | 48 | /* constructor */ 49 | PyObject *sr_py_core_thread_new(PyTypeObject *object, 50 | PyObject *args, 51 | PyObject *kwds); 52 | 53 | /* destructor */ 54 | void sr_py_core_thread_free(PyObject *object); 55 | 56 | /* str */ 57 | PyObject *sr_py_core_thread_str(PyObject *self); 58 | 59 | /* methods */ 60 | PyObject *sr_py_core_thread_dup(PyObject *self, PyObject *args); 61 | 62 | #ifdef __cplusplus 63 | } 64 | #endif 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /python/py_gdb_frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_gdb_frame.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_GDB_FRAME_H 21 | #define SATYR_PY_GDB_FRAME_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for GDB frame. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | #include "gdb/frame.h" 35 | 36 | extern PyTypeObject sr_py_gdb_frame_type; 37 | 38 | typedef sr_gdb_frame_address_t sr_py_gdb_frame_address_t; 39 | 40 | /* The beginning of this structure has to have the same layout as 41 | * sr_py_base_frame. 42 | */ 43 | struct sr_py_gdb_frame 44 | { 45 | PyObject_HEAD 46 | struct sr_gdb_frame *frame; 47 | }; 48 | 49 | /** 50 | * Constructor. 51 | */ 52 | PyObject *sr_py_gdb_frame_new(PyTypeObject *object, 53 | PyObject *args, PyObject *kwds); 54 | 55 | /** 56 | * Destructor. 57 | */ 58 | void sr_py_gdb_frame_free(PyObject *object); 59 | 60 | /** 61 | * str 62 | */ 63 | PyObject *sr_py_gdb_frame_str(PyObject *self); 64 | 65 | /* methods */ 66 | PyObject *sr_py_gdb_frame_dup(PyObject *self, PyObject *args); 67 | PyObject *sr_py_gdb_frame_calls_func(PyObject *self, PyObject *args); 68 | PyObject *sr_py_gdb_frame_calls_func_in_file(PyObject *self, PyObject *args); 69 | 70 | #ifdef __cplusplus 71 | } 72 | #endif 73 | 74 | #endif 75 | -------------------------------------------------------------------------------- /python/py_gdb_sharedlib.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_gdb_sharedlib.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_GDB_SHAREDLIB_H 21 | #define SATYR_PY_GDB_SHAREDLIB_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for GDB sharedlib. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_gdb_sharedlib_type; 36 | 37 | struct sr_py_gdb_sharedlib 38 | { 39 | PyObject_HEAD 40 | struct sr_gdb_sharedlib *sharedlib; 41 | }; 42 | 43 | /* constructor */ 44 | PyObject *sr_py_gdb_sharedlib_new(PyTypeObject *object, 45 | PyObject *args, 46 | PyObject *kwds); 47 | 48 | /* destructor */ 49 | void sr_py_gdb_sharedlib_free(PyObject *object); 50 | 51 | /* str */ 52 | PyObject *sr_py_gdb_sharedlib_str(PyObject *self); 53 | 54 | /* getters & setters */ 55 | PyObject *sr_py_gdb_sharedlib_get_symbols(PyObject *self, void *data); 56 | int sr_py_gdb_sharedlib_set_symbols(PyObject *self, PyObject *rhs, void *data); 57 | 58 | #ifdef __cplusplus 59 | } 60 | #endif 61 | 62 | #endif 63 | -------------------------------------------------------------------------------- /python/py_gdb_stacktrace.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_gdb_stacktrace.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_GDB_STACKTRACE_H 21 | #define SATYR_PY_GDB_STACKTRACE_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for GDB stack trace. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | struct sr_py_gdb_frame; 36 | struct sr_py_gdb_thread; 37 | 38 | extern PyTypeObject sr_py_gdb_stacktrace_type; 39 | 40 | /* The beginning of this structure has to have the same layout as 41 | * sr_py_multi_thread_stacktrace. 42 | */ 43 | struct sr_py_gdb_stacktrace 44 | { 45 | PyObject_HEAD 46 | struct sr_gdb_stacktrace *stacktrace; 47 | PyObject *threads; 48 | PyTypeObject *thread_type; 49 | PyTypeObject *frame_type; 50 | struct sr_py_gdb_frame *crashframe; 51 | PyObject *libs; 52 | }; 53 | 54 | /* constructor */ 55 | PyObject *sr_py_gdb_stacktrace_new(PyTypeObject *object, 56 | PyObject *args, 57 | PyObject *kwds); 58 | 59 | /* destructor */ 60 | void sr_py_gdb_stacktrace_free(PyObject *object); 61 | 62 | /* str */ 63 | PyObject *sr_py_gdb_stacktrace_str(PyObject *self); 64 | 65 | /* methods */ 66 | PyObject *sr_py_gdb_stacktrace_dup(PyObject *self, PyObject *args); 67 | PyObject *sr_py_gdb_stacktrace_find_crash_frame(PyObject *self, PyObject *args); 68 | PyObject *sr_py_gdb_stacktrace_limit_frame_depth(PyObject *self, PyObject *args); 69 | PyObject *sr_py_gdb_stacktrace_quality_simple(PyObject *self, PyObject *args); 70 | PyObject *sr_py_gdb_stacktrace_quality_complex(PyObject *self, PyObject *args); 71 | PyObject *sr_py_gdb_stacktrace_find_address(PyObject *self, PyObject *args); 72 | PyObject *sr_py_gdb_stacktrace_set_libnames(PyObject *self, PyObject *args); 73 | PyObject *sr_py_gdb_stacktrace_normalize(PyObject *self, PyObject *args); 74 | PyObject * sr_py_gdb_stacktrace_to_short_text(PyObject *self, PyObject *args); 75 | 76 | #ifdef __cplusplus 77 | } 78 | #endif 79 | 80 | #endif 81 | -------------------------------------------------------------------------------- /python/py_gdb_thread.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_gdb_thread.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_GDB_THREAD_H 21 | #define SATYR_PY_GDB_THREAD_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for GDB thread. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_gdb_thread_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_thread. 39 | */ 40 | struct sr_py_gdb_thread 41 | { 42 | PyObject_HEAD 43 | struct sr_gdb_thread *thread; 44 | PyObject *frames; 45 | PyTypeObject *frame_type; 46 | }; 47 | 48 | /* constructor */ 49 | PyObject *sr_py_gdb_thread_new(PyTypeObject *object, 50 | PyObject *args, 51 | PyObject *kwds); 52 | 53 | /* destructor */ 54 | void sr_py_gdb_thread_free(PyObject *object); 55 | 56 | /* str */ 57 | PyObject *sr_py_gdb_thread_str(PyObject *self); 58 | 59 | /* methods */ 60 | PyObject *sr_py_gdb_thread_dup(PyObject *self, PyObject *args); 61 | PyObject *sr_py_gdb_thread_quality_counts(PyObject *self, PyObject *args); 62 | PyObject *sr_py_gdb_thread_quality(PyObject *self, PyObject *args); 63 | PyObject *sr_py_gdb_thread_format_funs(PyObject *self, PyObject *args); 64 | 65 | #ifdef __cplusplus 66 | } 67 | #endif 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /python/py_java_frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_java_frame.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_JAVA_FRAME_H 21 | #define SATYR_PY_JAVA_FRAME_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for Java frame. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_java_frame_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_frame. 39 | */ 40 | struct sr_py_java_frame 41 | { 42 | PyObject_HEAD 43 | struct sr_java_frame *frame; 44 | }; 45 | 46 | /** 47 | * Constructor. 48 | */ 49 | PyObject *sr_py_java_frame_new(PyTypeObject *object, 50 | PyObject *args, PyObject *kwds); 51 | 52 | /** 53 | * Destructor. 54 | */ 55 | void sr_py_java_frame_free(PyObject *object); 56 | 57 | /** 58 | * str 59 | */ 60 | PyObject *sr_py_java_frame_str(PyObject *self); 61 | 62 | /* methods */ 63 | PyObject *sr_py_java_frame_dup(PyObject *self, PyObject *args); 64 | 65 | #ifdef __cplusplus 66 | } 67 | #endif 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /python/py_java_stacktrace.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_java_stacktrace.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_JAVA_STACKTRACE_H 21 | #define SATYR_PY_JAVA_STACKTRACE_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for Java stack trace. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | struct sr_py_java_frame; 36 | struct sr_py_java_thread; 37 | 38 | extern PyTypeObject sr_py_java_stacktrace_type; 39 | 40 | /* The beginning of this structure has to have the same layout as 41 | * sr_py_multi_thread_stacktrace. 42 | */ 43 | struct sr_py_java_stacktrace 44 | { 45 | PyObject_HEAD 46 | struct sr_java_stacktrace *stacktrace; 47 | PyObject *threads; 48 | PyTypeObject *thread_type; 49 | PyTypeObject *frame_type; 50 | }; 51 | 52 | /* helpers */ 53 | PyObject *java_stacktrace_to_python_obj(struct sr_java_stacktrace *stacktrace); 54 | 55 | /* constructor */ 56 | PyObject *sr_py_java_stacktrace_new(PyTypeObject *object, 57 | PyObject *args, 58 | PyObject *kwds); 59 | 60 | /* destructor */ 61 | void sr_py_java_stacktrace_free(PyObject *object); 62 | 63 | /* str */ 64 | PyObject *sr_py_java_stacktrace_str(PyObject *self); 65 | 66 | /* methods */ 67 | PyObject *sr_py_java_stacktrace_dup(PyObject *self, PyObject *args); 68 | PyObject *sr_py_java_stacktrace_normalize(PyObject *self, PyObject *args); 69 | 70 | #ifdef __cplusplus 71 | } 72 | #endif 73 | 74 | #endif 75 | -------------------------------------------------------------------------------- /python/py_java_thread.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_java_thread.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_JAVA_THREAD_H 21 | #define SATYR_PY_JAVA_THREAD_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for Java thread. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_java_thread_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_thread. 39 | */ 40 | struct sr_py_java_thread 41 | { 42 | PyObject_HEAD 43 | struct sr_java_thread *thread; 44 | PyObject *frames; 45 | PyTypeObject *frame_type; 46 | }; 47 | 48 | /* constructor */ 49 | PyObject *sr_py_java_thread_new(PyTypeObject *object, 50 | PyObject *args, 51 | PyObject *kwds); 52 | 53 | /* destructor */ 54 | void sr_py_java_thread_free(PyObject *object); 55 | 56 | /* str */ 57 | PyObject *sr_py_java_thread_str(PyObject *self); 58 | 59 | /* methods */ 60 | PyObject *sr_py_java_thread_dup(PyObject *self, PyObject *args); 61 | PyObject *sr_py_java_thread_quality_counts(PyObject *self, PyObject *args); 62 | PyObject *sr_py_java_thread_quality(PyObject *self, PyObject *args); 63 | PyObject *sr_py_java_thread_format_funs(PyObject *self, PyObject *args); 64 | 65 | #ifdef __cplusplus 66 | } 67 | #endif 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /python/py_js_frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_js_frame.h 3 | 4 | Copyright (C) 2016 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_JS_FRAME_H 21 | #define SATYR_PY_JS_FRAME_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for JS frame. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_js_frame_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_frame. 39 | */ 40 | struct sr_py_js_frame 41 | { 42 | PyObject_HEAD 43 | struct sr_js_frame *frame; 44 | }; 45 | 46 | /** 47 | * Constructor. 48 | */ 49 | PyObject *sr_py_js_frame_new(PyTypeObject *object, 50 | PyObject *args, PyObject *kwds); 51 | 52 | /** 53 | * Destructor. 54 | */ 55 | void sr_py_js_frame_free(PyObject *object); 56 | 57 | /** 58 | * str 59 | */ 60 | PyObject *sr_py_js_frame_str(PyObject *self); 61 | 62 | /* methods */ 63 | PyObject *sr_py_js_frame_dup(PyObject *self, PyObject *args); 64 | 65 | #ifdef __cplusplus 66 | } 67 | #endif 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /python/py_js_stacktrace.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_js_stacktrace.h 3 | 4 | Copyright (C) 2016 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_JS_STACKTRACE_H 21 | #define SATYR_PY_JS_STACKTRACE_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for JavaScript stack trace. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_js_stacktrace_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_thread. 39 | */ 40 | struct sr_py_js_stacktrace 41 | { 42 | PyObject_HEAD 43 | struct sr_js_stacktrace *stacktrace; 44 | PyObject *frames; 45 | PyTypeObject *frame_type; 46 | }; 47 | 48 | /* helpers */ 49 | PyObject *js_stacktrace_to_python_obj(struct sr_js_stacktrace *stacktrace); 50 | 51 | /* constructor */ 52 | PyObject *sr_py_js_stacktrace_new(PyTypeObject *object, 53 | PyObject *args, 54 | PyObject *kwds); 55 | 56 | /* destructor */ 57 | void sr_py_js_stacktrace_free(PyObject *object); 58 | 59 | /* str */ 60 | PyObject *sr_py_js_stacktrace_str(PyObject *self); 61 | 62 | /* methods */ 63 | PyObject *sr_py_js_stacktrace_dup(PyObject *self, PyObject *args); 64 | PyObject *sr_py_js_stacktrace_normalize(PyObject *self, PyObject *args); 65 | 66 | 67 | #ifdef __cplusplus 68 | } 69 | #endif 70 | 71 | #endif 72 | -------------------------------------------------------------------------------- /python/py_koops_frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_koops_frame.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_KOOPS_FRAME_H 21 | #define SATYR_PY_KOOPS_FRAME_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for koops frame. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_koops_frame_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_frame. 39 | */ 40 | struct sr_py_koops_frame 41 | { 42 | PyObject_HEAD 43 | struct sr_koops_frame *frame; 44 | }; 45 | 46 | /** 47 | * Constructor. 48 | */ 49 | PyObject *sr_py_koops_frame_new(PyTypeObject *object, 50 | PyObject *args, PyObject *kwds); 51 | 52 | /** 53 | * Destructor. 54 | */ 55 | void sr_py_koops_frame_free(PyObject *object); 56 | 57 | /** 58 | * str 59 | */ 60 | PyObject *sr_py_koops_frame_str(PyObject *self); 61 | 62 | /* methods */ 63 | PyObject *sr_py_koops_frame_dup(PyObject *self, PyObject *args); 64 | 65 | #ifdef __cplusplus 66 | } 67 | #endif 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /python/py_koops_stacktrace.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_koops_stacktrace.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_KOOPS_STACKTRACE_H 21 | #define SATYR_PY_KOOPS_STACKTRACE_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for kerneloops stack trace. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_koops_stacktrace_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_thread. 39 | */ 40 | struct sr_py_koops_stacktrace 41 | { 42 | PyObject_HEAD 43 | struct sr_koops_stacktrace *stacktrace; 44 | PyObject *frames; 45 | PyTypeObject *frame_type; 46 | PyObject *taint_flags; 47 | }; 48 | 49 | /* helpers */ 50 | PyObject *koops_stacktrace_to_python_obj(struct sr_koops_stacktrace *stacktrace); 51 | 52 | /* constructor */ 53 | PyObject *sr_py_koops_stacktrace_new(PyTypeObject *object, 54 | PyObject *args, 55 | PyObject *kwds); 56 | 57 | /* destructor */ 58 | void sr_py_koops_stacktrace_free(PyObject *object); 59 | 60 | /* str */ 61 | PyObject *sr_py_koops_stacktrace_str(PyObject *self); 62 | 63 | /* getters & setters */ 64 | PyObject *sr_py_koops_stacktrace_get_modules(PyObject *self, void *data); 65 | int sr_py_koops_stacktrace_set_modules(PyObject *self, PyObject *rhs, void *data); 66 | PyObject *sr_py_koops_stacktrace_get_taint_flags(PyObject *self, void *data); 67 | int sr_py_koops_stacktrace_set_taint_flags(PyObject *self, PyObject *rhs, void *data); 68 | 69 | /* methods */ 70 | PyObject *sr_py_koops_stacktrace_dup(PyObject *self, PyObject *args); 71 | PyObject *sr_py_koops_stacktrace_normalize(PyObject *self, PyObject *args); 72 | 73 | 74 | #ifdef __cplusplus 75 | } 76 | #endif 77 | 78 | #endif 79 | -------------------------------------------------------------------------------- /python/py_metrics.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_metrics.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_METRICS_H 21 | #define SATYR_PY_METRICS_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for metrics. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_distances_type; 36 | extern PyTypeObject sr_py_distances_part_type; 37 | 38 | struct sr_py_distances 39 | { 40 | PyObject_HEAD 41 | struct sr_distances *distances; 42 | }; 43 | 44 | /* constructor */ 45 | PyObject *sr_py_distances_new(PyTypeObject *object, 46 | PyObject *args, 47 | PyObject *kwds); 48 | 49 | /* destructor */ 50 | void sr_py_distances_free(PyObject *object); 51 | 52 | /* str */ 53 | PyObject *sr_py_distances_str(PyObject *self); 54 | 55 | /* getters & setters */ 56 | PyObject *sr_py_distances_get_size(PyObject *self, PyObject *args); 57 | PyObject *sr_py_distances_get_distance(PyObject *self, PyObject *args); 58 | PyObject *sr_py_distances_set_distance(PyObject *self, PyObject *args); 59 | 60 | /* methods */ 61 | PyObject *sr_py_distances_dup(PyObject *self, PyObject *args); 62 | PyObject *sr_py_distances_merge_parts(PyObject *self, PyObject *args); 63 | 64 | struct sr_py_distances_part 65 | { 66 | PyObject_HEAD 67 | struct sr_distances_part *distances_part; 68 | }; 69 | 70 | /* constructor */ 71 | PyObject *sr_py_distances_part_new(PyTypeObject *object, 72 | PyObject *args, 73 | PyObject *kwds); 74 | 75 | /* destructor */ 76 | void sr_py_distances_part_free(PyObject *object); 77 | 78 | /* str */ 79 | PyObject *sr_py_distances_part_str(PyObject *self); 80 | 81 | /* methods */ 82 | PyObject *sr_py_distances_part_reduce(PyObject *self, PyObject *args); 83 | PyObject *sr_py_distances_part_create(PyObject *self, PyObject *args, PyObject *kwds); 84 | PyObject *sr_py_distances_part_compute(PyObject *self, PyObject *args); 85 | 86 | #ifdef __cplusplus 87 | } 88 | #endif 89 | 90 | #endif 91 | -------------------------------------------------------------------------------- /python/py_operating_system.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_operating_system.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_OPERATING_SYSTEM_H 21 | #define SATYR_PY_OPERATING_SYSTEM_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for operating system. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_operating_system_type; 36 | 37 | struct sr_py_operating_system 38 | { 39 | PyObject_HEAD 40 | struct sr_operating_system *operating_system; 41 | }; 42 | 43 | /** 44 | * Constructor. 45 | */ 46 | PyObject *sr_py_operating_system_new(PyTypeObject *object, 47 | PyObject *args, PyObject *kwds); 48 | 49 | /** 50 | * Destructor. 51 | */ 52 | void sr_py_operating_system_free(PyObject *object); 53 | 54 | /** 55 | * str 56 | */ 57 | PyObject *sr_py_operating_system_str(PyObject *self); 58 | 59 | #ifdef __cplusplus 60 | } 61 | #endif 62 | 63 | #endif 64 | -------------------------------------------------------------------------------- /python/py_python_frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_python_frame.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_PYTHON_FRAME_H 21 | #define SATYR_PY_PYTHON_FRAME_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for PYTHON frame. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_python_frame_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_frame. 39 | */ 40 | struct sr_py_python_frame 41 | { 42 | PyObject_HEAD 43 | struct sr_python_frame *frame; 44 | }; 45 | 46 | /** 47 | * Constructor. 48 | */ 49 | PyObject *sr_py_python_frame_new(PyTypeObject *object, 50 | PyObject *args, PyObject *kwds); 51 | 52 | /** 53 | * Destructor. 54 | */ 55 | void sr_py_python_frame_free(PyObject *object); 56 | 57 | /** 58 | * str 59 | */ 60 | PyObject *sr_py_python_frame_str(PyObject *self); 61 | 62 | /* methods */ 63 | PyObject *sr_py_python_frame_dup(PyObject *self, PyObject *args); 64 | 65 | #ifdef __cplusplus 66 | } 67 | #endif 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /python/py_python_stacktrace.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_python_stacktrace.h 3 | 4 | Copyright (C) 2010, 2011, 2012 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_PYTHON_STACKTRACE_H 21 | #define SATYR_PY_PYTHON_STACKTRACE_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for kerneloops stack trace. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_python_stacktrace_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_thread. 39 | */ 40 | struct sr_py_python_stacktrace 41 | { 42 | PyObject_HEAD 43 | struct sr_python_stacktrace *stacktrace; 44 | PyObject *frames; 45 | PyTypeObject *frame_type; 46 | }; 47 | 48 | /* helpers */ 49 | PyObject *python_stacktrace_to_python_obj(struct sr_python_stacktrace *stacktrace); 50 | 51 | /* constructor */ 52 | PyObject *sr_py_python_stacktrace_new(PyTypeObject *object, 53 | PyObject *args, 54 | PyObject *kwds); 55 | 56 | /* destructor */ 57 | void sr_py_python_stacktrace_free(PyObject *object); 58 | 59 | /* str */ 60 | PyObject *sr_py_python_stacktrace_str(PyObject *self); 61 | 62 | /* methods */ 63 | PyObject *sr_py_python_stacktrace_dup(PyObject *self, PyObject *args); 64 | PyObject *sr_py_python_stacktrace_normalize(PyObject *self, PyObject *args); 65 | 66 | 67 | #ifdef __cplusplus 68 | } 69 | #endif 70 | 71 | #endif 72 | -------------------------------------------------------------------------------- /python/py_report.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_report.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_REPORT_H 21 | #define SATYR_PY_REPORT_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for struct sr_report. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_report_type; 36 | 37 | struct sr_py_report 38 | { 39 | PyObject_HEAD 40 | struct sr_report *report; 41 | PyObject *operating_system; 42 | PyObject *packages; 43 | PyObject *stacktrace; 44 | }; 45 | 46 | /** 47 | * Constructor. 48 | */ 49 | PyObject *sr_py_report_new(PyTypeObject *object, 50 | PyObject *args, PyObject *kwds); 51 | 52 | /** 53 | * Destructor. 54 | */ 55 | void sr_py_report_free(PyObject *object); 56 | 57 | /** 58 | * str 59 | */ 60 | PyObject *sr_py_report_str(PyObject *self); 61 | 62 | /** 63 | * getters & setters 64 | */ 65 | PyObject *sr_py_report_get_version(PyObject *self, void *data); 66 | PyObject *sr_py_report_get_type(PyObject *self, void *data); 67 | int sr_py_report_set_type(PyObject *self, PyObject *rhs, void *data); 68 | PyObject *sr_py_report_get_auth(PyObject *self, void *data); 69 | int sr_py_report_set_auth(PyObject *self, PyObject *rhs, void *data); 70 | 71 | /** 72 | * Methods. 73 | */ 74 | PyObject * 75 | sr_py_report_to_json(PyObject *self, PyObject *args); 76 | 77 | #ifdef __cplusplus 78 | } 79 | #endif 80 | 81 | #endif 82 | -------------------------------------------------------------------------------- /python/py_rpm_package.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_rpm_package.h 3 | 4 | Copyright (C) 2013 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_RPM_PACKAGE_H 21 | #define SATYR_PY_RPM_PACKAGE_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for RPM package. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_rpm_package_type; 36 | 37 | struct sr_py_rpm_package 38 | { 39 | PyObject_HEAD 40 | struct sr_rpm_package *rpm_package; 41 | }; 42 | 43 | /** 44 | * Constructor. 45 | */ 46 | PyObject *sr_py_rpm_package_new(PyTypeObject *object, 47 | PyObject *args, PyObject *kwds); 48 | 49 | /** 50 | * Destructor. 51 | */ 52 | void sr_py_rpm_package_free(PyObject *object); 53 | 54 | /** 55 | * str 56 | */ 57 | PyObject *sr_py_rpm_package_str(PyObject *self); 58 | 59 | /* getters & setters */ 60 | PyObject *sr_py_rpm_package_get_role(PyObject *self, void *data); 61 | int sr_py_rpm_package_set_role(PyObject *self, PyObject *rhs, void *data); 62 | 63 | #ifdef __cplusplus 64 | } 65 | #endif 66 | 67 | #endif 68 | -------------------------------------------------------------------------------- /python/py_ruby_frame.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_ruby_frame.h 3 | 4 | Copyright (C) 2015 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_RUBY_FRAME_H 21 | #define SATYR_PY_RUBY_FRAME_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for RUBY frame. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_ruby_frame_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_frame. 39 | */ 40 | struct sr_py_ruby_frame 41 | { 42 | PyObject_HEAD 43 | struct sr_ruby_frame *frame; 44 | }; 45 | 46 | /** 47 | * Constructor. 48 | */ 49 | PyObject *sr_py_ruby_frame_new(PyTypeObject *object, 50 | PyObject *args, PyObject *kwds); 51 | 52 | /** 53 | * Destructor. 54 | */ 55 | void sr_py_ruby_frame_free(PyObject *object); 56 | 57 | /** 58 | * str 59 | */ 60 | PyObject *sr_py_ruby_frame_str(PyObject *self); 61 | 62 | /* methods */ 63 | PyObject *sr_py_ruby_frame_dup(PyObject *self, PyObject *args); 64 | 65 | #ifdef __cplusplus 66 | } 67 | #endif 68 | 69 | #endif 70 | -------------------------------------------------------------------------------- /python/py_ruby_stacktrace.h: -------------------------------------------------------------------------------- 1 | /* 2 | py_ruby_stacktrace.h 3 | 4 | Copyright (C) 2015 Red Hat, Inc. 5 | 6 | This program is free software; you can redistribute it and/or modify 7 | it under the terms of the GNU General Public License as published by 8 | the Free Software Foundation; either version 2 of the License, or 9 | (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License along 17 | with this program; if not, write to the Free Software Foundation, Inc., 18 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 | */ 20 | #ifndef SATYR_PY_RUBY_STACKTRACE_H 21 | #define SATYR_PY_RUBY_STACKTRACE_H 22 | 23 | /** 24 | * @file 25 | * @brief Python bindings for Ruby stack trace. 26 | */ 27 | 28 | #ifdef __cplusplus 29 | extern "C" { 30 | #endif 31 | 32 | #include 33 | #include 34 | 35 | extern PyTypeObject sr_py_ruby_stacktrace_type; 36 | 37 | /* The beginning of this structure has to have the same layout as 38 | * sr_py_base_thread. 39 | */ 40 | struct sr_py_ruby_stacktrace 41 | { 42 | PyObject_HEAD 43 | struct sr_ruby_stacktrace *stacktrace; 44 | PyObject *frames; 45 | PyTypeObject *frame_type; 46 | }; 47 | 48 | /* helpers */ 49 | PyObject *ruby_stacktrace_to_python_obj(struct sr_ruby_stacktrace *stacktrace); 50 | 51 | /* constructor */ 52 | PyObject *sr_py_ruby_stacktrace_new(PyTypeObject *object, 53 | PyObject *args, 54 | PyObject *kwds); 55 | 56 | /* destructor */ 57 | void sr_py_ruby_stacktrace_free(PyObject *object); 58 | 59 | /* str */ 60 | PyObject *sr_py_ruby_stacktrace_str(PyObject *self); 61 | 62 | /* methods */ 63 | PyObject *sr_py_ruby_stacktrace_dup(PyObject *self, PyObject *args); 64 | PyObject *sr_py_ruby_stacktrace_normalize(PyObject *self, PyObject *args); 65 | 66 | 67 | #ifdef __cplusplus 68 | } 69 | #endif 70 | 71 | #endif 72 | -------------------------------------------------------------------------------- /ruby/Makefile.am: -------------------------------------------------------------------------------- 1 | EXTRA_DIST = satyr.gemspec Rakefile lib test rubygem-satyr.spec.in 2 | 3 | GEM_VERSION = `fgrep "s.version =" satyr.gemspec | sed -r "s/^[^']*'([^']*)'.*$$/\\1/"` 4 | rubygem-satyr.spec: rubygem-satyr.spec.in 5 | sed "s/@@GEM_VERSION@@/$(GEM_VERSION)/" rubygem-satyr.spec.in > rubygem-satyr.spec 6 | 7 | gem: 8 | gem build satyr.gemspec 9 | 10 | 11 | RPM_DIRS = --define "_sourcedir `pwd`" \ 12 | --define "_rpmdir `pwd`/build" \ 13 | --define "_specdir `pwd`" \ 14 | --define "_builddir `pwd`/build" \ 15 | --define "_srcrpmdir `pwd`/build" 16 | 17 | rpm: gem rubygem-satyr.spec 18 | rpmbuild $(RPM_DIRS) -ba rubygem-satyr.spec 19 | srpm: gem rubygem-satyr.spec 20 | rpmbuild $(RPM_DIRS) -bs rubygem-satyr.spec 21 | -------------------------------------------------------------------------------- /ruby/Rakefile: -------------------------------------------------------------------------------- 1 | require 'rake/testtask' 2 | 3 | Rake::TestTask.new do |t| 4 | t.libs << 'test' 5 | end 6 | 7 | desc "Run tests" 8 | task :default => :test 9 | -------------------------------------------------------------------------------- /ruby/rubygem-satyr.spec.in: -------------------------------------------------------------------------------- 1 | %global gem_name satyr 2 | 3 | Name: rubygem-%{gem_name} 4 | Version: @@GEM_VERSION@@ 5 | Release: 1%{?dist} 6 | Summary: Parse uReport bug report format 7 | Group: Development/Languages 8 | License: GPLv2 9 | URL: http://github.com/abrt/satyr 10 | Source0: https://fedorahosted.org/released/abrt/%{gem_name}-%{version}.gem 11 | Requires: ruby(release) 12 | Requires: ruby(rubygems) 13 | Requires: rubygem(ffi) 14 | # the bindings are written for particular ABI 15 | %if %{__isa_bits} == 64 16 | Requires: libsatyr.so.3()(64bit) 17 | %else 18 | Requires: libsatyr.so.3 19 | %endif 20 | BuildRequires: ruby(release) 21 | BuildRequires: rubygems-devel 22 | BuildRequires: ruby 23 | BuildRequires: rubygem(ffi) 24 | BuildRequires: rubygem(minitest) 25 | BuildArch: noarch 26 | Provides: rubygem(%{gem_name}) = %{version} 27 | 28 | %description 29 | Ruby bindings for satyr, library for working with the uReport problem report 30 | format. 31 | 32 | %package doc 33 | Summary: Documentation for %{name} 34 | Group: Documentation 35 | Requires: %{name} = %{version}-%{release} 36 | BuildArch: noarch 37 | 38 | %description doc 39 | Documentation for %{name} 40 | 41 | %prep 42 | gem unpack %{SOURCE0} 43 | %setup -q -D -T -n %{gem_name}-%{version} 44 | gem spec %{SOURCE0} -l --ruby > %{gem_name}.gemspec 45 | 46 | %build 47 | # Create the gem as gem install only works on a gem file 48 | gem build %{gem_name}.gemspec 49 | 50 | # %%gem_install compiles any C extensions and installs the gem into ./%gem_dir 51 | # by default, so that we can move it into the buildroot in %%install 52 | %gem_install 53 | 54 | %install 55 | # Packaging guidelines say: Do not ship tests 56 | rm -r .%{gem_instdir}/test .%{gem_instdir}/Rakefile 57 | 58 | mkdir -p %{buildroot}%{gem_dir} 59 | cp -pa .%{gem_dir}/* \ 60 | %{buildroot}%{gem_dir}/ 61 | 62 | %check 63 | testrb -Ilib test 64 | 65 | %files 66 | %dir %{gem_instdir} 67 | %{gem_libdir} 68 | %exclude %{gem_cache} 69 | %{gem_spec} 70 | 71 | %files doc 72 | %doc %{gem_docdir} 73 | 74 | %changelog 75 | * Wed Oct 08 2014 Martin Milata - 0.2-1 76 | - Ruby 1.8 compatibility fix 77 | 78 | * Tue Mar 04 2014 Martin Milata - 0.1-1 79 | - Initial package 80 | -------------------------------------------------------------------------------- /ruby/satyr.gemspec: -------------------------------------------------------------------------------- 1 | Gem::Specification.new do |s| 2 | s.name = 'satyr' 3 | s.version = '0.2' 4 | s.summary = 'Parse uReport bug report format' 5 | s.description = 'Ruby bindings for satyr, library for working with the uReport problem report format.' 6 | s.authors = ['Martin Milata'] 7 | s.email = 'mmilata@redhat.com' 8 | s.files = ['lib/satyr.rb', 'Rakefile'] 9 | s.test_files = ['test/test_satyr.rb', 'test/data/ureport-1'] 10 | s.homepage = 'http://github.com/abrt/satyr' 11 | s.license = 'GPLv2' 12 | s.add_runtime_dependency 'ffi' 13 | end 14 | -------------------------------------------------------------------------------- /ruby/test/data/ureport-1: -------------------------------------------------------------------------------- 1 | ../../../tests/json_files/ureport-1 -------------------------------------------------------------------------------- /ruby/test/test_satyr.rb: -------------------------------------------------------------------------------- 1 | require 'test/unit' 2 | require 'satyr' 3 | 4 | class SatyrTest < Test::Unit::TestCase 5 | def test_core_duphash 6 | path = 'test/data/ureport-1' 7 | json = IO.read(path) 8 | 9 | report = Satyr::Report.new json 10 | stacktrace = report.stacktrace 11 | thread = stacktrace.find_crash_thread 12 | 13 | assert_equal 'b9a440a68b6e0f33f6cd989e114d6c4093964e10', thread.duphash 14 | 15 | expected_out = "Thread\n5f6632d75fd027f5b7b410787f3f06c6bf73eee6+0xbb430\n" 16 | assert_equal expected_out, thread.duphash(frames: 1, flags: :nohash) 17 | 18 | expected_out = "a" + expected_out 19 | assert_equal expected_out, thread.duphash(frames: 1, flags: :nohash, prefix: "a") 20 | end 21 | 22 | def test_invalid_report 23 | assert_raise Satyr::SatyrError do 24 | report = Satyr::Report.new "" 25 | end 26 | 27 | begin 28 | report = Satyr::Report.new "}" 29 | rescue Satyr::SatyrError => e 30 | assert_match /Failed to parse JSON:.*}.*/, e.message 31 | end 32 | end 33 | 34 | def test_private_constructors 35 | assert_raise NoMethodError do 36 | s = Satyr::Stacktrace.new nil 37 | end 38 | 39 | assert_raise NoMethodError do 40 | s = Satyr::Thread.new nil 41 | end 42 | end 43 | end 44 | -------------------------------------------------------------------------------- /satyr.1.in: -------------------------------------------------------------------------------- 1 | .TH SATYR "1" "2013-03-18" "@PACKAGE_STRING@" 2 | .SH NAME 3 | satyr \- create and manipulate problem reports 4 | .SH SYNOPSIS 5 | .B satyr 6 | [option...] 7 | .SH DESCRIPTION 8 | .I satyr 9 | is a command line tool that creates anonymous reports of software problems that 10 | are suitable for automated processing. 11 | 12 | The tool has to be invoked with a 13 | .I 14 | that specifies the action to be performed. The available commands are 15 | documented below. 16 | 17 | .SH OPTIONS 18 | .B Commands 19 | .IP "abrt\-print\-report\-from\-dir " 20 | 21 | Creates report from ABRT problem directory 22 | .I directory 23 | and prints it to standard output. 24 | 25 | .IP "abrt\-create\-core\-stacktrace " 26 | 27 | Creates stacktrace from ABRT problem directory 28 | .I directory 29 | that contains a core dump. 30 | -------------------------------------------------------------------------------- /satyr.pc.in: -------------------------------------------------------------------------------- 1 | prefix=@prefix@ 2 | exec_prefix=@exec_prefix@ 3 | libdir=@libdir@ 4 | includedir=@includedir@ 5 | 6 | Name: satyr 7 | Description: Automatic problem management with anonymous reports 8 | Version: @PACKAGE_VERSION@ 9 | Requires: json-c 10 | Libs: -L${libdir} -lsatyr 11 | Cflags: -I${includedir} 12 | -------------------------------------------------------------------------------- /tests/.gitignore: -------------------------------------------------------------------------------- 1 | /abrt 2 | /cluster 3 | /core_frame 4 | /core_stacktrace 5 | /core_thread 6 | /dump_core 7 | /gdb_frame 8 | /gdb_sharedlib 9 | /gdb_stacktrace 10 | /gdb_thread 11 | /java_frame 12 | /java_stacktrace 13 | /java_thread 14 | /js_frame 15 | /js_platform 16 | /js_stacktrace 17 | /koops_frame 18 | /koops_stacktrace 19 | /metrics 20 | /normalize 21 | /operating_system 22 | /report 23 | /rpm 24 | /ruby_frame 25 | /ruby_stacktrace 26 | /strbuf 27 | /utils 28 | -------------------------------------------------------------------------------- /tests/atlocal.in: -------------------------------------------------------------------------------- 1 | # @configure_input@ -*- shell-script -*- 2 | # Configurable variable values for satyr test suite. 3 | 4 | # We need a C compiler. 5 | CC='@CC@' 6 | LIBTOOL="$abs_top_builddir/libtool" 7 | 8 | # We want no optimization. 9 | CFLAGS="@O0CFLAGS@ -I$abs_top_builddir/tests -I$abs_top_builddir/include -I$abs_top_builddir/lib -D_GNU_SOURCE @GLIB_CFLAGS@ @JSON_CFLAGS@" 10 | 11 | # Are special link options needed? 12 | LDFLAGS="@LDFLAGS@ $abs_top_builddir/lib/libsatyr.la" 13 | 14 | # Are special libraries needed? 15 | LIBS="@LIBS@" 16 | -------------------------------------------------------------------------------- /tests/core.21426: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abrt/satyr/6153441b81708bcb729db4f2d37e9aaf03280a36/tests/core.21426 -------------------------------------------------------------------------------- /tests/dump_core.c: -------------------------------------------------------------------------------- 1 | #ifndef _GNU_SOURCE 2 | #define _GNU_SOURCE 3 | #endif 4 | 5 | #if defined _FORTIFY_SOURCE 6 | #undef _FORTIFY_SOURCE 7 | #endif 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | 16 | static char const *prefix = "/tmp/satyr.core"; 17 | 18 | #if defined(__clang__) 19 | __attribute__((optnone)) 20 | #else 21 | __attribute__((optimize((0)))) 22 | #endif 23 | int 24 | dump_core(int depth, 25 | char **name) 26 | { 27 | pid_t pid; 28 | char *pid_string; 29 | pid_t fork_pid; 30 | int status; 31 | 32 | if (--depth > 0) 33 | { 34 | return dump_core(depth, name); 35 | } 36 | 37 | pid = getpid(); 38 | 39 | if (asprintf(&pid_string, "%d", pid) == -1) 40 | { 41 | return false; 42 | } 43 | 44 | fork_pid = fork(); 45 | if (-1 == fork_pid) 46 | { 47 | free(pid_string); 48 | 49 | return false; 50 | } 51 | else if (0 == fork_pid) 52 | { 53 | char const *const argv[] = 54 | { 55 | "gcore", 56 | "-o", prefix, 57 | pid_string, 58 | NULL, 59 | }; 60 | int fd; 61 | 62 | fd = open("/dev/null", O_WRONLY); 63 | 64 | dup2(fd, STDOUT_FILENO); 65 | dup2(fd, STDERR_FILENO); 66 | 67 | close(fd); 68 | 69 | execv("/usr/bin/gcore", (char *const *) argv); 70 | } 71 | 72 | if (waitpid(fork_pid, &status, 0) == -1) 73 | { 74 | free(pid_string); 75 | 76 | return false; 77 | } 78 | 79 | if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) 80 | { 81 | return false; 82 | } 83 | 84 | if (NULL == *name) 85 | { 86 | if (asprintf(name, "%s.%s", prefix, pid_string) == -1) 87 | { 88 | return false; 89 | } 90 | } 91 | 92 | free(pid_string); 93 | 94 | return true; 95 | } 96 | 97 | int 98 | main (int argc, 99 | char **argv) 100 | { 101 | int depth; 102 | char *name = NULL; 103 | 104 | depth = atoi(argv[1]); 105 | 106 | if (!dump_core(depth, &name)) 107 | { 108 | return EXIT_FAILURE; 109 | } 110 | 111 | printf("%s", name); 112 | 113 | return EXIT_SUCCESS; 114 | } 115 | -------------------------------------------------------------------------------- /tests/gdb_stacktraces/no-thread-header: -------------------------------------------------------------------------------- 1 | [New Thread 3575] 2 | [New Thread 3618] 3 | [Thread debugging using libthread_db enabled] 4 | Core was generated by `/usr/bin/python /usr/share/virt-manager/virt-manager.py'. 5 | Program terminated with signal 11, Segmentation fault. 6 | #0 0x0000003b26460e69 in write () at ../sysdeps/unix/syscall-template.S:82 7 | [Some crap] 8 | 9 | #0 0x0000003ec220e48d in write () at ../sysdeps/unix/syscall-template.S:82 10 | No locals. 11 | #1 0x00007fafcc8607d6 in virNetSocketWriteWire (sock=0x7fafc0002330, buf=0x7fafc0083ce1 "", len=56) at rpc/virnetsocket.c:928 12 | ret = 13 | __FUNCTION__ = "virNetSocketWriteWire" 14 | #2 0x00007fafcc8609be in virNetSocketWrite (sock=0x7fafc0002330, buf=0x7fafc0083ce1 "", len=56) at rpc/virnetsocket.c:1075 15 | ret = 16 | #3 0x00007fafcc85dfc1 in virNetClientIOWriteMessage (client=0x7fafc00024f0, thiscall=0x7fafc0046fd0) at rpc/virnetclient.c:714 17 | ret = 18 | #4 virNetClientIOHandleOutput (client=0x7fafc00024f0, thiscall=0x7fafc0046fd0) at rpc/virnetclient.c:747 19 | ret = 56 20 | thecall = 0x7fafc0046fd0 21 | #5 virNetClientIOEventLoop (client=0x7fafc00024f0, thiscall=0x7fafc0046fd0) at rpc/virnetclient.c:940 22 | tmp = 23 | ignore = 0 '\000' 24 | oldmask = {__val = {0, 269734670536, 1, 269734671160, 1, 269734670473, 1, 269734671545, 1, 34678736, 1, 140392817769696, 140392817239288, 269734671707, 140392817239288, 269734616793}} 25 | timeout = -1 26 | prev = 27 | blockedsigs = {__val = {134287360, 0 }} 28 | fds = {{fd = 20, events = 4, revents = 4}, {fd = 21, events = 1, revents = 0}} 29 | ret = 30 | __func__ = "virNetClientIOEventLoop" 31 | __FUNCTION__ = "virNetClientIOEventLoop" 32 | -------------------------------------------------------------------------------- /tests/gdb_stacktraces/rhbz-1239318_modified: -------------------------------------------------------------------------------- 1 | [Thread debugging using libthread_db enabled] 2 | Using host libthread_db library "/lib64/libthread_db.so.1". 3 | Core was generated by `/usr/libexec/epiphany-search-provider'. 4 | Program terminated with signal SIGSEGV, Segmentation fault. 5 | #0 0x00007f778873dbde in _dbus_list_foreach () from /lib64/libdbus-1.so.3 6 | 7 | Thread 1 (Thread 0x7f77986e2a00 (LWP 2845)): 8 | #0 0x00007f778873dbde in _dbus_list_foreach () at /lib64/libdbus-1.so 9 | #1 0x00007f778872d352 in dbus_message_unref () at /lib64/libdbus-1.so.3 10 | #2 0x00007f7788724dfe in dbus_connection_dispatch () at /lib64/libdbus-1.so.3 11 | #3 0x00007f77908e39b6 in avahi_address_resolver_new () at /lib64/libavahi-client.so 12 | #4 0x00007f77911c1500 in g_poll () at /lib64/libglib-2.0.so.0 13 | #5 0x0000000000000002 in () 14 | #6 0x00007f77911b1e20 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0 15 | #7 0x00007f77911b1ecc in g_main_context_iteration () at /lib64/libglib-2.0.so.0 16 | #8 0x00007f779179d26c in g_application_run () at /lib64/libgio-2.0.so 17 | #9 0x0000000000423924 in main () 18 | -------------------------------------------------------------------------------- /tests/java_stacktraces/java-01: -------------------------------------------------------------------------------- 1 | java.lang.RuntimeException: java.lang.NullPointerException: null 2 | at SimpleTest.throwNullPointerException(SimpleTest.java:36) 3 | at SimpleTest.throwAndDontCatchException(SimpleTest.java:70) 4 | at SimpleTest.main(SimpleTest.java:82) 5 | Caused by: java.lang.NullPointerException: java.lang.InvalidRangeException: undefined index 6 | at SimpleTest.execute(Test.java:7) 7 | at SimpleTest.intercept(Test.java:2) 8 | ... 3 more 9 | Caused by: java.lang.InvalidRangeException: undefined index 10 | at MyVector.at(Containers.java:77) 11 | ... 5 more 12 | -------------------------------------------------------------------------------- /tests/java_stacktraces/java-02: -------------------------------------------------------------------------------- 1 | javax.servlet.ServletException: Something bad happened 2 | at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:60) 3 | at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 4 | at com.example.myproject.ExceptionHandlerFilter.doFilter(ExceptionHandlerFilter.java:28) 5 | at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 6 | at com.example.myproject.OutputBufferFilter.doFilter(OutputBufferFilter.java:33) 7 | at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 8 | at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 9 | at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 10 | at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 11 | at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 12 | at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 13 | at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 14 | at org.mortbay.jetty.Server.handle(Server.java:326) 15 | at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 16 | at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943) 17 | at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756) 18 | at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 19 | at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 20 | at org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:228) 21 | at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 22 | Caused by: com.example.myproject.MyProjectServletException 23 | at com.example.myproject.MyServlet.doPost(MyServlet.java:169) 24 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) 25 | at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) 26 | at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 27 | at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 28 | at com.example.myproject.OpenSessionInViewFilter.doFilter(OpenSessionInViewFilter.java:30) 29 | ... 27 more 30 | Caused by: org.hibernate.exception.ConstraintViolationException: could not insert: [com.example.myproject.MyEntity] 31 | at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:96) 32 | at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) 33 | at org.hibernate.id.insert.AbstractSelectingDelegate.performInsert(AbstractSelectingDelegate.java:64) 34 | -------------------------------------------------------------------------------- /tests/java_stacktraces/java-03: -------------------------------------------------------------------------------- 1 | Exception in thread "main" java.lang.IllegalStateException: A book has a null property 2 | at com.example.myproject.Author.getBookIds(Author.java:38) 3 | at com.example.myproject.Bootstrap.main(Bootstrap.java:14) 4 | Caused by: java.lang.NullPointerException 5 | at com.example.myproject.Book.getId(Book.java:22) 6 | at com.example.myproject.Author.getBookIds(Author.java:35) 7 | ... 1 more 8 | -------------------------------------------------------------------------------- /tests/js_stacktraces/node-01: -------------------------------------------------------------------------------- 1 | ReferenceError: nonexistentFunc is not defined 2 | at Object. (/tmp/index.js:2:1) 3 | at Module._compile (module.js:556:32) 4 | at Object.Module._extensions..js (module.js:565:10) 5 | at Module.load (module.js:473:32) 6 | at tryModuleLoad (module.js:432:12) 7 | at Function.Module._load (module.js:424:3) 8 | at Module.runMain (module.js:590:10) 9 | at run (bootstrap_node.js:394:7) 10 | at startup (bootstrap_node.js:149:9) 11 | at bootstrap_node.js:509:3 12 | -------------------------------------------------------------------------------- /tests/js_stacktraces/node-01-expected-json: -------------------------------------------------------------------------------- 1 | { "exception_name": "ReferenceError" 2 | , "stacktrace": 3 | [ { "file_name": "/tmp/index.js" 4 | , "file_line": 2 5 | , "line_column": 1 6 | , "function_name": "Object." 7 | } 8 | , { "file_name": "module.js" 9 | , "file_line": 556 10 | , "line_column": 32 11 | , "function_name": "Module._compile" 12 | } 13 | , { "file_name": "module.js" 14 | , "file_line": 565 15 | , "line_column": 10 16 | , "function_name": "Object.Module._extensions..js" 17 | } 18 | , { "file_name": "module.js" 19 | , "file_line": 473 20 | , "line_column": 32 21 | , "function_name": "Module.load" 22 | } 23 | , { "file_name": "module.js" 24 | , "file_line": 432 25 | , "line_column": 12 26 | , "function_name": "tryModuleLoad" 27 | } 28 | , { "file_name": "module.js" 29 | , "file_line": 424 30 | , "line_column": 3 31 | , "function_name": "Function.Module._load" 32 | } 33 | , { "file_name": "module.js" 34 | , "file_line": 590 35 | , "line_column": 10 36 | , "function_name": "Module.runMain" 37 | } 38 | , { "file_name": "bootstrap_node.js" 39 | , "file_line": 394 40 | , "line_column": 7 41 | , "function_name": "run" 42 | } 43 | , { "file_name": "bootstrap_node.js" 44 | , "file_line": 149 45 | , "line_column": 9 46 | , "function_name": "startup" 47 | } 48 | , { "file_name": "bootstrap_node.js" 49 | , "file_line": 509 50 | , "line_column": 3 51 | } ] 52 | , "platform": 53 | { "engine": "V8" 54 | , "runtime": "" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /tests/js_stacktraces/node-02: -------------------------------------------------------------------------------- 1 | TypeError: Cannot read property 'message' of undefined 2 | at Socket. (/tmp/index.js:16:35) 3 | at Socket.g (events.js:286:16) 4 | at emitNone (events.js:86:13) 5 | at Socket.emit (events.js:185:7) 6 | at PipeConnectWrap.afterConnect [as oncomplete] (net.js:1068:10) 7 | -------------------------------------------------------------------------------- /tests/js_stacktraces/node-02-expected-json: -------------------------------------------------------------------------------- 1 | { "exception_name": "TypeError" 2 | , "stacktrace": 3 | [ { "file_name": "/tmp/index.js" 4 | , "file_line": 16 5 | , "line_column": 35 6 | , "function_name": "Socket." 7 | } 8 | , { "file_name": "events.js" 9 | , "file_line": 286 10 | , "line_column": 16 11 | , "function_name": "Socket.g" 12 | } 13 | , { "file_name": "events.js" 14 | , "file_line": 86 15 | , "line_column": 13 16 | , "function_name": "emitNone" 17 | } 18 | , { "file_name": "events.js" 19 | , "file_line": 185 20 | , "line_column": 7 21 | , "function_name": "Socket.emit" 22 | } 23 | , { "file_name": "net.js" 24 | , "file_line": 1068 25 | , "line_column": 10 26 | , "function_name": "PipeConnectWrap.afterConnect" 27 | } ] 28 | , "platform": 29 | { "engine": "V8" 30 | , "runtime": "" 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tests/json_files/core-01: -------------------------------------------------------------------------------- 1 | { "signal": 6 2 | , "executable": "/usr/bin/will_abort" 3 | , "extra_keys": "shall be ignored" 4 | , "stacktrace": 5 | [ { "frames": 6 | [ { "address": 87654 7 | , "build_id": "92ebaf825e4f492952c45189cb9ffc6541f8599b" 8 | , "build_id_offset": 42 9 | , "function_name": "fake_frame_for_the_sake_of_multiple_threads" 10 | , "file_name": "/usr/bin/will_abort" 11 | } 12 | , { "address": 98346 13 | , "build_id": "92ebaf825e4f492952c45189cb9ffc6541f8599b" 14 | , "build_id_offset": 10734 15 | , "function_name": "fake_function" 16 | , "file_name": "/usr/bin/will_abort" 17 | } ] 18 | } 19 | , { "crash_thread": true 20 | , "frames": 21 | [ { "address": 237190207797 22 | , "build_id": "cc10c72da62c93033e227ffbe2670f2c4fbbde1a" 23 | , "build_id_offset": 219445 24 | , "function_name": "raise" 25 | , "file_name": "/usr/lib64/libc-2.15.so" 26 | , "an_unknown_key": "fromTHEfuture" 27 | , "fingerprint": "f33186a4c862fb0751bca60701f553b829210477" 28 | } 29 | , { "address": 237190213864 30 | , "build_id": "cc10c72da62c93033e227ffbe2670f2c4fbbde1a" 31 | , "build_id_offset": 225512 32 | , "function_name": "abort" 33 | , "file_name": "/usr/lib64/libc-2.15.so" 34 | , "fingerprint": "352bc5cf09233cea84fd089527a146cfb5b7d8dc" 35 | } 36 | , { "address": 4195427 37 | , "build_id": "92ebaf825e4f492952c45189cb9ffc6541f8599b" 38 | , "build_id_offset": 1123 39 | , "file_name": "/usr/bin/will_abort" 40 | } 41 | , { "address": 237190125365 42 | , "build_id": "cc10c72da62c93033e227ffbe2670f2c4fbbde1a" 43 | , "build_id_offset": 137013 44 | , "function_name": "__libc_start_main" 45 | , "file_name": "/usr/lib64/libc-2.15.so" 46 | , "fingerprint": "5ff4a3d3743fdde711c49033d1e01784477e57fb" 47 | } ] 48 | } ] 49 | } 50 | -------------------------------------------------------------------------------- /tests/kerneloopses/arm-hung-task-oops: -------------------------------------------------------------------------------- 1 | Kernel panic - not syncing: hung_task: blocked tasks 2 | CPU: 3 PID: 27 Comm: khungtaskd Tainted: P O 4.2.8-yocto-standard-1968fcd27440e21d39a0b9e14a3be2ad #1 3 | Hardware name: Marvell Armada 370/XP (Device Tree) 4 | Backtrace: 5 | [] (dump_backtrace_log_lvl) from [] (show_stack+0x24/0x2c) 6 | r7:df912310 r6:df912140 r5:c081745c r4:00000000 7 | [] (show_stack) from [] (dump_stack+0x7c/0xc8) 8 | [] (dump_stack) from [] (panic+0x98/0x218) 9 | r5:00000061 r4:c084cea8 10 | [] (panic) from [] (watchdog+0x368/0x3a8) 11 | r3:00000400 r2:00000000 r1:c08a49f8 r0:c06c0c43 12 | r7:df912310 13 | [] (watchdog) from [] (kthread+0xe8/0xfc) 14 | r10:00000000 r9:00000000 r8:00000000 r7:c00a8a00 r6:00000000 r5:00000000 15 | r4:edbd89c0 16 | [] (kthread) from [] (ret_from_fork+0x14/0x2c) 17 | r7:00000000 r6:00000000 r5:c00447b0 r4:edbd89c0 18 | 19 | 20 | Current process: khungtaskd pid=27 21 | Running on CPU3 (4 online) 22 | 23 | current=edb06180 preempt_count=0x1 24 | 25 | regs and stacktrace from uregs: edbf3fb0 26 | Stacktrace initiated from showRegs() 27 | Process: khungtaskd, pid:27 28 | stack trace: 29 | (00) 00000000 (ra=00000000) sp:00000000(00) 00000000 30 | 31 | Dumping regs from edbf3fb0 32 | PC:00000000 LR:00000000 SP:00000000 IP:00000000 FP:00000000 33 | CPSR: 00000013 34 | 35 | R0: 00000000 00000000 00000000 00000000 00000000 00000000 36 | R6: 00000000 00000000 00000000 00000000 00000000 37 | 38 | No MM assigned to process (pid: 27) 39 | CPU 2 will stop doing anything useful since another CPU has crashed 40 | CPU 1 will stop doing anything useful since another CPU has crashed 41 | CPU 0 will stop doing anything useful since another CPU has crashed 42 | -------------------------------------------------------------------------------- /tests/kerneloopses/github-102: -------------------------------------------------------------------------------- 1 | WARNING: at include/linux/mm.h:283 putback_inactive_pages+0x2cc/0x360() 2 | Modules linked in: vboxpci(OF) vboxnetadp(OF) vboxnetflt(OF) vboxdrv(OF) fuse ebtable_nat ipt_MASQUERADE nf_conntrack_netbios_ns nf_conntrack_broadcast bnep bluetooth rfkill ip6table_mangle ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 iptable_nat nf_nat_ipv4 nf_nat iptable_mangle nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ebtable_filter ebtables ip6table_filter ip6_tables be2iscsi iscsi_boot_sysfs bnx2i cnic uio cxgb4i cxgb4 cxgb3i cxgb3 mdio libcxgbi ib_iser rdma_cm ib_addr iw_cm ib_cm ib_sa ib_mad ib_core iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi snd_hda_codec_hdmi snd_usb_audio snd_hda_codec_realtek snd_usbmidi_lib snd_hda_intel snd_hda_codec uvcvideo snd_rawmidi snd_hwdep snd_seq snd_seq_device snd_pcm snd_page_alloc snd_timer iTCO_wdt videobuf2_vmalloc videobuf2_memops fglrx(POF) acpi_cpufreq mperf coretemp videobuf2_core 3 | videodev joydev iTCO_vendor_support snd ppdev hid_logitech_dj i2c_i801 media i2c_core lpc_ich mfd_core parport_pc parport amd_iommu_v2 microcode serio_raw soundcore vhost_net tun macvtap macvlan kvm_intel kvm binfmt_misc uinput ata_generic pata_acpi r8169 mii pata_jmicron sunrpc 4 | CPU: 1 PID: 42 Comm: kswapd0 Tainted: PF B WC O 3.10.4-100.fc18.x86_64 #1 5 | Hardware name: Gigabyte Technology Co., Ltd. EP45-UD3L/EP45-UD3L, BIOS F4 02/24/2009 6 | 0000000000000009 ffff88022259da58 ffffffff816606a8 ffff88022259da98 7 | ffffffff8105d660 ffff88022259dba0 ffff880227014410 ffff88022259dba8 8 | 0000000000000000 ffffea0004018020 0000000000000200 ffff88022259daa8 9 | Call Trace: 10 | [] dump_stack+0x19/0x1b 11 | [] warn_slowpath_common+0x70/0xa0 12 | [] warn_slowpath_null+0x1a/0x20 13 | [] putback_inactive_pages+0x2cc/0x360 14 | [] shrink_inactive_list+0x18b/0x410 15 | [] shrink_lruvec+0x231/0x4f0 16 | [] ? drop_super+0x22/0x30 17 | [] shrink_zone+0x66/0x1a0 18 | [] balance_pgdat+0x48c/0x5c0 19 | [] kswapd+0x174/0x440 20 | [] ? wake_up_bit+0x40/0x40 21 | [] ? balance_pgdat+0x5c0/0x5c0 22 | [] kthread+0xc0/0xd0 23 | [] ? perf_trace_xen_mmu_flush_tlb_others+0xa0/0x110 24 | [] ? kthread_create_on_node+0x120/0x120 25 | [] ret_from_fork+0x7c/0xb0 26 | [] ? kthread_create_on_node+0x120/0x120 27 | -------------------------------------------------------------------------------- /tests/kerneloopses/github-113: -------------------------------------------------------------------------------- 1 | WARNING: at drivers/iommu/intel_irq_remapping.c:533 intel_irq_remapping_supported+0x37/0x7a() 2 | This system BIOS has enabled interrupt remapping 3 | on a chipset that contains an erratum making that 4 | feature unstable. To maintain system stability 5 | interrupt remapping is being disabled. Please 6 | contact your BIOS vendor for an update 7 | Modules linked in: 8 | CPU: 0 PID: 1 Comm: swapper/0 Not tainted 3.10.12-100.fc18.x86_64 #1 9 | Hardware name: Hewlett-Packard HP Z600 Workstation/0B54h, BIOS 786G4 v03.19 03/11/2011 10 | 000000000000000b ffff88030ec8fd48 ffffffff81656b45 ffff88030ec8fd88 11 | ffffffff8105d670 ffffffff81529d1f 0000000000000000 0000000000000246 12 | 00000000ffffffff 000000000000b020 000000000000001f ffff88030ec8fde8 13 | Call Trace: 14 | [] dump_stack+0x19/0x1b 15 | [] warn_slowpath_common+0x70/0xa0 16 | [] ? kzalloc+0xf/0x20 17 | [] warn_slowpath_fmt_taint+0x3f/0x50 18 | [] ? ioapic_read_entry+0x4b/0x60 19 | [] intel_irq_remapping_supported+0x37/0x7a 20 | [] irq_remapping_supported+0x2d/0x30 21 | [] enable_IR+0xb/0x62 22 | [] enable_IR_x2apic+0x8f/0x14b 23 | [] default_setup_apic_routing+0x12/0x6b 24 | [] native_smp_prepare_cpus+0x2fc/0x336 25 | [] kernel_init_freeable+0x9f/0x1df 26 | [] ? rest_init+0x80/0x80 27 | [] kernel_init+0xe/0xf0 28 | [] ret_from_fork+0x7c/0xb0 29 | [] ? rest_init+0x80/0x80 30 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-03: -------------------------------------------------------------------------------- 1 | [ 1570.586223] =============================== 2 | [ 1570.586225] [ INFO: suspicious RCU usage. ] 3 | [ 1570.586228] 3.6.0-rc3-wl-main #98 Not tainted 4 | [ 1570.586229] ------------------------------- 5 | [ 1570.586231] /home/proski/src/linux/net/ipv4/route.c:645 suspicious rcu_dereference_check() usage! 6 | [ 1570.586233] 7 | [ 1570.586233] other info that might help us debug this: 8 | [ 1570.586233] 9 | [ 1570.586236] 10 | [ 1570.586236] rcu_scheduler_active = 1, debug_locks = 0 11 | [ 1570.586238] 2 locks held by Chrome_IOThread/4467: 12 | [ 1570.586240] #0: (slock-AF_INET){+.-...}, at: [] release_sock+0x2c/0xa0 13 | [ 1570.586253] #1: (fnhe_lock){+.-...}, at: [] update_or_create_fnhe+0x2c/0x270 14 | [ 1570.586260] 15 | [ 1570.586260] stack backtrace: 16 | [ 1570.586263] Pid: 4467, comm: Chrome_IOThread Not tainted 3.6.0-rc3-wl-main #98 17 | [ 1570.586265] Call Trace: 18 | [ 1570.586271] [] lockdep_rcu_suspicious+0xfd/0x130 19 | [ 1570.586275] [] update_or_create_fnhe+0x15c/0x270 20 | [ 1570.586278] [] __ip_rt_update_pmtu+0x73/0xb0 21 | [ 1570.586282] [] ip_rt_update_pmtu+0x29/0x90 22 | [ 1570.586285] [] inet_csk_update_pmtu+0x2c/0x80 23 | [ 1570.586290] [] tcp_v4_mtu_reduced+0x2e/0xc0 24 | [ 1570.586293] [] tcp_release_cb+0xa4/0xb0 25 | [ 1570.586296] [] release_sock+0x55/0xa0 26 | [ 1570.586300] [] tcp_sendmsg+0x4af/0xf50 27 | [ 1570.586305] [] inet_sendmsg+0x120/0x230 28 | [ 1570.586308] [] ? inet_sk_rebuild_header+0x40/0x40 29 | [ 1570.586312] [] ? sock_update_classid+0xbd/0x3b0 30 | [ 1570.586315] [] ? sock_update_classid+0x130/0x3b0 31 | [ 1570.586320] [] do_sock_write+0xc5/0xe0 32 | [ 1570.586323] [] sock_aio_write+0x53/0x80 33 | [ 1570.586328] [] do_sync_write+0xa3/0xe0 34 | [ 1570.586332] [] vfs_write+0x165/0x180 35 | [ 1570.586335] [] sys_write+0x45/0x90 36 | [ 1570.586340] [] system_call_fastpath+0x16/0x1b 37 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-04: -------------------------------------------------------------------------------- 1 | [ 1123.310275] =============================== 2 | [ 1123.442202] [ INFO: suspicious RCU usage. ] 3 | [ 1123.558207] 3.6.0-rc1+ #109 Not tainted 4 | [ 1123.665204] ------------------------------- 5 | [ 1123.768254] include/linux/rcupdate.h:430 Illegal context switch in RCU read-side critical section! 6 | [ 1123.992320] 7 | [ 1123.992320] other info that might help us debug this: 8 | [ 1123.992320] 9 | [ 1124.307382] 10 | [ 1124.307382] rcu_scheduler_active = 1, debug_locks = 0 11 | [ 1124.522220] 2 locks held by sysctl/5710: 12 | [ 1124.648364] #0: (rtnl_mutex){+.+.+.}, at: [] rtnl_trylock+0x15/0x17 13 | [ 1124.882211] #1: (rcu_read_lock){.+.+.+}, at: [] rcu_lock_acquire+0x0/0x29 14 | [ 1125.085209] 15 | [ 1125.085209] stack backtrace: 16 | [ 1125.332213] Pid: 5710, comm: sysctl Not tainted 3.6.0-rc1+ #109 17 | [ 1125.441291] Call Trace: 18 | [ 1125.545281] [] lockdep_rcu_suspicious+0x109/0x112 19 | [ 1125.667212] [] rcu_preempt_sleep_check+0x45/0x47 20 | [ 1125.781838] [] __might_sleep+0x1e/0x19b 21 | [ 1127.445223] [] call_netdevice_notifiers+0x4a/0x4f 22 | [ 1127.772188] [] dev_disable_lro+0x32/0x6b 23 | [ 1127.885174] [] dev_forward_change+0x30/0xcb 24 | [ 1128.013214] [] addrconf_forward_change+0x85/0xc5 25 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-05: -------------------------------------------------------------------------------- 1 | [ 447.627232] ================================= 2 | [ 447.627237] [ INFO: inconsistent lock state ] 3 | [ 447.627244] 3.6.0-rc1-wl+ #296 Tainted: G W 4 | [ 447.627248] --------------------------------- 5 | [ 447.627253] inconsistent {SOFTIRQ-ON-W} -> {IN-SOFTIRQ-W} usage. 6 | [ 447.627260] swapper/0/0 [HC0[0]:SC1[1]:HE1:SE0] takes: 7 | [ 447.627264] (&(&ah->block)->rlock){+.?...}, at: [] ath5k_tasklet_beacon+0x91/0xa7 [ath5k] 8 | [ 447.627299] {SOFTIRQ-ON-W} state was registered at: 9 | [ 447.627304] [] mark_held_locks+0x59/0x77 10 | [ 447.627316] [] trace_hardirqs_on_caller+0x10e/0x13f 11 | [ 447.627324] [] trace_hardirqs_on+0xb/0xd 12 | [ 447.627332] [] _local_bh_enable_ip+0x9e/0xa6 13 | [ 447.627342] [] local_bh_enable_ip+0xd/0xf 14 | [ 447.627349] [] _raw_spin_unlock_bh+0x34/0x37 15 | [ 447.627359] [] mesh_sync_offset_adjust_tbtt+0x95/0x99 [mac80211] 16 | [ 447.627451] [] ieee80211_beacon_get_tim+0x28f/0x4e0 [mac80211] 17 | [ 447.627526] [] ath5k_beacon_update+0x40/0x26b [ath5k] 18 | [ 447.627547] [] ath5k_bss_info_changed+0x175/0x1b2 [ath5k] 19 | [ 447.627569] [] ieee80211_bss_info_change_notify+0x1ed/0x21a [mac80211] 20 | [ 447.627628] [] ieee80211_start_mesh+0xb9/0xbd [mac80211] 21 | [ 447.627712] [] ieee80211_join_mesh+0x10c/0x116 [mac80211] 22 | [ 447.627782] [] __cfg80211_join_mesh+0x176/0x1b3 [cfg80211] 23 | [ 447.627816] [] cfg80211_join_mesh+0x4f/0x6a [cfg80211] 24 | [ 447.627845] [] nl80211_join_mesh+0x1de/0x1ed [cfg80211] 25 | [ 447.627872] [] genl_rcv_msg+0x1d5/0x1f3 26 | [ 447.627881] [] netlink_rcv_skb+0x37/0x78 27 | [ 447.627891] [] genl_rcv+0x1e/0x25 28 | [ 447.627898] [] netlink_unicast+0xc3/0x12d 29 | [ 447.627907] [] netlink_sendmsg+0x1e9/0x213 30 | [ 447.627915] [] sock_sendmsg+0x79/0x96 31 | [ 447.627926] [] __sys_sendmsg+0x180/0x215 32 | [ 447.627934] [] sys_sendmsg+0x3b/0x52 33 | [ 447.627941] [] sys_socketcall+0x238/0x2a2 34 | [ 447.627949] [] sysenter_do_call+0x12/0x38 35 | [ 447.627959] irq event stamp: 1929200 36 | [ 447.627963] hardirqs last enabled at (1929200): [] tasklet_hi_action+0x3e/0xbf 37 | [ 447.627972] hardirqs last disabled at (1929199): [] tasklet_hi_action+0x15/0xbf 38 | [ 447.627981] softirqs last enabled at (1929196): [] _local_bh_enable+0x12/0x14 39 | [ 447.627989] softirqs last disabled at (1929197): [] do_softirq+0x63/0xb8 40 | [ 447.627999] 41 | [ 447.627999] other info that might help us debug this: 42 | [ 447.628004] Possible unsafe locking scenario: 43 | [ 447.628004] 44 | [ 447.628009] CPU0 45 | [ 447.628012] ---- 46 | [ 447.628016] lock(&(&ah->block)->rlock); 47 | [ 447.628023] 48 | [ 447.628027] lock(&(&ah->block)->rlock); 49 | [ 447.628034] 50 | [ 447.628034] *** DEADLOCK *** 51 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-07: -------------------------------------------------------------------------------- 1 | [ 99.408388] ============================================================================= 2 | [ 99.408393] BUG kmalloc-64 (Not tainted): Poison overwritten 3 | [ 99.408394] ----------------------------------------------------------------------------- 4 | [ 99.408394] 5 | [ 99.408398] INFO: 0xf2751962-0xf2751995. First byte 0x98 instead of 0x6b 6 | [ 99.408402] INFO: Allocated in 0xfdc88c28 age=79 cpu=0 pid=1329 7 | [ 99.408407] __slab_alloc.isra.50.constprop.56+0x49f/0x533 8 | [ 99.408410] kmem_cache_alloc_trace+0x10d/0x140 9 | [ 99.408412] 0xfdc88c28 10 | [ 99.408414] 0xfdc898cc 11 | [ 99.408417] do_one_initcall+0x112/0x160 12 | [ 99.408420] sys_init_module+0xe6d/0x1bc0 13 | [ 99.408422] sysenter_do_call+0x12/0x28 14 | [ 99.408427] INFO: Freed in hotkey_exit+0x50/0xb0 [thinkpad_acpi] age=14 cpu=1 pid=1333 15 | [ 99.408429] __slab_free+0x3d/0x30b 16 | [ 99.408431] kfree+0x129/0x140 17 | [ 99.408435] hotkey_exit+0x50/0xb0 [thinkpad_acpi] 18 | [ 99.408438] ibm_exit+0xe3/0x1a0 [thinkpad_acpi] 19 | [ 99.408441] thinkpad_acpi_module_exit+0x35/0x208 [thinkpad_acpi] 20 | [ 99.408443] sys_delete_module+0x11f/0x280 21 | [ 99.408445] sysenter_do_call+0x12/0x28 22 | [ 99.408447] INFO: Slab 0xf4d5ea20 objects=17 used=17 fp=0x (null) flags=0x40000080 23 | [ 99.408449] INFO: Object 0xf2751960 @offset=2400 fp=0xf2751780 24 | [ 99.408449] 25 | [ 99.408452] Bytes b4 f2751950: 64 02 00 00 ae ce fe ff 5a 5a 5a 5a 5a 5a 5a 5a d.......ZZZZZZZZ 26 | [ 99.408454] Object f2751960: 6b 6b 98 00 ec 00 8e 00 ee 00 6b 6b e3 00 bf 00 kk........kk.... 27 | [ 99.408456] Object f2751970: c2 00 6b 6b 6b 6b cd 00 6b 6b 6b 6b 6b 6b e1 00 ..kkkk..kkkkkk.. 28 | [ 99.408458] Object f2751980: e0 00 e4 00 6b 6b 74 01 73 00 72 00 71 00 94 00 ....kkt.s.r.q... 29 | [ 99.408460] Object f2751990: 6b 6b 6b 6b f8 00 6b 6b 6b 6b 6b 6b 6b 6b 6b a5 kkkk..kkkkkkkkk. 30 | [ 99.408462] Redzone f27519a0: bb bb bb bb .... 31 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-08: -------------------------------------------------------------------------------- 1 | ============================================= 2 | [ INFO: possible recursive locking detected ] 3 | 3.4.0 #37 Tainted: G W 4 | --------------------------------------------- 5 | filemonkey/122 is trying to acquire lock: 6 | (s_active#13){++++.+}, at: [] sysfs_remove_dir+0x9c/0xb4 7 | 8 | but task is already holding lock: 9 | (s_active#13){++++.+}, at: [] sysfs_write_file+0xe8/0x140 10 | 11 | other info that might help us debug this: 12 | Possible unsafe locking scenario: 13 | 14 | CPU0 15 | ---- 16 | lock(s_active#13); 17 | lock(s_active#13); 18 | 19 | *** DEADLOCK *** 20 | 21 | May be due to missing lock nesting notation 22 | 23 | 2 locks held by filemonkey/122: 24 | #0: (&buffer->mutex){+.+.+.}, at: [] sysfs_write_file+0x28/0x140 25 | #1: (s_active#13){++++.+}, at: [] sysfs_write_file+0xe8/0x140 26 | 27 | stack backtrace: 28 | [] (unwind_backtrace+0x0/0x120) from [] (validate_chain+0x6f8/0x1054) 29 | [] (validate_chain+0x6f8/0x1054) from [] (__lock_acquire+0x81c/0x8d8) 30 | [] (__lock_acquire+0x81c/0x8d8) from [] (lock_acquire+0x18c/0x1e8) 31 | [] (lock_acquire+0x18c/0x1e8) from [] (sysfs_addrm_finish+0xd0/0x180) 32 | [] (sysfs_addrm_finish+0xd0/0x180) from [] (sysfs_remove_dir+0x9c/0xb4) 33 | [] (sysfs_remove_dir+0x9c/0xb4) from [] (kobject_del+0x10/0x38) 34 | [] (kobject_del+0x10/0x38) from [] (kobject_release+0xf0/0x194) 35 | [] (kobject_release+0xf0/0x194) from [] (cpufreq_cpu_put+0xc/0x24) 36 | [] (cpufreq_cpu_put+0xc/0x24) from [] (store+0x6c/0x74) 37 | [] (store+0x6c/0x74) from [] (sysfs_write_file+0x10c/0x140) 38 | [] (sysfs_write_file+0x10c/0x140) from [] (vfs_write+0xb0/0x128) 39 | [] (vfs_write+0xb0/0x128) from [] (sys_write+0x3c/0x68) 40 | [] (sys_write+0x3c/0x68) from [] (ret_fast_syscall+0x0/0x3c) 41 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-09: -------------------------------------------------------------------------------- 1 | =============================== 2 | [ INFO: suspicious RCU usage. ] 3 | 3.4.0 #3275 Tainted: G W 4 | ------------------------------- 5 | include/linux/rcupdate.h:729 rcu_read_lock() used illegally while idle! 6 | 7 | other info that might help us debug this: 8 | 9 | RCU used illegally from idle CPU! 10 | rcu_scheduler_active = 1, debug_locks = 0 11 | RCU used illegally from extended quiescent state! 12 | 4 locks held by swapper/2/0: 13 | #0: ((cpu_died).wait.lock){......}, at: [] complete+0x1c/0x5c 14 | #1: (&p->pi_lock){-.-.-.}, at: [] try_to_wake_up+0x2c/0x388 15 | #2: (&rq->lock){-.-.-.}, at: [] try_to_wake_up+0x130/0x388 16 | #3: (rcu_read_lock){.+.+..}, at: [] cpuacct_charge+0x28/0x1f4 17 | 18 | stack backtrace: 19 | [] (unwind_backtrace+0x0/0x12c) from [] (cpuacct_charge+0x94/0x1f4) 20 | [] (cpuacct_charge+0x94/0x1f4) from [] (update_curr+0x24c/0x2c8) 21 | [] (update_curr+0x24c/0x2c8) from [] (enqueue_task_fair+0x50/0x194) 22 | [] (enqueue_task_fair+0x50/0x194) from [] (enqueue_task+0x30/0x34) 23 | [] (enqueue_task+0x30/0x34) from [] (ttwu_activate+0x14/0x38) 24 | [] (ttwu_activate+0x14/0x38) from [] (try_to_wake_up+0x178/0x388) 25 | [] (try_to_wake_up+0x178/0x388) from [] (__wake_up_common+0x34/0x78) 26 | [] (__wake_up_common+0x34/0x78) from [] (complete+0x48/0x5c) 27 | [] (complete+0x48/0x5c) from [] (cpu_die+0x2c/0x58) 28 | [] (cpu_die+0x2c/0x58) from [] (cpu_idle+0x64/0xfc) 29 | [] (cpu_idle+0x64/0xfc) from [<80208160>] (0x80208160) 30 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-10: -------------------------------------------------------------------------------- 1 | ============================================ 2 | INFO: possible recursive locking detected ] 3 | .4.4-Cavium-Octeon+ #313 Not tainted 4 | -------------------------------------------- 5 | worker/u:1/36 is trying to acquire lock: 6 | &bus->mdio_lock){+.+...}, at: [] mdio_mux_read+0x38/0xa0 7 | 8 | ut task is already holding lock: 9 | (&bus->mdio_lock){+.+...}, at: [] mdiobus_read+0x44/0x88 10 | 11 | ther info that might help us debug this: 12 | Possible unsafe locking scenario: 13 | 14 | CPU0 15 | ---- 16 | lock(&bus->mdio_lock); 17 | lock(&bus->mdio_lock); 18 | 19 | *** DEADLOCK *** 20 | 21 | May be due to missing lock nesting notation 22 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-11: -------------------------------------------------------------------------------- 1 | [ 1526.520230] =============================== 2 | [ 1526.520230] [ INFO: suspicious RCU usage. ] 3 | [ 1526.520230] 3.5.0-rc1+ #12 Not tainted 4 | [ 1526.520230] ------------------------------- 5 | [ 1526.520230] /c/kernel-tests/mm/include/linux/rcupdate.h:436 Illegal context switch in RCU read-side critical section! 6 | [ 1526.520230] 7 | [ 1526.520230] other info that might help us debug this: 8 | [ 1526.520230] 9 | [ 1526.520230] 10 | [ 1526.520230] rcu_scheduler_active = 1, debug_locks = 0 11 | [ 1526.520230] 3 locks held by net.agent/3279: 12 | [ 1526.520230] #0: (&mm->mmap_sem){++++++}, at: [] do_page_fault+0x193/0x390 13 | [ 1526.520230] #1: (panic_lock){+.+...}, at: [] panic+0x37/0x1d3 14 | [ 1526.520230] #2: (rcu_read_lock){.+.+..}, at: [] rcu_lock_acquire+0x0/0x29 15 | [ 1526.520230] 16 | [ 1526.520230] stack backtrace: 17 | [ 1526.520230] Pid: 3279, comm: net.agent Not tainted 3.5.0-rc1+ #12 18 | [ 1526.520230] Call Trace: 19 | [ 1526.520230] [] lockdep_rcu_suspicious+0x109/0x112 20 | [ 1526.520230] [] rcu_preempt_sleep_check+0x45/0x47 21 | [ 1526.520230] [] __might_sleep+0x1e/0x19a 22 | [ 1526.520230] [] down_write+0x26/0x81 23 | [ 1526.520230] [] led_trigger_unregister+0x1f/0x9c 24 | [ 1526.520230] [] heartbeat_reboot_notifier+0x15/0x19 25 | [ 1526.520230] [] notifier_call_chain+0x96/0xcd 26 | [ 1526.520230] [] __atomic_notifier_call_chain+0x8e/0xff 27 | [ 1526.520230] [] ? kmsg_dump+0x37/0x1eb 28 | [ 1526.520230] [] atomic_notifier_call_chain+0x14/0x16 29 | [ 1526.520230] [] panic+0xe8/0x1d3 30 | [ 1526.520230] [] out_of_memory+0x15d/0x1d3 31 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-12: -------------------------------------------------------------------------------- 1 | ============================================= 2 | [ INFO: possible recursive locking detected ] 3 | 3.4.0 #3257 Tainted: G W 4 | --------------------------------------------- 5 | swapper/0/1 is trying to acquire lock: 6 | (&rdev->mutex){+.+.+.}, at: [] regulator_get_voltage+0x18/0x38 7 | 8 | but task is already holding lock: 9 | (&rdev->mutex){+.+.+.}, at: [] regulator_set_optimum_mode+0x24/0x224 10 | 11 | other info that might help us debug this: 12 | Possible unsafe locking scenario: 13 | 14 | CPU0 15 | ---- 16 | lock(&rdev->mutex); 17 | lock(&rdev->mutex); 18 | 19 | *** DEADLOCK *** 20 | 21 | May be due to missing lock nesting notation 22 | 23 | 3 locks held by swapper/0/1: 24 | #0: (&__lockdep_no_validate__){......}, at: [] __driver_attach+0x40/0x8c 25 | #1: (&__lockdep_no_validate__){......}, at: [] __driver_attach+0x50/0x8c 26 | #2: (&rdev->mutex){+.+.+.}, at: [] regulator_set_optimum_mode+0x24/0x224 27 | 28 | stack backtrace: 29 | [] (unwind_backtrace+0x0/0x12c) from [] (validate_chain+0x760/0x1080) 30 | [] (validate_chain+0x760/0x1080) from [] (__lock_acquire+0x950/0xa10) 31 | [] (__lock_acquire+0x950/0xa10) from [] (lock_acquire+0x18c/0x1e8) 32 | [] (lock_acquire+0x18c/0x1e8) from [] (mutex_lock_nested+0x68/0x3c4) 33 | [] (mutex_lock_nested+0x68/0x3c4) from [] (regulator_get_voltage+0x18/0x38) 34 | [] (regulator_get_voltage+0x18/0x38) from [] (regulator_set_optimum_mode+0xa4/0x224) 35 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-14: -------------------------------------------------------------------------------- 1 | ==================================== 2 | BUG: bad unlock balance detected! ] 3 | .4.0+ #288 Not tainted 4 | ------------------------------------ 5 | io/17706 is trying to release lock (&(&q->__queue_lock)->rlock) at: 6 | ] blk_queue_bio+0x2a2/0x380 7 | ut there are no more locks to release! 8 | 9 | ther info that might help us debug this: 10 | lock held by fio/17706: 11 | #0: (&(&vblk->lock)->rlock){......}, at: [] 12 | et_request_wait+0x19a/0x250 13 | 14 | tack backtrace: 15 | id: 17706, comm: fio Not tainted 3.4.0+ #288 16 | all Trace: 17 | [] ? blk_queue_bio+0x2a2/0x380 18 | [] print_unlock_inbalance_bug+0xf9/0x100 19 | [] lock_release_non_nested+0x1df/0x330 20 | [] ? dio_bio_end_aio+0x34/0xc0 21 | [] ? bio_check_pages_dirty+0x85/0xe0 22 | [] ? dio_bio_end_aio+0xb1/0xc0 23 | [] ? blk_queue_bio+0x2a2/0x380 24 | [] ? blk_queue_bio+0x2a2/0x380 25 | [] lock_release+0xd9/0x250 26 | [] _raw_spin_unlock_irq+0x23/0x40 27 | [] blk_queue_bio+0x2a2/0x380 28 | [] generic_make_request+0xca/0x100 29 | [] submit_bio+0x76/0xf0 30 | [] ? set_page_dirty_lock+0x3c/0x60 31 | [] ? bio_set_pages_dirty+0x51/0x70 32 | [] do_blockdev_direct_IO+0xbf8/0xee0 33 | [] ? blkdev_get_block+0x80/0x80 34 | [] __blockdev_direct_IO+0x55/0x60 35 | [] ? blkdev_get_block+0x80/0x80 36 | [] blkdev_direct_IO+0x57/0x60 37 | [] ? blkdev_get_block+0x80/0x80 38 | [] generic_file_aio_read+0x70e/0x760 39 | [] ? __lock_acquire+0x215/0x5a0 40 | [] ? aio_run_iocb+0x54/0x1a0 41 | [] ? grab_cache_page_nowait+0xc0/0xc0 42 | [] aio_rw_vect_retry+0x7c/0x1e0 43 | [] ? aio_fsync+0x30/0x30 44 | [] aio_run_iocb+0x66/0x1a0 45 | [] do_io_submit+0x6f0/0xb80 46 | [] ? trace_hardirqs_on_thunk+0x3a/0x3f 47 | [] sys_io_submit+0x10/0x20 48 | [] system_call_fastpath+0x16/0x1b 49 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-16: -------------------------------------------------------------------------------- 1 | [ 45.153294] ===================================== 2 | [ 45.154784] [ BUG: bad unlock balance detected! ] 3 | [ 45.155591] 3.5.0-rc1-00002-gb22b1f1 #124 Not tainted 4 | [ 45.155591] ------------------------------------- 5 | [ 45.155591] flush-254:16/2499 is trying to release lock (&(&wb->list_lock)->rlock) at: 6 | [ 45.155591] [] writeback_sb_inodes+0x160/0x327 7 | [ 45.155591] but there are no more locks to release! 8 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-18: -------------------------------------------------------------------------------- 1 | =================================================== 2 | [ INFO: suspicious rcu_dereference_check() usage. ] 3 | --------------------------------------------------- 4 | net/mac80211/agg-rx.c:148 invoked rcu_dereference_check() without protection! 5 | 6 | other info that might help us debug this: 7 | 8 | rcu_scheduler_active = 1, debug_locks = 1 9 | 1 lock held by arecord/11226: 10 | #0: (&tid_agg_rx->session_timer){+.-...}, at: [] call_timer_fn+0x0/0x360 11 | 12 | stack backtrace: 13 | Pid: 11226, comm: arecord Not tainted 3.1.0-kml #16 14 | Call Trace: 15 | [] lockdep_rcu_dereference+0xa4/0xc0 16 | [] sta_rx_agg_session_timer_expired+0xc9/0x110 [mac80211] 17 | [] ? ieee80211_process_addba_resp+0x220/0x220 [mac80211] 18 | [] call_timer_fn+0x8a/0x360 19 | [] ? init_timer_deferrable_key+0x30/0x30 20 | [] ? _raw_spin_unlock_irq+0x30/0x70 21 | [] run_timer_softirq+0x139/0x310 22 | [] ? put_lock_stats.isra.25+0xe/0x40 23 | [] ? lock_release_holdtime.part.26+0xdc/0x160 24 | [] ? ieee80211_process_addba_resp+0x220/0x220 [mac80211] 25 | [] __do_softirq+0xc8/0x3c0 26 | [] ? tick_dev_program_event+0x48/0x110 27 | [] ? tick_program_event+0x1f/0x30 28 | [] ? putname+0x35/0x50 29 | [] call_softirq+0x1c/0x30 30 | [] do_softirq+0xa5/0xe0 31 | [] irq_exit+0xae/0xe0 32 | [] smp_apic_timer_interrupt+0x6b/0x98 33 | [] apic_timer_interrupt+0x73/0x80 34 | [] ? free_debug_processing+0x1a1/0x1d5 35 | [] ? putname+0x35/0x50 36 | [] __slab_free+0x31/0x2ca 37 | [] ? _raw_spin_unlock_irqrestore+0x4a/0x90 38 | [] ? __debug_check_no_obj_freed+0x15f/0x210 39 | [] ? lock_release_nested+0x84/0xc0 40 | [] ? kmem_cache_free+0x105/0x250 41 | [] ? putname+0x35/0x50 42 | [] ? putname+0x35/0x50 43 | [] kmem_cache_free+0x23f/0x250 44 | [] putname+0x35/0x50 45 | [] do_sys_open+0x16d/0x1d0 46 | [] sys_open+0x20/0x30 47 | [] system_call_fastpath+0x16/0x1b 48 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-19: -------------------------------------------------------------------------------- 1 | ============================================================================= 2 | BUG numa_policy (Not tainted): Poison overwritten 3 | ----------------------------------------------------------------------------- 4 | 5 | INFO: 0xffff880146498250-0xffff880146498250. First byte 0x6a instead of 0x6b 6 | INFO: Allocated in mpol_new+0xa3/0x140 age=46310 cpu=6 pid=32154 7 | __slab_alloc+0x3d3/0x445 8 | kmem_cache_alloc+0x29d/0x2b0 9 | mpol_new+0xa3/0x140 10 | sys_mbind+0x142/0x620 11 | system_call_fastpath+0x16/0x1b 12 | INFO: Freed in __mpol_put+0x27/0x30 age=46268 cpu=6 pid=32154 13 | __slab_free+0x2e/0x1de 14 | kmem_cache_free+0x25a/0x260 15 | __mpol_put+0x27/0x30 16 | remove_vma+0x68/0x90 17 | exit_mmap+0x118/0x140 18 | mmput+0x73/0x110 19 | exit_mm+0x108/0x130 20 | do_exit+0x162/0xb90 21 | do_group_exit+0x4f/0xc0 22 | sys_exit_group+0x17/0x20 23 | system_call_fastpath+0x16/0x1b 24 | INFO: Slab 0xffffea0005192600 objects=27 used=27 fp=0x (null) flags=0x20000000004080 25 | INFO: Object 0xffff880146498250 @offset=592 fp=0xffff88014649b9d0 26 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-20: -------------------------------------------------------------------------------- 1 | ====================================================== 2 | [ INFO: possible circular locking dependency detected ] 3 | 3.4.0-rc4-24406-g841e6a6 #121 Not tainted 4 | ------------------------------------------------------- 5 | bash/1556 is trying to acquire lock: 6 | (&sb->s_type->i_mutex_key#8){+.+.+.}, at: do_lookup+0x267/0x2b1 7 | 8 | but task is already holding lock: 9 | (&sig->cred_guard_mutex){+.+.+.}, at: prepare_bprm_creds+0x2d/0x69 10 | 11 | which lock already depends on the new lock. 12 | 13 | the existing dependency chain (in reverse order) is: 14 | 15 | -> #1 (&sig->cred_guard_mutex){+.+.+.}: 16 | validate_chain+0x444/0x4f4 17 | __lock_acquire+0x387/0x3f8 18 | lock_acquire+0x12b/0x158 19 | __mutex_lock_common+0x56/0x3a9 20 | mutex_lock_killable_nested+0x40/0x45 21 | lock_trace+0x24/0x59 22 | proc_map_files_lookup+0x5a/0x165 23 | __lookup_hash+0x52/0x73 24 | do_lookup+0x276/0x2b1 25 | walk_component+0x3d/0x114 26 | do_last+0xfc/0x540 27 | path_openat+0xd3/0x306 28 | do_filp_open+0x3d/0x89 29 | do_sys_open+0x74/0x106 30 | sys_open+0x21/0x23 31 | tracesys+0xdd/0xe2 32 | 33 | -> #0 (&sb->s_type->i_mutex_key#8){+.+.+.}: 34 | check_prev_add+0x6a/0x1ef 35 | validate_chain+0x444/0x4f4 36 | __lock_acquire+0x387/0x3f8 37 | lock_acquire+0x12b/0x158 38 | __mutex_lock_common+0x56/0x3a9 39 | mutex_lock_nested+0x40/0x45 40 | do_lookup+0x267/0x2b1 41 | walk_component+0x3d/0x114 42 | link_path_walk+0x1f9/0x48f 43 | path_openat+0xb6/0x306 44 | do_filp_open+0x3d/0x89 45 | open_exec+0x25/0xa0 46 | do_execve_common+0xea/0x2f9 47 | do_execve+0x43/0x45 48 | sys_execve+0x43/0x5a 49 | stub_execve+0x6c/0xc0 50 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-23: -------------------------------------------------------------------------------- 1 | [ 130.891594] ================================================ 2 | [ 130.894569] [ BUG: lock held when returning to user space! ] 3 | [ 130.897257] 3.4.0-rc5-next-20120501-sasha #104 Tainted: G W 4 | [ 130.900336] ------------------------------------------------ 5 | [ 130.902996] trinity/8384 is leaving the kernel with locks still held! 6 | [ 130.906106] 1 lock held by trinity/8384: 7 | [ 130.907924] #0: (sk_lock-AF_INET){+.+.+.}, at: [] l2tp_ip_sendmsg+0x2f/0x550 8 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-26: -------------------------------------------------------------------------------- 1 | ======================================================= 2 | [ INFO: possible circular locking dependency detected ] 3 | 3.0.21-00021-g8b33780-dirty #2911 4 | ------------------------------------------------------- 5 | rmmod/125 is trying to acquire lock: 6 | ((&ks->irq_work)){+.+...}, at: [] flush_work+0x0/0xac 7 | 8 | but task is already holding lock: 9 | (&ks->lock){+.+...}, at: [] ks8851_net_stop+0x64/0x138 [ks8851] 10 | 11 | which lock already depends on the new lock. 12 | 13 | the existing dependency chain (in reverse order) is: 14 | 15 | -> #1 (&ks->lock){+.+...}: 16 | [] __lock_acquire+0x940/0x9f8 17 | [] lock_acquire+0x10c/0x130 18 | [] mutex_lock_nested+0x68/0x3dc 19 | [] ks8851_irq_work+0x24/0x46c [ks8851] 20 | [] process_one_work+0x2d8/0x518 21 | [] worker_thread+0x220/0x3a0 22 | [] kthread+0x88/0x94 23 | [] kernel_thread_exit+0x0/0x8 24 | 25 | -> #0 ((&ks->irq_work)){+.+...}: 26 | [] validate_chain+0x914/0x1018 27 | [] __lock_acquire+0x940/0x9f8 28 | [] lock_acquire+0x10c/0x130 29 | [] flush_work+0x4c/0xac 30 | [] ks8851_net_stop+0x6c/0x138 [ks8851] 31 | [] __dev_close_many+0x98/0xcc 32 | [] dev_close_many+0x68/0xd0 33 | [] rollback_registered_many+0xcc/0x2b8 34 | [] rollback_registered+0x28/0x34 35 | [] unregister_netdevice_queue+0x58/0x7c 36 | [] unregister_netdev+0x18/0x20 37 | [] ks8851_remove+0x64/0xb4 [ks8851] 38 | [] spi_drv_remove+0x18/0x1c 39 | [] __device_release_driver+0x7c/0xbc 40 | [] driver_detach+0x8c/0xb4 41 | [] bus_remove_driver+0xb8/0xe8 42 | [] sys_delete_module+0x1e8/0x27c 43 | [] ret_fast_syscall+0x0/0x3c 44 | 45 | other info that might help us debug this: 46 | 47 | Possible unsafe locking scenario: 48 | 49 | CPU0 CPU1 50 | ---- ---- 51 | lock(&ks->lock); 52 | lock((&ks->irq_work)); 53 | lock(&ks->lock); 54 | lock((&ks->irq_work)); 55 | 56 | *** DEADLOCK *** 57 | 58 | 4 locks held by rmmod/125: 59 | #0: (&__lockdep_no_validate__){+.+.+.}, at: [] driver_detach+0x6c/0xb4 60 | #1: (&__lockdep_no_validate__){+.+.+.}, at: [] driver_detach+0x78/0xb4 61 | #2: (rtnl_mutex){+.+.+.}, at: [] unregister_netdev+0xc/0x20 62 | #3: (&ks->lock){+.+...}, at: [] ks8851_net_stop+0x64/0x138 [ks8851] 63 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-28: -------------------------------------------------------------------------------- 1 | [ 21.665087] =============================== 2 | [ 21.669439] [ INFO: suspicious RCU usage. ] 3 | [ 21.673798] 3.2.0-0.0.0.28.36b5ec9-default #2 Not tainted 4 | [ 21.681353] ------------------------------- 5 | [ 21.685864] arch/x86/kernel/cpu/mcheck/mce.c:194 suspicious rcu_dereference_index_check() usage! 6 | [ 21.695013] 7 | [ 21.695014] other info that might help us debug this: 8 | [ 21.695016] 9 | [ 21.703488] 10 | [ 21.703489] rcu_scheduler_active = 1, debug_locks = 1 11 | [ 21.710426] 3 locks held by modprobe/2139: 12 | [ 21.714754] #0: (&__lockdep_no_validate__){......}, at: [] __driver_attach+0x53/0xa0 13 | [ 21.725020] #1: 14 | [ 21.725323] ioatdma: Intel(R) QuickData Technology Driver 4.00 15 | [ 21.733206] (&__lockdep_no_validate__){......}, at: [] __driver_attach+0x61/0xa0 16 | [ 21.743015] #2: (i7core_edac_lock){+.+.+.}, at: [] i7core_probe+0x1f/0x5c0 [i7core_edac] 17 | [ 21.753708] 18 | [ 21.753709] stack backtrace: 19 | [ 21.758429] Pid: 2139, comm: modprobe Not tainted 3.2.0-0.0.0.28.36b5ec9-default #2 20 | [ 21.768253] Call Trace: 21 | [ 21.770838] [] lockdep_rcu_suspicious+0xcd/0x100 22 | [ 21.777366] [] drain_mcelog_buffer+0x191/0x1b0 23 | [ 21.783715] [] mce_register_decode_chain+0x18/0x20 24 | [ 21.790430] [] i7core_register_mci+0x2fb/0x3e4 [i7core_edac] 25 | [ 21.798003] [] i7core_probe+0xd4/0x5c0 [i7core_edac] 26 | [ 21.804809] [] local_pci_probe+0x5b/0xe0 27 | [ 21.810631] [] __pci_device_probe+0xd9/0xe0 28 | [ 21.816650] [] ? get_device+0x14/0x20 29 | [ 21.822178] [] pci_device_probe+0x36/0x60 30 | [ 21.828061] [] really_probe+0x7a/0x2b0 31 | [ 21.833676] [] driver_probe_device+0x63/0xc0 32 | [ 21.839868] [] __driver_attach+0x9b/0xa0 33 | [ 21.845718] [] ? driver_probe_device+0xc0/0xc0 34 | [ 21.852027] [] bus_for_each_dev+0x68/0x90 35 | [ 21.857876] [] driver_attach+0x1c/0x20 36 | [ 21.863462] [] bus_add_driver+0x16d/0x2b0 37 | [ 21.869377] [] driver_register+0x7c/0x160 38 | [ 21.875220] [] __pci_register_driver+0x6a/0xf0 39 | [ 21.881494] [] ? 0xffffffffa01fdfff 40 | [ 21.886846] [] i7core_init+0x47/0x1000 [i7core_edac] 41 | [ 21.893737] [] do_one_initcall+0x3e/0x180 42 | [ 21.899670] [] sys_init_module+0xc5/0x220 43 | [ 21.905542] [] system_call_fastpath+0x16/0x1b 44 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-29: -------------------------------------------------------------------------------- 1 | ============================================================================= 2 | BUG sas_task: Objects remaining on kmem_cache_close() 3 | ----------------------------------------------------------------------------- 4 | 5 | INFO: Slab 0xffffea001f0eba00 objects=34 used=1 fp=0xffff8807c3aecb00 flags=0x8000000000004080 6 | Pid: 22919, comm: modprobe Not tainted 3.2.0-isci+ #2 7 | Call Trace: 8 | [] slab_err+0xb0/0xd2 9 | [] ? free_percpu+0x31/0x117 10 | [] ? kzalloc+0x14/0x16 11 | [] ? kzalloc+0x14/0x16 12 | [] kmem_cache_destroy+0x11d/0x270 13 | [] sas_class_exit+0x10/0x12 [libsas] 14 | [] sys_delete_module+0x1c4/0x23c 15 | [] ? sysret_check+0x2e/0x69 16 | [] ? trace_hardirqs_on_thunk+0x3a/0x3f 17 | [] system_call_fastpath+0x16/0x1b 18 | INFO: Object 0xffff8807c3aed280 @offset=21120 19 | INFO: Allocated in sas_alloc_task+0x22/0x90 [libsas] age=4615311 cpu=2 pid=12966 20 | __slab_alloc.clone.3+0x1d1/0x234 21 | kmem_cache_alloc+0x52/0x10d 22 | sas_alloc_task+0x22/0x90 [libsas] 23 | sas_queuecommand+0x20e/0x230 [libsas] 24 | scsi_send_eh_cmnd+0xd1/0x30c 25 | scsi_eh_try_stu+0x4f/0x6b 26 | scsi_eh_ready_devs+0xba/0x6ef 27 | sas_scsi_recover_host+0xa35/0xab1 [libsas] 28 | scsi_error_handler+0x14b/0x5fa 29 | kthread+0x9d/0xa5 30 | kernel_thread_helper+0x4/0x10 31 | -------------------------------------------------------------------------------- /tests/kerneloopses/gitlog-30: -------------------------------------------------------------------------------- 1 | [ 299.281565] ============================================================================= 2 | [ 299.281634] BUG kmalloc-4096 (Tainted: G I ): Poison overwritten 3 | [ 299.281682] ----------------------------------------------------------------------------- 4 | [ 299.281684] 5 | [ 299.281752] INFO: 0xffff880056c305d0-0xffff880056c305d0. First byte 6 | 0x6a instead of 0x6b 7 | [ 299.281816] INFO: Allocated in scsi_host_alloc+0x4a/0x490 age=1688 8 | cpu=1 pid=2004 9 | [ 299.281870] __slab_alloc+0x617/0x6c1 10 | [ 299.281901] __kmalloc+0x28c/0x2e0 11 | [ 299.281931] scsi_host_alloc+0x4a/0x490 12 | [ 299.281966] usb_stor_probe1+0x5b/0xc40 [usb_storage] 13 | [ 299.282010] storage_probe+0xa4/0xe0 [usb_storage] 14 | [ 299.282062] usb_probe_interface+0x172/0x330 [usbcore] 15 | [ 299.282105] driver_probe_device+0x257/0x3b0 16 | [ 299.282138] __driver_attach+0x103/0x110 17 | [ 299.282171] bus_for_each_dev+0x8e/0xe0 18 | [ 299.282201] driver_attach+0x26/0x30 19 | [ 299.282230] bus_add_driver+0x1c4/0x430 20 | [ 299.282260] driver_register+0xb6/0x230 21 | [ 299.282298] usb_register_driver+0xe5/0x270 [usbcore] 22 | [ 299.282337] 0xffffffffa04ab03d 23 | [ 299.282364] do_one_initcall+0x47/0x230 24 | [ 299.282396] sys_init_module+0xa0f/0x1fe0 25 | [ 299.282429] INFO: Freed in scsi_host_dev_release+0x18a/0x1d0 age=85 26 | cpu=0 pid=2008 27 | [ 299.282482] __slab_free+0x3c/0x2a1 28 | [ 299.282510] kfree+0x296/0x310 29 | [ 299.282536] scsi_host_dev_release+0x18a/0x1d0 30 | [ 299.282574] device_release+0x74/0x100 31 | [ 299.282606] kobject_release+0xc7/0x2a0 32 | [ 299.282637] kobject_put+0x54/0xa0 33 | [ 299.282668] put_device+0x27/0x40 34 | [ 299.282694] scsi_host_put+0x1d/0x30 35 | [ 299.282723] do_scan_async+0x1fc/0x2b0 36 | [ 299.282753] kthread+0xdf/0xf0 37 | [ 299.282782] kernel_thread_helper+0x4/0x10 38 | [ 299.282817] INFO: Slab 0xffffea00015b0c00 objects=7 used=7 fp=0x 39 | (null) flags=0x100000000004080 40 | [ 299.282882] INFO: Object 0xffff880056c30000 @offset=0 fp=0x (null) 41 | [ 299.282884] 42 | -------------------------------------------------------------------------------- /tests/kerneloopses/rhbz-1040900-ppc64-1: -------------------------------------------------------------------------------- 1 | WARNING: at arch/powerpc/platforms/pseries/eeh.c:390 2 | Modules linked in: dm_service_time sd_mod crc_t10dif ibmvfc scsi_transport_fc scsi_tgt ipr(+) libata dm_mirror dm_region_hash dm_log dm_multipath dm_mod 3 | CPU: 1 PID: 191 Comm: systemd-udevd Not tainted 3.10.0-33.el7.ppc64 #1 4 | task: c000000010d4ec70 ti: c000000010f90000 task.ti: c000000010f90000 5 | NIP: c000000008068dfc LR: c000000008068df8 CTR: 00000000015c6170 6 | REGS: c000000010f92e30 TRAP: 0700 Not tainted (3.10.0-33.el7.ppc64) 7 | MSR: 8000000000029032 CR: 48228222 XER: 00000006 8 | SOFTE: 0 9 | CFAR: c00000000873b7c0 10 | GPR00: c000000008068df8 c000000010f930b0 c0000000091380e0 0000000000000015 11 | GPR04: 0000000000000000 0000000000000000 c000000008b030f8 c00000000a122548 12 | GPR08: c000000008af80e0 0000000000000000 0000000001630000 0000000000000000 13 | GPR12: 0000000028228222 c00000000ec50400 c00000000900fcc0 0000000000020000 14 | GPR16: 000000000000fff1 c0000000090669f8 0000000000000000 d000000000900000 15 | GPR20: d000000000900000 d0000000008dd618 c000000010f93bf0 0000000000000000 16 | GPR24: 0000000000000030 0000000000000000 0000000000000000 c00000000931f0c0 17 | GPR28: c000000027ffc858 c00000002669b000 c00000000931f0b8 c000000026083960 18 | NIP [c000000008068dfc] .eeh_dev_check_failure+0x27c/0x390 19 | LR [c000000008068df8] .eeh_dev_check_failure+0x278/0x390 20 | PACATMSCRATCH [800000000280f032] 21 | Call Trace: 22 | [c000000010f930b0] [c000000008068df8] .eeh_dev_check_failure+0x278/0x390 (unreliable) 23 | [c000000010f93150] [c000000008028668] .rtas_read_config+0x128/0x170 24 | [c000000010f931f0] [c0000000084089d8] .pci_bus_read_config_word+0xa8/0xf0 25 | [c000000010f932a0] [c000000008414518] .pci_enable_device_flags+0x88/0x170 26 | [c000000010f93340] [d0000000008c991c] .ipr_probe_ioa+0x6c/0x1390 [ipr] 27 | [c000000010f93470] [d0000000008d308c] .ipr_probe+0x2c/0x520 [ipr] 28 | [c000000010f93540] [c000000008416be0] .local_pci_probe+0x60/0xb0 29 | [c000000010f935d0] [c000000008416ec8] .pci_device_probe+0x198/0x1a0 30 | [c000000010f93680] [c0000000084b00b0] .driver_probe_device+0xd0/0x440 31 | [c000000010f93710] [c0000000084b05ac] .driver_attach+0xfc/0x100 32 | [c000000010f937a0] [c0000000084ad384] .bus_for_each_dev+0x84/0xf0 33 | [c000000010f93840] [c0000000084af894] .driver_attach+0x24/0x40 34 | [c000000010f938b0] [c0000000084af268] .bus_add_driver+0x288/0x380 35 | [c000000010f93950] [c0000000084b0f24] .driver_register+0x94/0x200 36 | [c000000010f939e0] [c000000008416964] .pci_register_driver+0x44/0x60 37 | [c000000010f93a50] [d0000000008d3b64] .ipr_init+0x5c/0x74 [ipr] 38 | [c000000010f93ad0] [c00000000800b8c4] .do_one_initcall+0x154/0x200 39 | [c000000010f93b80] [c00000000810abdc] .load_module+0x10ac/0x14c0 40 | [c000000010f93d40] [c00000000810b1f0] .SyS_finit_module+0xb0/0x100 41 | [c000000010f93e30] [c000000008009ed4] syscall_exit+0x0/0x98 42 | Instruction dump: 43 | 60000000 7f44d378 7f63db78 486c7eb9 60000000 7fe3fb78 48002d4d 60000000 44 | 3c62ff84 38635108 486d2951 60000000 38600001 4bfffe00 60000000 45 | -------------------------------------------------------------------------------- /tests/kerneloopses/rhbz-1040900-s390x-1: -------------------------------------------------------------------------------- 1 | [16164.389384] will_oops: module verification failed: signature and/or required key missing - tainting kernel 2 | [16164.389552] will_oops loadedThis kernel oops is brought to you by will_oops. 3 | [16164.389572] ------------[ cut here ]------------ 4 | [16164.389575] WARNING: at /tmp/will_oops.VBwBJthHLD/will_oops.c:11 5 | [16164.389576] Modules linked in: will_oops(OF+) sg qeth_l2 vmur nfsd auth_rpcgss nfs_acl lockd sunrpc xfs libcrc32c dasd_fba_mod dasd_eckd_mod dasd_mod lcs qeth ctcm qdio ccwgroup fsm dm_mirror dm_region_hash dm_log dm_mod 6 | [16164.389606] CPU: 0 PID: 32037 Comm: insmod Tainted: GF O-------------- 3.10.0-54.0.1.el7.s390x #1 7 | [16164.389610] task: 000000007ffa9998 ti: 0000000059e1c000 task.ti: 0000000059e1c000 8 | [16164.389614] Krnl PSW : 0704f00180000000 000003ff8086d03a (will_oops_init+0x3a/0x1000 [will_oops]) 9 | [16164.389625] R:0 T:1 IO:1 EX:1 Key:0 M:1 W:0 P:0 AS:3 CC:3 PM:0 EA:3 10 | Krnl GPRS: 0000000000010000 070000000020db8e 0000000000000030 00000000000000d7 11 | [16164.389635] 000003ff8086d036 0400000000000000 0000000000000000 000003ff00000000 12 | [16164.398601] 000003ff8086d000 000003ff8086a228 000003ff8086a050 000003ff8086d000 13 | [16164.398605] 0000000000000000 00000000005e9fa8 000003ff8086d036 0000000059e1fc68 14 | [16164.398615] Krnl Code: 000003ff8086d02a: c020ffffe006 larl %r2,3ff80869036 15 | 000003ff8086d030: c0e5ffffd7ec brasl %r14,3ff80868008 16 | #000003ff8086d036: a7f40001 brc 15,3ff8086d038 17 | >000003ff8086d03a: a7290000 lghi %r2,0 18 | 000003ff8086d03e: ebeff0a00004 lmg %r14,%r15,160(%r15) 19 | 000003ff8086d044: 07fe bcr 15,%r14 20 | 000003ff8086d046: 0707 bcr 0,%r7 21 | 000003ff8086d048: 0000 unknown 22 | [16164.398666] Call Trace: 23 | [16164.398670] ([<000003ff8086d036>] will_oops_init+0x36/0x1000 [will_oops]) 24 | [16164.398685] [<000000000010014e>] do_one_initcall+0xce/0x160 25 | [16164.398692] [<00000000001ab224>] load_module+0x1414/0x19f4 26 | [16164.398699] [<00000000001ab9b2>] SyS_finit_module+0x8e/0xc4 27 | [16164.400545] [<00000000005db6f4>] sysc_tracego+0x14/0x1a 28 | [16164.400552] [<000003fffd4a1d92>] 0x3fffd4a1d92 29 | [16164.400586] Last Breaking-Event-Address: 30 | [16164.400588] [<000003ff8086d036>] will_oops_init+0x36/0x1000 [will_oops] 31 | [16164.400600] ---[ end trace 4e37b1eb61ae9844 ]--- 32 | 33 | -------------------------------------------------------------------------------- /tests/kerneloopses/rhbz-1040900-s390x-2: -------------------------------------------------------------------------------- 1 | kernel BUG at drivers/scsi/scsi_lib.c:660! 2 | illegal operation: 0001 [#1] SMP 3 | Modules linked in: foo blah 4 | CPU: 0 PID: 10721 Comm: systemd-udevd Not tainted 3.69.69-69.0.fit.s390x #1 5 | task: 000000006d639110 ti: 000000006ef48000 task.ti: 000000006ef48000 6 | Krnl PSW : 0404c00180000000 0000000000431f8e (scsi_alloc_sgtable+0x62/0x7c) 7 | R:0 T:1 IO:0 EX:0 Key:0 M:1 W:0 P:0 AS:3 CC:0 PM:0 EA:3\x0aKrnl GPRS: 000000000c7fff88 000000006ad08600 000000006e8e2078 0000000000000000 8 | 0000000000000020 0000000000000000 0000000000001000 000000000c7fff80 9 | 0000000000000000 000000006e8e2078 0000000000000020 0000000000000000 10 | 000000006e8e2078 000000006ad09200 000000006ef4b8b0 000000006ef4b858 11 | Krnl Code: 0000000000433f82: eb6ff0a00004\x09lmg\x09%r8,%r15,160(%r15)\x0a 0000000000431f88: 00f7\x08\x08acr\x0915,%r4\x0a #0000000000431f8a: a7f88781\x09\x09brc\x0915,431f8c\x0a >0000000000431f8e: b904002c\x09\x09lgr\x09%r2,%r12\x0a 0000000000431f92: a7390080\x09\x09lghi\x09%r3,128\x0a 0000000000431f96: c040fffff95f\x09larl\x09%r4,431254\x0a 0000000000431f9c: c0e5fffc7c48\x09brasl\x09%r14,3c182c\x0a 0000000000431fa2: a7f4ffeb\x09\x09brc\x0915,431f78 12 | Call Trace: 13 | ([<00000000027f8000>] 0x27f8000) 14 | [<0000000000432114>] scsi_init_io+0xdc/0x184 15 | [<000003ff808bd352>] sd_prep_fn+0xfa/0xd1c [sd_mod] 16 | [<00000000003813e4>] blk_peek_request+0xfc/0x25c 17 | [<000000000043250c>] scsi_request_fn+0x64/0x620 18 | [<000000000037abaa>] __blk_run_queue+0x52/0x68 19 | [<000000000037d416>] queue_unplugged+0x42/0xbc 20 | [<000000000038191c>] blk_flush_plug_list+0x24c/0x2cc 21 | [<0000000000381dc0>] blk_finish_plug+0x2c/0x58 22 | [<000000000021cfcc>] __do_page_cache_readahead+0x1f4/0x294 23 | [<000000000021d724>] force_page_cache_readahead+0xbc/0x114 24 | [<0000000000210ee2>] generic_file_aio_read+0x5c2/0x844 25 | [<000000000028259e>] do_sync_read+0x86/0xc0 26 | [<0000000000282caa>] vfs_read+0x82/0x17c 27 | [<000000000028390a>] SyS_read+0x5e/0xac 28 | [<00000000005db5cc>] sysc_nr_ok+0x22/0x28 29 | [<0000004e15e926dc>] 0x4e15e926dc 30 | Last Breaking-Event-Address: 31 | [<0000000000431f8a>] scsi_alloc_sgtable+0x5e/0x7c 32 | -------------------------------------------------------------------------------- /tests/kerneloopses/rhbz-836206: -------------------------------------------------------------------------------- 1 | [ 120.825464] BUG: sleeping function called from invalid context at mm/memory.c:3927 2 | [ 120.833021] in_atomic(): 1, irqs_disabled(): 0, pid: 1109, name: NetworkManager 3 | [ 120.833023] INFO: lockdep is turned off. 4 | [ 120.833025] Pid: 1109, comm: NetworkManager Not tainted 3.3.0-0.15.el7.x86_64 #1 5 | [ 120.833026] Call Trace: 6 | [ 120.833031] [] __might_sleep+0x13c/0x200 7 | [ 120.833035] [] might_fault+0x38/0xb0 8 | [ 120.833039] [] ? sock_def_readable+0x30/0x1c0 9 | [ 120.833041] [] put_cmsg+0x6f/0x110 10 | [ 120.833044] [] netlink_recvmsg+0x34b/0x4a0 11 | [ 120.833047] [] ? sock_update_classid+0xe4/0x280 12 | [ 120.833050] [] sock_recvmsg+0xfd/0x130 13 | [ 120.833053] [] ? might_fault+0xa5/0xb0 14 | [ 120.833056] [] ? might_fault+0x5c/0xb0 15 | [ 120.833058] [] __sys_recvmsg+0x146/0x2f0 16 | [ 120.833062] [] ? fget_light+0x62/0x4a0 17 | [ 120.833065] [] ? fget_light+0xf0/0x4a0 18 | [ 120.833067] [] ? fget_light+0x62/0x4a0 19 | [ 120.833070] [] sys_recvmsg+0x49/0x90 20 | --2012-06-28 06:[ 120.833075] [] system_call_fastpath+0x16/0x1b 21 | [ 120.836197] BUG: scheduling while atomic: NetworkManager/1109/0x00000003 22 | [ 120.836198] INFO: lockdep is turned off. 23 | [ 120.836199] Modules linked in: pcspkr dcdbas nfs nfs_acl auth_rpcgss fscache lockd sr_mod cdrom sd_mod crc_t10dif ata_generic pata_acpi bnx2x ata_piix bfa mdio libata libcrc32c bnx2 scsi_transport_fc e1000e megaraid_sas bna scsi_tgt sunrpc xts lrw gf128mul dm_crypt dm_round_robin dm_multipath dm_snapshot dm_mirror dm_region_hash dm_log dm_zero dm_mod linear raid10 raid456 async_raid6_recov async_memcpy async_pq raid6_pq async_xor xor async_tx raid1 raid0 iscsi_ibft iscsi_boot_sysfs edd iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi squashfs cramfs 24 | [ 120.836229] Pid: 1109, comm: NetworkManager Not tainted 3.3.0-0.15.el7.x86_64 #1 25 | [ 120.836230] Call Trace: 26 | [ 120.836234] [] __schedule_bug+0x80/0x85 27 | [ 120.836239] [] __schedule+0x8dd/0x9a0 28 | [ 120.836241] [] schedule+0x3f/0x60 29 | [ 120.836243] [] do_nanosleep+0x9c/0xd0 30 | [ 120.836247] [] hrtimer_nanosleep+0xbb/0x190 31 | [ 120.836249] [] ? update_rmtp+0x70/0x70 32 | [ 120.836251] [] ? hrtimer_start_range_ns+0x14/0x20 33 | [ 120.836254] [] sys_nanosleep+0x5f/0x80 34 | [ 120.836256] [] system_call_fastpath+0x16/0x1b 35 | -------------------------------------------------------------------------------- /tests/kerneloopses/rhbz-865695-0: -------------------------------------------------------------------------------- 1 | kernel BUG at include/net/cfg80211.h:2473! 2 | invalid opcode: 0000 [#1] SMP 3 | Modules linked in: lockd sunrpc rfcomm bnep ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 ip6table_filter ip6_tables nf_conntrack_ipv4 nf_defrag_ipv4 xt_state nf_conntrack iTCO_wdt iTCO_vendor_support hp_wmi sparse_keymap btusb uvcvideo videobuf2_vmalloc videobuf2_memops videobuf2_core bluetooth videodev media snd_hda_codec_idt snd_hda_intel snd_hda_codec snd_hwdep snd_seq coretemp microcode snd_seq_device serio_raw lib80211_crypt_tkip snd_pcm lpc_ich mfd_core wl(PO) crystalhd(C) snd_page_alloc atl1c cfg80211 snd_timer snd rfkill soundcore lib80211 uinput wmi i915 video i2c_algo_bit drm_kms_helper drm i2c_core 4 | Pid: 598, comm: wpa_supplicant Tainted: P C O 3.6.1-1.fc17.i686.PAE #1 Hewlett-Packard HP Mini 110-1100/308F 5 | EIP: 0060:[] EFLAGS: 00210246 CPU: 1 6 | EIP is at wdev_priv.part.8+0x3/0x5 [wl] 7 | EAX: 00000000 EBX: f3cf6120 ECX: f8fc05a0 EDX: f3e16400 8 | ESI: f3e16400 EDI: f3cf6120 EBP: f180dbf8 ESP: f180dbf8 9 | DS: 007b ES: 007b FS: 00d8 GS: 00e0 SS: 0068 10 | CR0: 80050033 CR2: 099db264 CR3: 322aa000 CR4: 000007f0 11 | DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000 12 | DR6: ffff0ff0 DR7: 00000400 13 | Process wpa_supplicant (pid: 598, ti=f180c000 task=f2388000 task.ti=f180c000) 14 | Stack: 15 | f180dc28 f8e3dde1 f180dc10 c09705a8 f8034728 00000119 f8034728 000080d0 16 | f3e16400 f47c1600 00000000 f3cf6120 f180dc5c f8034a38 ffffffff 00000033 17 | 00000003 f47c1600 f3cf6120 f3cf6000 f180dc88 f3e16400 f8043220 f8043640 18 | Call Trace: 19 | [] wl_cfg80211_scan+0x411/0x4a0 [wl] 20 | [] ? mutex_lock+0x18/0x40 21 | [] ? nl80211_trigger_scan+0xc8/0x560 [cfg80211] 22 | [] ? nl80211_trigger_scan+0xc8/0x560 [cfg80211] 23 | [] nl80211_trigger_scan+0x3d8/0x560 [cfg80211] 24 | [] ? __cfg80211_rdev_from_attrs+0x170/0x170 [cfg80211] 25 | [] genl_rcv_msg+0x225/0x280 26 | [] ? genl_rcv+0x30/0x30 27 | [] netlink_rcv_skb+0x86/0xa0 28 | [] genl_rcv+0x1c/0x30 29 | [] netlink_unicast+0x164/0x1e0 30 | [] netlink_sendmsg+0x219/0x370 31 | [] sock_sendmsg+0xa4/0xd0 32 | [] ? get_page_from_freelist+0x358/0x590 33 | [] __sys_sendmsg+0x299/0x2b0 34 | [] ? mem_cgroup_charge_common+0x97/0x100 35 | [] ? lru_cache_add_lru+0x7a/0xa0 36 | [] ? __kunmap_atomic+0x8d/0xe0 37 | [] ? handle_pte_fault+0x4b4/0xad0 38 | [] ? scheduler_tick+0xd5/0x100 39 | [] ? handle_mm_fault+0x1dd/0x280 40 | [] sys_sendmsg+0x3b/0x60 41 | [] sys_socketcall+0x273/0x2d0 42 | [] sysenter_do_call+0x12/0x28 43 | Code: d0 e8 10 20 b3 c7 89 f0 e8 d9 85 ff ff 89 d8 e8 a2 cc 85 c7 31 d2 89 f8 e8 89 2b 91 c7 58 5b 5e 5f 5d c3 55 89 e5 0f 0b 55 89 e5 <0f> 0b 55 89 e5 3e 8d 74 26 00 0f 0b 55 89 e5 3e 8d 74 26 00 0f 44 | EIP: [] wdev_priv.part.8+0x3/0x5 [wl] SS:ESP 0068:f180dbf8 45 | -------------------------------------------------------------------------------- /tests/local.at: -------------------------------------------------------------------------------- 1 | # Source: bison local.at 2 | 3 | # ---------------------------------------- 4 | # AT_COMPILE(OUTPUT, [SOURCES = OUTPUT.c]) 5 | # ---------------------------------------- 6 | # Compile SOURCES into OUTPUT. If OUTPUT does not contain '.', 7 | # assume that we are linking too; this is a hack. 8 | m4_define([AT_COMPILE], 9 | [AT_CHECK([$LIBTOOL --mode=link $CC $CFLAGS m4_bmatch([$1], [[.]], [], [$LDFLAGS ])-o $1 m4_default([$2], [$1.c])[]m4_bmatch([$1], [[.]], [], [ $LIBS])], 10 | 0, [ignore], [ignore])]) 11 | 12 | # ------------------------ 13 | # AT_TESTFUN(NAME, SOURCE) 14 | # ------------------------ 15 | 16 | # Create a test named NAME by compiling and running C file with 17 | # contents SOURCE. The stdout and stderr output of the C program is 18 | # ignored by Autotest. 19 | 20 | m4_define([AT_TESTFUN], 21 | [AT_SETUP($1) 22 | AT_DATA([$1.c], [[#line] __line__ "__file__" 23 | $2]) 24 | AT_COMPILE([$1]) 25 | AT_CHECK([./$1], 0, [ignore], [ignore]) 26 | AT_CHECK([$PRE_AT_CHECK ./$1], 0, [ignore], [ignore]) 27 | AT_CLEANUP]) 28 | 29 | AT_INIT 30 | -------------------------------------------------------------------------------- /tests/problem_dir/.libreport/owner: -------------------------------------------------------------------------------- 1 | 0 -------------------------------------------------------------------------------- /tests/problem_dir/abrt_version: -------------------------------------------------------------------------------- 1 | 2.8.0.43.gf3f1 -------------------------------------------------------------------------------- /tests/problem_dir/analyzer: -------------------------------------------------------------------------------- 1 | abrt-ccpp -------------------------------------------------------------------------------- /tests/problem_dir/architecture: -------------------------------------------------------------------------------- 1 | x86_64 -------------------------------------------------------------------------------- /tests/problem_dir/cgroup: -------------------------------------------------------------------------------- 1 | 11:blkio:/ 2 | 10:pids:/user.slice/user-1000.slice/session-4.scope 3 | 9:cpu,cpuacct:/ 4 | 8:net_cls,net_prio:/ 5 | 7:memory:/ 6 | 6:cpuset:/ 7 | 5:freezer:/ 8 | 4:devices:/user.slice 9 | 3:perf_event:/ 10 | 2:hugetlb:/ 11 | 1:name=systemd:/user.slice/user-1000.slice/session-4.scope 12 | -------------------------------------------------------------------------------- /tests/problem_dir/cmdline: -------------------------------------------------------------------------------- 1 | sleep 1000 -------------------------------------------------------------------------------- /tests/problem_dir/component: -------------------------------------------------------------------------------- 1 | coreutils -------------------------------------------------------------------------------- /tests/problem_dir/core_backtrace: -------------------------------------------------------------------------------- 1 | { "signal": 11 2 | , "executable": "/usr/bin/sleep" 3 | , "only_crash_thread": true 4 | , "stacktrace": 5 | [ { "crash_thread": true 6 | , "frames": 7 | [ { "address": 140598631418400 8 | , "build_id": "fbac2849c88def5897d3d3c1cd5adab0bcc1aec2" 9 | , "build_id_offset": 850464 10 | , "function_name": "__nanosleep" 11 | , "file_name": "/usr/lib64/libc-2.23.so" 12 | } 13 | , { "address": 93917296833631 14 | , "build_id": "34b2e7fddf5ad18542382e4407c92a7c18eb6c9e" 15 | , "build_id_offset": 17503 16 | , "function_name": "rpl_nanosleep" 17 | , "file_name": "/usr/bin/sleep" 18 | } 19 | , { "address": 93917296833216 20 | , "build_id": "34b2e7fddf5ad18542382e4407c92a7c18eb6c9e" 21 | , "build_id_offset": 17088 22 | , "function_name": "xnanosleep" 23 | , "file_name": "/usr/bin/sleep" 24 | } 25 | , { "address": 93917296822397 26 | , "build_id": "34b2e7fddf5ad18542382e4407c92a7c18eb6c9e" 27 | , "build_id_offset": 6269 28 | , "function_name": "main" 29 | , "file_name": "/usr/bin/sleep" 30 | } ] 31 | } ] 32 | } 33 | -------------------------------------------------------------------------------- /tests/problem_dir/count: -------------------------------------------------------------------------------- 1 | 55 -------------------------------------------------------------------------------- /tests/problem_dir/dso_list: -------------------------------------------------------------------------------- 1 | /usr/lib64/libc-2.23.so glibc-2.23.1-5.fc24.x86_64 (Fedora Project) 1460022605 2 | /usr/lib64/ld-2.23.so glibc-2.23.1-5.fc24.x86_64 (Fedora Project) 1460022605 3 | /usr/lib/locale/locale-archive glibc-all-langpacks-2.23.1-5.fc24.x86_64 (Fedora Project) 1460024921 4 | /usr/bin/sleep coreutils-8.25-5.fc24.x86_64 (Fedora Project) 1460022612 5 | -------------------------------------------------------------------------------- /tests/problem_dir/environ: -------------------------------------------------------------------------------- 1 | HOSTNAME=dhcp-24-126.brq.redhat.com 2 | SHELL=/bin/bash 3 | TERM=xterm-256color 4 | HISTSIZE=1000 5 | USER=root 6 | LS_COLORS=rs=0:di=38;5;33:ln=38;5;51:mh=00:pi=40;38;5;11:so=38;5;13:do=38;5;5:bd=48;5;232;38;5;11:cd=48;5;232;38;5;3:or=48;5;232;38;5;9:mi=01;05;37;41:su=48;5;196;38;5;15:sg=48;5;11;38;5;16:ca=48;5;196;38;5;226:tw=48;5;10;38;5;16:ow=48;5;10;38;5;21:st=48;5;21;38;5;15:ex=38;5;40:*.tar=38;5;9:*.tgz=38;5;9:*.arc=38;5;9:*.arj=38;5;9:*.taz=38;5;9:*.lha=38;5;9:*.lz4=38;5;9:*.lzh=38;5;9:*.lzma=38;5;9:*.tlz=38;5;9:*.txz=38;5;9:*.tzo=38;5;9:*.t7z=38;5;9:*.zip=38;5;9:*.z=38;5;9:*.Z=38;5;9:*.dz=38;5;9:*.gz=38;5;9:*.lrz=38;5;9:*.lz=38;5;9:*.lzo=38;5;9:*.xz=38;5;9:*.bz2=38;5;9:*.bz=38;5;9:*.tbz=38;5;9:*.tbz2=38;5;9:*.tz=38;5;9:*.deb=38;5;9:*.rpm=38;5;9:*.jar=38;5;9:*.war=38;5;9:*.ear=38;5;9:*.sar=38;5;9:*.rar=38;5;9:*.alz=38;5;9:*.ace=38;5;9:*.zoo=38;5;9:*.cpio=38;5;9:*.7z=38;5;9:*.rz=38;5;9:*.cab=38;5;9:*.jpg=38;5;13:*.jpeg=38;5;13:*.gif=38;5;13:*.bmp=38;5;13:*.pbm=38;5;13:*.pgm=38;5;13:*.ppm=38;5;13:*.tga=38;5;13:*.xbm=38;5;13:*.xpm=38;5;13:*.tif=38;5;13:*.tiff=38;5;13:*.png=38;5;13:*.svg=38;5;13:*.svgz=38;5;13:*.mng=38;5;13:*.pcx=38;5;13:*.mov=38;5;13:*.mpg=38;5;13:*.mpeg=38;5;13:*.m2v=38;5;13:*.mkv=38;5;13:*.webm=38;5;13:*.ogm=38;5;13:*.mp4=38;5;13:*.m4v=38;5;13:*.mp4v=38;5;13:*.vob=38;5;13:*.qt=38;5;13:*.nuv=38;5;13:*.wmv=38;5;13:*.asf=38;5;13:*.rm=38;5;13:*.rmvb=38;5;13:*.flc=38;5;13:*.avi=38;5;13:*.fli=38;5;13:*.flv=38;5;13:*.gl=38;5;13:*.dl=38;5;13:*.xcf=38;5;13:*.xwd=38;5;13:*.yuv=38;5;13:*.cgm=38;5;13:*.emf=38;5;13:*.ogv=38;5;13:*.ogx=38;5;13:*.aac=38;5;45:*.au=38;5;45:*.flac=38;5;45:*.m4a=38;5;45:*.mid=38;5;45:*.midi=38;5;45:*.mka=38;5;45:*.mp3=38;5;45:*.mpc=38;5;45:*.ogg=38;5;45:*.ra=38;5;45:*.wav=38;5;45:*.oga=38;5;45:*.opus=38;5;45:*.spx=38;5;45:*.xspf=38;5;45: 7 | SUDO_USER=mhabrnal 8 | SUDO_UID=1000 9 | USERNAME=root 10 | PATH=/sbin:/bin:/usr/sbin:/usr/bin 11 | MAIL=/var/spool/mail/mhabrnal 12 | PWD=/var/spool/abrt 13 | LANG=en_US.UTF-8 14 | MODULEPATH=/etc/scl/modulefiles:/usr/share/Modules/modulefiles:/etc/modulefiles:/usr/share/modulefiles 15 | LOADEDMODULES= 16 | 'PS1=[\\[\\e[0;37m\\]\\d \\t\\[\\e[m\\] \\[\\e[0;32m\\]FEDORA_24\\[\\e[m\\]@\\[\\e[0;37m\\]\\u\\[\\e[m\\] \\[\\e[1;31m\\]\\w\\[\\e[m\\]]\\n($?$(if git log -1 --oneline > /dev/null 2>&1; then echo -n \")-(\\[\\e[0;36m\\]\"; git-branch-name; if cnt=$(git cherry 2>/dev/null | wc -l); then if test $cnt -gt 0; then echo -n \" $cnt\"; echo -ne \"\\xdf\\xa1\"; fi; git update-index -q --refresh >/dev/null 2>&1; test -z \"$(git diff-index --name-only HEAD --)\" || (echo -ne \" \\xE2\\x99\\xA5\"); echo \"\\[\\e[m\\]\"; fi; fi)) \\[\\e[1;30m\\]\\\\$ \\[\\e[m\\]' 17 | SHLVL=1 18 | SUDO_COMMAND=/bin/su 19 | HOME=/root 20 | LANGUAGE=en_US 21 | LOGNAME=root 22 | MODULESHOME=/usr/share/Modules 23 | 'LESSOPEN=||/usr/bin/lesspipe.sh %s' 24 | SUDO_GID=1000 25 | 'BASH_FUNC_module()=() { eval `/usr/bin/modulecmd bash $*`\n}' 26 | 'BASH_FUNC_scl()=() { local CMD=$1;\n if [ \"$CMD\" = \"load\" -o \"$CMD\" = \"unload\" ]; then\n eval \"module $@\";\n else\n /usr/bin/scl \"$@\";\n fi\n}' 27 | OLDPWD=/root 28 | _=/bin/sleep 29 | -------------------------------------------------------------------------------- /tests/problem_dir/executable: -------------------------------------------------------------------------------- 1 | /usr/bin/sleep -------------------------------------------------------------------------------- /tests/problem_dir/global_pid: -------------------------------------------------------------------------------- 1 | 19861 -------------------------------------------------------------------------------- /tests/problem_dir/hostname: -------------------------------------------------------------------------------- 1 | dhcp-24-126.brq.redhat.com -------------------------------------------------------------------------------- /tests/problem_dir/kernel: -------------------------------------------------------------------------------- 1 | 4.5.3-300.fc24.x86_64 -------------------------------------------------------------------------------- /tests/problem_dir/last_occurrence: -------------------------------------------------------------------------------- 1 | 1462970611 -------------------------------------------------------------------------------- /tests/problem_dir/limits: -------------------------------------------------------------------------------- 1 | Limit Soft Limit Hard Limit Units 2 | Max cpu time unlimited unlimited seconds 3 | Max file size unlimited unlimited bytes 4 | Max data size unlimited unlimited bytes 5 | Max stack size 8388608 unlimited bytes 6 | Max core file size 0 unlimited bytes 7 | Max resident set unlimited unlimited bytes 8 | Max processes 7923 7923 processes 9 | Max open files 1024 4096 files 10 | Max locked memory 65536 65536 bytes 11 | Max address space unlimited unlimited bytes 12 | Max file locks unlimited unlimited locks 13 | Max pending signals 7923 7923 signals 14 | Max msgqueue size 819200 819200 bytes 15 | Max nice priority 0 0 16 | Max realtime priority 0 0 17 | Max realtime timeout unlimited unlimited us 18 | -------------------------------------------------------------------------------- /tests/problem_dir/maps: -------------------------------------------------------------------------------- 1 | 556ad31d7000-556ad31de000 r-xp 00000000 fd:00 395889 /usr/bin/sleep 2 | 556ad33dd000-556ad33de000 r--p 00006000 fd:00 395889 /usr/bin/sleep 3 | 556ad33de000-556ad33df000 rw-p 00007000 fd:00 395889 /usr/bin/sleep 4 | 556ad4b37000-556ad4b58000 rw-p 00000000 00:00 0 [heap] 5 | 7fdfa4d72000-7fdfab6e5000 r--p 00000000 fd:00 395600 /usr/lib/locale/locale-archive 6 | 7fdfab6e5000-7fdfab8a9000 r-xp 00000000 fd:00 393881 /usr/lib64/libc-2.23.so 7 | 7fdfab8a9000-7fdfabaa9000 ---p 001c4000 fd:00 393881 /usr/lib64/libc-2.23.so 8 | 7fdfabaa9000-7fdfabaad000 r--p 001c4000 fd:00 393881 /usr/lib64/libc-2.23.so 9 | 7fdfabaad000-7fdfabaaf000 rw-p 001c8000 fd:00 393881 /usr/lib64/libc-2.23.so 10 | 7fdfabaaf000-7fdfabab3000 rw-p 00000000 00:00 0 11 | 7fdfabab3000-7fdfabad7000 r-xp 00000000 fd:00 393874 /usr/lib64/ld-2.23.so 12 | 7fdfabcb9000-7fdfabcbc000 rw-p 00000000 00:00 0 13 | 7fdfabcd5000-7fdfabcd6000 rw-p 00000000 00:00 0 14 | 7fdfabcd6000-7fdfabcd7000 r--p 00023000 fd:00 393874 /usr/lib64/ld-2.23.so 15 | 7fdfabcd7000-7fdfabcd8000 rw-p 00024000 fd:00 393874 /usr/lib64/ld-2.23.so 16 | 7fdfabcd8000-7fdfabcd9000 rw-p 00000000 00:00 0 17 | 7ffe68e26000-7ffe68e47000 rw-p 00000000 00:00 0 [stack] 18 | 7ffe68fa2000-7ffe68fa5000 r--p 00000000 00:00 0 [vvar] 19 | 7ffe68fa5000-7ffe68fa7000 r-xp 00000000 00:00 0 [vdso] 20 | ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] 21 | -------------------------------------------------------------------------------- /tests/problem_dir/namespaces: -------------------------------------------------------------------------------- 1 | ipc : default 2 | mnt : default 3 | net : default 4 | pid : default 5 | uts : default 6 | user : default 7 | -------------------------------------------------------------------------------- /tests/problem_dir/open_fds: -------------------------------------------------------------------------------- 1 | 0:/dev/pts/3 2 | pos: 0 3 | flags: 0100002 4 | mnt_id: 22 5 | 6 | 1:/dev/pts/3 7 | pos: 0 8 | flags: 0100002 9 | mnt_id: 22 10 | 11 | 2:/dev/pts/3 12 | pos: 0 13 | flags: 0100002 14 | mnt_id: 22 15 | -------------------------------------------------------------------------------- /tests/problem_dir/os_info: -------------------------------------------------------------------------------- 1 | NAME=Fedora 2 | VERSION="24 (Workstation Edition)" 3 | ID=fedora 4 | VERSION_ID=24 5 | PRETTY_NAME="Fedora 24 (Workstation Edition)" 6 | ANSI_COLOR="0;34" 7 | CPE_NAME="cpe:/o:fedoraproject:fedora:24" 8 | HOME_URL="https://fedoraproject.org/" 9 | BUG_REPORT_URL="https://bugzilla.redhat.com/" 10 | REDHAT_BUGZILLA_PRODUCT="Fedora" 11 | REDHAT_BUGZILLA_PRODUCT_VERSION=24 12 | REDHAT_SUPPORT_PRODUCT="Fedora" 13 | REDHAT_SUPPORT_PRODUCT_VERSION=24 14 | PRIVACY_POLICY_URL=https://fedoraproject.org/wiki/Legal:PrivacyPolicy 15 | VARIANT="Workstation Edition" 16 | VARIANT_ID=workstation 17 | -------------------------------------------------------------------------------- /tests/problem_dir/os_release: -------------------------------------------------------------------------------- 1 | Fedora release 24 (Twenty Four) -------------------------------------------------------------------------------- /tests/problem_dir/package: -------------------------------------------------------------------------------- 1 | coreutils-8.25-5.fc24 -------------------------------------------------------------------------------- /tests/problem_dir/pid: -------------------------------------------------------------------------------- 1 | 19861 -------------------------------------------------------------------------------- /tests/problem_dir/pkg_arch: -------------------------------------------------------------------------------- 1 | x86_64 -------------------------------------------------------------------------------- /tests/problem_dir/pkg_epoch: -------------------------------------------------------------------------------- 1 | 0 -------------------------------------------------------------------------------- /tests/problem_dir/pkg_fingerprint: -------------------------------------------------------------------------------- 1 | 73BD E983 81B4 6521 -------------------------------------------------------------------------------- /tests/problem_dir/pkg_name: -------------------------------------------------------------------------------- 1 | coreutils -------------------------------------------------------------------------------- /tests/problem_dir/pkg_release: -------------------------------------------------------------------------------- 1 | 5.fc24 -------------------------------------------------------------------------------- /tests/problem_dir/pkg_vendor: -------------------------------------------------------------------------------- 1 | Fedora Project -------------------------------------------------------------------------------- /tests/problem_dir/pkg_version: -------------------------------------------------------------------------------- 1 | 8.25 -------------------------------------------------------------------------------- /tests/problem_dir/proc_pid_status: -------------------------------------------------------------------------------- 1 | Name: sleep 2 | State: S (sleeping) 3 | Tgid: 19861 4 | Ngid: 0 5 | Pid: 19861 6 | PPid: 19785 7 | TracerPid: 0 8 | Uid: 0 0 0 0 9 | Gid: 0 0 0 0 10 | FDSize: 256 11 | Groups: 0 12 | NStgid: 19861 13 | NSpid: 19861 14 | NSpgid: 19861 15 | NSsid: 2389 16 | VmPeak: 112372 kB 17 | VmSize: 112372 kB 18 | VmLck: 0 kB 19 | VmPin: 0 kB 20 | VmHWM: 672 kB 21 | VmRSS: 672 kB 22 | RssAnon: 68 kB 23 | RssFile: 604 kB 24 | RssShmem: 0 kB 25 | VmData: 184 kB 26 | VmStk: 136 kB 27 | VmExe: 28 kB 28 | VmLib: 1960 kB 29 | VmPTE: 40 kB 30 | VmPMD: 12 kB 31 | VmSwap: 0 kB 32 | HugetlbPages: 0 kB 33 | Threads: 1 34 | SigQ: 0/7923 35 | SigPnd: 0000000000000000 36 | ShdPnd: 0000000000000000 37 | SigBlk: 0000000000000000 38 | SigIgn: 0000000000000000 39 | SigCgt: 0000000000000000 40 | CapInh: 0000000000000000 41 | CapPrm: 0000003fffffffff 42 | CapEff: 0000003fffffffff 43 | CapBnd: 0000003fffffffff 44 | CapAmb: 0000000000000000 45 | Seccomp: 0 46 | Cpus_allowed: 1 47 | Cpus_allowed_list: 0 48 | Mems_allowed: 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000001 49 | Mems_allowed_list: 0 50 | voluntary_ctxt_switches: 3 51 | nonvoluntary_ctxt_switches: 3 52 | -------------------------------------------------------------------------------- /tests/problem_dir/pwd: -------------------------------------------------------------------------------- 1 | /var/spool/abrt -------------------------------------------------------------------------------- /tests/problem_dir/reason: -------------------------------------------------------------------------------- 1 | sleep killed by SIGSEGV -------------------------------------------------------------------------------- /tests/problem_dir/runlevel: -------------------------------------------------------------------------------- 1 | N 5 2 | -------------------------------------------------------------------------------- /tests/problem_dir/tid: -------------------------------------------------------------------------------- 1 | 19861 -------------------------------------------------------------------------------- /tests/problem_dir/time: -------------------------------------------------------------------------------- 1 | 1462970611 -------------------------------------------------------------------------------- /tests/problem_dir/type: -------------------------------------------------------------------------------- 1 | CCpp -------------------------------------------------------------------------------- /tests/problem_dir/uid: -------------------------------------------------------------------------------- 1 | 0 -------------------------------------------------------------------------------- /tests/problem_dir/username: -------------------------------------------------------------------------------- 1 | root 2 | -------------------------------------------------------------------------------- /tests/problem_dir/uuid: -------------------------------------------------------------------------------- 1 | ee23dfd49c90612e02c51bb32c5316572755730f -------------------------------------------------------------------------------- /tests/problem_dir/var_log_messages: -------------------------------------------------------------------------------- 1 | User Logs: 2 | -- Logs begin at Thu 2016-04-07 11:54:33 CEST, end at Wed 2016-05-11 14:43:31 CEST. -- 3 | May 11 14:43:31 dhcp-24-126.brq.redhat.com audit[19861]: ANOM_ABEND auid=1000 uid=0 gid=0 ses=4 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 pid=19861 comm="sleep" exe="/usr/bin/sleep" sig=11 4 | -------------------------------------------------------------------------------- /tests/programs/a.out: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abrt/satyr/6153441b81708bcb729db4f2d37e9aaf03280a36/tests/programs/a.out -------------------------------------------------------------------------------- /tests/programs/abi_library.c: -------------------------------------------------------------------------------- 1 | // gcc -fPIC -shared -Wl,-soname,libabi_library.so -o libabi_library.so abi_library.c 2 | #include 3 | void test(char *ab) 4 | { 5 | printf("%s", ab); 6 | } 7 | -------------------------------------------------------------------------------- /tests/programs/abi_program.c: -------------------------------------------------------------------------------- 1 | void test(int ab); 2 | 3 | int main(int argc, char **argv) 4 | { 5 | test(10); 6 | return 0; 7 | } 8 | -------------------------------------------------------------------------------- /tests/programs/libabi_library.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abrt/satyr/6153441b81708bcb729db4f2d37e9aaf03280a36/tests/programs/libabi_library.so -------------------------------------------------------------------------------- /tests/programs/null_dereference.bin.x86_64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abrt/satyr/6153441b81708bcb729db4f2d37e9aaf03280a36/tests/programs/null_dereference.bin.x86_64 -------------------------------------------------------------------------------- /tests/programs/null_dereference.c: -------------------------------------------------------------------------------- 1 | int main(int argc, char** argv) 2 | { 3 | int *p = 0; 4 | *p = 10; 5 | return 0; 6 | } 7 | -------------------------------------------------------------------------------- /tests/programs/null_dereference.core.x86_64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/abrt/satyr/6153441b81708bcb729db4f2d37e9aaf03280a36/tests/programs/null_dereference.core.x86_64 -------------------------------------------------------------------------------- /tests/python/misc.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import unittest 4 | from test_helpers import * 5 | 6 | class TestMisc(BindingsTestCase): 7 | def test_demangle(self): 8 | self.assertEqual(satyr.demangle_symbol('f'), 'f') 9 | self.assertEqual(satyr.demangle_symbol('_ZN9wikipedia7article8print_toERSo'), 10 | 'wikipedia::article::print_to(std::ostream&)') 11 | self.assertEqual(satyr.demangle_symbol('_ZN9wikipedia7article6formatEv'), 12 | 'wikipedia::article::format()') 13 | 14 | 15 | if __name__ == '__main__': 16 | unittest.main() 17 | -------------------------------------------------------------------------------- /tests/python/satyr.py: -------------------------------------------------------------------------------- 1 | import sys 2 | import os.path 3 | 4 | oldpath = sys.path 5 | newpath = os.path.join(os.path.dirname(__file__), '../../python/.libs') 6 | sys.path = [newpath] 7 | 8 | from _satyr3 import * 9 | 10 | sys.path = oldpath 11 | del sys, os 12 | del oldpath, newpath 13 | -------------------------------------------------------------------------------- /tests/python/test_helpers.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import unittest 4 | 5 | # should import satyr.py which imports ../../python/.libs/_satyr.so 6 | import satyr 7 | 8 | class BindingsTestCase(unittest.TestCase): 9 | def assertGetSetCorrect(self, obj, attr, orig_val, new_val): 10 | ''' 11 | Check whether getting/setting an attribute works correctly. 12 | ''' 13 | self.assertEqual(obj.__getattribute__(attr), orig_val) 14 | obj.__setattr__(attr, new_val) 15 | self.assertEqual(obj.__getattribute__(attr), new_val) 16 | self.assertRaises(TypeError, obj.__delattr__, attr) 17 | 18 | def assertHashable(self, obj): 19 | ''' 20 | Check whether obj is hashable. 21 | ''' 22 | self.assertTrue(isinstance(hash(obj), int)) 23 | 24 | def load_input_contents(path): 25 | if not os.path.isfile(path): 26 | path = '../' + path 27 | 28 | with open(path, 'r') as f: 29 | return f.read() 30 | 31 | def frame_count(trace): 32 | if hasattr(trace, 'frames'): 33 | return len(trace.frames) 34 | else: 35 | return sum(map(lambda x: len(x.frames), trace.threads)) 36 | 37 | if __name__ == '__main__': 38 | import sys 39 | sys.exit('This module is not meant to be run directly') 40 | -------------------------------------------------------------------------------- /tests/python_bindings.at: -------------------------------------------------------------------------------- 1 | m4_define([AT_TEST_PYTHON], 2 | [AT_SETUP([python3_bindings_for_$1]) 3 | AT_CHECK([if test -n "$SKIP_PYTHON3"; then exit 77; fi]) 4 | AT_CHECK([python3 ../../python/$1.py -v], 0, [ignore], [ignore]) 5 | AT_CLEANUP 6 | ]) 7 | 8 | 9 | AT_BANNER([BINDINGS]) 10 | 11 | AT_TEST_PYTHON([misc]) 12 | AT_TEST_PYTHON([gdb]) 13 | AT_TEST_PYTHON([koops]) 14 | AT_TEST_PYTHON([python]) 15 | AT_TEST_PYTHON([java]) 16 | AT_TEST_PYTHON([javascript]) 17 | AT_TEST_PYTHON([core]) 18 | AT_TEST_PYTHON([ruby]) 19 | AT_TEST_PYTHON([metrics]) 20 | AT_TEST_PYTHON([report]) 21 | -------------------------------------------------------------------------------- /tests/python_stacktraces/python-01: -------------------------------------------------------------------------------- 1 | Traceback (most recent call last): 2 | File "/usr/share/PackageKit/helpers/yum/yumBackend.py", line 1830, in _runYumTransaction 3 | rpmDisplay=rpmDisplay) 4 | File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 3494, in processTransaction 5 | pkgs = self._downloadPackages(callback) 6 | File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 3518, in _downloadPackages 7 | probs = self.downloadPkgs(dlpkgs) 8 | File "/usr/lib/python2.6/site-packages/yum/__init__.py", line 1275, in downloadPkgs 9 | self.plugins.run('predownload', pkglist=pkglist) 10 | File "/usr/lib/python2.6/site-packages/yum/plugins.py", line 179, in run 11 | func(conduitcls(self, self.base, conf, **kwargs)) 12 | File "/usr/lib/yum-plugins/presto.py", line 577, in predownload_hook 13 | (problems, more) = downloadPkgs(conduit, pinfo, download_pkgs) 14 | File "/usr/lib/yum-plugins/presto.py", line 419, in downloadPkgs 15 | cb.start(text="", size=rebuild_size) 16 | File "/usr/lib/python2.6/site-packages/urlgrabber/progress.py", line 129, in start 17 | self._do_start(now) 18 | File "/usr/share/PackageKit/helpers/yum/yumBackend.py", line 2551, in _do_start 19 | self.updateProgress(name, 0.0, "", "") 20 | File "/usr/share/PackageKit/helpers/yum/yumBackend.py", line 2593, in updateProgress 21 | pkg = self._getPackage(name) 22 | File "/home/user/PackageKit/helpers/yum/yumBackend.py", line 2534, in _getPackage 23 | sections = name.rsplit('-', 2) 24 | AttributeError: 'NoneType' object has no attribute 'rsplit' 25 | -------------------------------------------------------------------------------- /tests/python_stacktraces/python-02: -------------------------------------------------------------------------------- 1 | Traceback (most recent call last): 2 | File "/usr/bin/will_python_raise", line 3, in 3 | 0/0 4 | ZeroDivisionError: integer division or modulo by zero 5 | -------------------------------------------------------------------------------- /tests/python_stacktraces/python-03: -------------------------------------------------------------------------------- 1 | Traceback (most recent call last): 2 | File "", line 1, in 3 | l(42) 4 | File "./test.py", line 6, in 5 | l = lambda x: [ f(x) for i in range(10) ] 6 | File "./test.py", line 4, in f 7 | eval("0/0") 8 | File "", line 1, in 9 | ZeroDivisionError: integer division or modulo by zero 10 | -------------------------------------------------------------------------------- /tests/python_stacktraces/python-04: -------------------------------------------------------------------------------- 1 | invalid syntax (python3-mako-render, line 43) 2 | 3 | File "/usr/bin/python3-mako-render", line 43 4 | print render(data, kw) 5 | ^ 6 | SyntaxError: invalid syntax 7 | -------------------------------------------------------------------------------- /tests/python_stacktraces/python-05: -------------------------------------------------------------------------------- 1 | will_python_raise:2:: File "/usr/lib64/python2.7/site-packages/report/__init__.py", line 15 2 | 3 | Traceback (most recent call last): 4 | File "/usr/bin/will_python_raise", line 2, in 5 | import report 6 | File "/usr/lib64/python2.7/site-packages/report/__init__.py", line 15 7 | def foo(: 8 | ^ 9 | SyntaxError: invalid syntax 10 | 11 | Local variables in innermost frame: 12 | __builtins__: 13 | __name__: '__main__' 14 | __file__: '/usr/bin/will_python_raise' 15 | __doc__: None 16 | __package__: None 17 | -------------------------------------------------------------------------------- /tests/python_stacktraces/python-06: -------------------------------------------------------------------------------- 1 | will_python3_raise:3::ZeroDivisionError: division by zero 2 | 3 | Traceback (most recent call last): 4 | File "/usr/bin/will_python3_raise", line 3, in 5 | 0/0 6 | ~^~ 7 | ZeroDivisionError: division by zero 8 | 9 | Local variables in innermost frame: 10 | __name__: '__main__' 11 | __doc__: None 12 | __package__: None 13 | __loader__: <_frozen_importlib_external.SourceFileLoader object at 0x7fd295c62c50> 14 | __spec__: None 15 | __annotations__: {} 16 | __builtins__: 17 | __file__: '/usr/bin/will_python3_raise' 18 | __cached__: None 19 | -------------------------------------------------------------------------------- /tests/ruby_stacktraces/ruby-01: -------------------------------------------------------------------------------- 1 | /usr/share/ruby/vendor_ruby/will_crash.rb:13:in `rescue in block (2 levels) in func': Exception 2 | successfully 3 | raised. (Wrap::MyException) 4 | from /usr/share/ruby/vendor_ruby/will_crash.rb:10:in `block (2 levels) in func' 5 | from /usr/share/ruby/vendor_ruby/will_crash.rb:9:in `times' 6 | from /usr/share/ruby/vendor_ruby/will_crash.rb:9:in `block in func' 7 | from /usr/share/ruby/vendor_ruby/will_crash.rb:8:in `times' 8 | from /usr/share/ruby/vendor_ruby/will_crash.rb:8:in `func' 9 | from /usr/share/ruby/vendor_ruby/will_crash.rb:30:in `block in ' 10 | from /usr/share/ruby/vendor_ruby/will_crash.rb:28:in `times' 11 | from /usr/share/ruby/vendor_ruby/will_crash.rb:28:in `rescue in rescue in rescue in ' 12 | from /usr/share/ruby/vendor_ruby/will_crash.rb:25:in `rescue in rescue in ' 13 | from /usr/share/ruby/vendor_ruby/will_crash.rb:22:in `rescue in ' 14 | from /usr/share/ruby/vendor_ruby/will_crash.rb:19:in `' 15 | from /usr/share/ruby/vendor_ruby/will_crash.rb:6:in `' 16 | from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require' 17 | from /usr/share/rubygems/rubygems/core_ext/kernel_require.rb:55:in `require' 18 | from /usr/bin/will_ruby_raise:11:in `block (2 levels) in ' 19 | from /usr/bin/will_ruby_raise:10:in `times' 20 | from /usr/bin/will_ruby_raise:10:in `block in ' 21 | from /usr/bin/will_ruby_raise:9:in `times' 22 | from /usr/bin/will_ruby_raise:9:in `' 23 | from /usr/bin/will_ruby_raise:8:in `
' 24 | -------------------------------------------------------------------------------- /tests/ruby_stacktraces/ruby-03: -------------------------------------------------------------------------------- 1 | /usr/share/gems/gems/openshift-origin-node-1.18.0.1/lib/openshift-origin-node/utils/tc.rb:103:in `get_interface_mtu': Unable to determine external network interface IP address. (RuntimeError) 2 | from /usr/share/gems/gems/openshift-origin-node-1.18.0.1/lib/openshift-origin-node/utils/tc.rb:77:in `initialize' 3 | from /sbin/oo-admin-ctl-tc:24:in `new' 4 | from /sbin/oo-admin-ctl-tc:24:in `
' -------------------------------------------------------------------------------- /tests/ruby_stacktraces/ruby-03-expected-json: -------------------------------------------------------------------------------- 1 | { "exception_name": "RuntimeError" 2 | , "stacktrace": 3 | [ { "file_name": "/usr/share/gems/gems/openshift-origin-node-1.18.0.1/lib/openshift-origin-node/utils/tc.rb" 4 | , "file_line": 103 5 | , "function_name": "get_interface_mtu" 6 | } 7 | , { "file_name": "/usr/share/gems/gems/openshift-origin-node-1.18.0.1/lib/openshift-origin-node/utils/tc.rb" 8 | , "file_line": 77 9 | , "function_name": "initialize" 10 | } 11 | , { "file_name": "/sbin/oo-admin-ctl-tc" 12 | , "file_line": 24 13 | , "function_name": "new" 14 | } 15 | , { "file_name": "/sbin/oo-admin-ctl-tc" 16 | , "file_line": 24 17 | , "special_function": "main" 18 | } ] 19 | } -------------------------------------------------------------------------------- /tests/testsuite.at: -------------------------------------------------------------------------------- 1 | # Test suite for satyr. 2 | # See http://www.gnu.org/software/hello/manual/autoconf/Writing-Testsuites.html 3 | 4 | m4_include([python_bindings.at]) 5 | -------------------------------------------------------------------------------- /tests/valgrind.supp: -------------------------------------------------------------------------------- 1 | { 2 | libgobject 3 | Memcheck:Leak 4 | ... 5 | obj:/usr/*lib*/libgobject-* 6 | ... 7 | fun:_dl_init 8 | } 9 | --------------------------------------------------------------------------------