diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-22 16:59:41 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2010-01-22 16:59:41 +0100 |
commit | 86d7447c394c14dc1e46346b8cac5545e0817615 (patch) | |
tree | 21ef4cc0409889973ae3fdef463a0841f4d56bf4 /doc | |
parent | ec9dd4ff425aa3a2a956eb8baf73215eeb734d31 (diff) | |
download | abrt-86d7447c394c14dc1e46346b8cac5545e0817615.tar.gz abrt-86d7447c394c14dc1e46346b8cac5545e0817615.tar.xz abrt-86d7447c394c14dc1e46346b8cac5545e0817615.zip |
test commit to rhel6
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'doc')
-rw-r--r-- | doc/IMPLEMENTATION | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/doc/IMPLEMENTATION b/doc/IMPLEMENTATION index ae8ef71c..62ad5786 100644 --- a/doc/IMPLEMENTATION +++ b/doc/IMPLEMENTATION @@ -3,7 +3,7 @@ Implementation: C/C++ handling: ============== -we change /proc/sys/kernel/core_pattern to invoke abrtd helper to save +we change /proc/sys/kernel/core_pattern to invoke abrtd helper to save the coredump of crashing app: * helper source code: http://git.fedorahosted.org/git/abrt.git?p=abrt.git;a=blob_plain;f=src/Hooks/abrt-hook-python.cpp the code responsible for this: @@ -16,7 +16,7 @@ the code responsible for this: fOutCorePattern << CORE_PATTERN << endl; fOutCorePattern.close(); } - + %p - pid %s - signal %u - uid @@ -24,7 +24,7 @@ the code responsible for this: when some crash occurs abrt-hook-ccpp is invoked to store the coredump and some other info read from /proc/<pid>/: -executable: +executable: char buf[sizeof("/proc/%u/exe") + sizeof(int)*3]; sprintf(buf, "/proc/%u/exe", (int)pid); readlink(buf); @@ -32,7 +32,7 @@ executable: cmdline: char path[sizeof("/proc/%u/cmdline") + sizeof(int)*3]; sprintf(path, "/proc/%u/cmdline", (int)pid); - + both is saved to file in /var/cache/abrt/ccpp-<time>-<pid> readable only by owner the crashed process: int fd = open(pPath, O_WRONLY | O_TRUNC | O_CREAT, 0666); @@ -41,7 +41,7 @@ only by owner the crashed process: n = write(fd, buf, count); } while (n < 0 && errno == EINTR); } - + when the hook is done it signalize the daemon (be removing the lock file) and daemon process the written info and saves some aditional information: analyzer : name of the plugin used to analyze the crash (ccpp, python) @@ -59,8 +59,8 @@ daemon process the written info and saves some aditional information: 1. uid of the app owner 2. package name -This is all what happens when some app crashes, the next step is to process -the coredump and extract the backtrace. This is done on user demand by calling +This is all what happens when some app crashes, the next step is to process +the coredump and extract the backtrace. This is done on user demand by calling getReport(UUID) method or automatically if admin sets it in /etc/abrt/abrt.conf * UUID is unique id of the crash in the database, every user is allowed to see only his own crashes or kerneloops crashes @@ -81,7 +81,7 @@ abrt-debuginfo-install is a shell script using elfutils to get build-ids from co see http://git.fedorahosted.org/git/abrt.git?p=abrt.git;a=blob_plain;f=lib/Plugins/CCpp.cpp line 260 - gdb is run with the same privileges as the crashed app (setregid, setreuid) d) BT is saved to same directory where the coredump is - + Once the backtrace is processed all data from the /var/cache/abrt/ccpp-<time>-<pid> is sent over dbus to the client and then user can edit the backtrace. When user is happy about the report and command the client (gui, tui) to send the it, the client sends the data back |