diff options
author | Justus Winter <justus@gnupg.org> | 2016-04-25 19:07:54 +0200 |
---|---|---|
committer | Justus Winter <justus@gnupg.org> | 2016-04-25 19:07:54 +0200 |
commit | e4678d7ccc8f848a78e05b87c34c2f731d964ca2 (patch) | |
tree | 1a3347f15f1fb7dbb0ee4153b22321a8603f036e /debian/patches/crash0001-xxx-crash-logging-works.patch | |
parent | a048afc4fc5a5c10c27d387499ebf42d0d594331 (diff) |
drop old patch series
Diffstat (limited to 'debian/patches/crash0001-xxx-crash-logging-works.patch')
-rw-r--r-- | debian/patches/crash0001-xxx-crash-logging-works.patch | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/debian/patches/crash0001-xxx-crash-logging-works.patch b/debian/patches/crash0001-xxx-crash-logging-works.patch deleted file mode 100644 index ea883bbc..00000000 --- a/debian/patches/crash0001-xxx-crash-logging-works.patch +++ /dev/null @@ -1,166 +0,0 @@ -From 1f9a2e92ef5b1ef2213385c938b2ed3d7f7a29ad Mon Sep 17 00:00:00 2001 -From: Justus Winter <4winter@informatik.uni-hamburg.de> -Date: Mon, 1 Dec 2014 22:23:29 +0100 -Subject: [PATCH hurd] xxx crash logging works - ---- - hurd/paths.h | 1 + - trans/crash.c | 116 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 2 files changed, 117 insertions(+) - -diff --git a/hurd/paths.h b/hurd/paths.h -index a13ba9b..c6cb7a0 100644 ---- a/hurd/paths.h -+++ b/hurd/paths.h -@@ -54,6 +54,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ - #define _HURD_IFSOCK _HURD "ifsock" /* S_IFSOCK */ - - /* Symbolic names for all non-essential translators. */ -+#define _HURD_CRASH _HURD "crash" - #define _HURD_MTAB _HURD "mtab" - - #endif /* hurd/paths.h */ -diff --git a/trans/crash.c b/trans/crash.c -index 9279bab..20b0034 100644 ---- a/trans/crash.c -+++ b/trans/crash.c -@@ -24,6 +24,7 @@ - #include <hurd.h> - #include <fcntl.h> - #include <hurd/trivfs.h> -+#include <hurd/paths.h> - #include <sys/wait.h> - #include <error.h> - #include <argp.h> -@@ -141,6 +142,119 @@ stop_pgrp (process_t userproc, mach_port_t cttyid) - munmap (pids, numpids); - } - -+void mach_print(const char *); -+ -+#ifndef EXTERNAL_MACH_PRINT -+asm (".global mach_print;" -+ " mach_print:;" -+ " mov $0xffffffe2, %eax;" -+ " lcall $0x7, $0x0;" -+ " ret;"); -+#endif /* EXTERNAL_MACH_PRINT */ -+ -+#include <mach/thread_status.h> -+ -+error_t -+get_pcs (task_t task, char **pcs) -+{ -+ error_t err; -+ thread_t *threads; -+ size_t i, nthreads; -+ -+#ifdef i386_THREAD_STATE -+ struct i386_thread_state state; -+ mach_msg_type_number_t count = i386_THREAD_STATE_COUNT; -+ int flavor = i386_THREAD_STATE; -+ -+ err = task_threads (task, &threads, &nthreads); -+ if (err) -+ return err; -+ -+ *pcs = NULL; -+ for (i = 0; i < nthreads; i++) -+ { -+ char *old = *pcs; -+ err = thread_get_state (threads[i], flavor, -+ (thread_state_t) &state, &count); -+ if (err) -+ return err; -+ -+ if (old) -+ asprintf (pcs, "%s, 0x%x", old, state.eip); -+ else -+ asprintf (pcs, "0x%x", state.eip); -+ -+ free (old); -+ err = mach_port_deallocate (mach_task_self (), threads[i]); -+ assert_perror (err); -+ } -+#else -+ *pcs = strdup ("architecture not supported"); -+#endif -+ return 0; -+} -+ -+error_t -+log_crash (task_t task, -+ int signo, integer_t sigcode, int sigerror, -+ natural_t exc, natural_t code, natural_t subcode, -+ enum crash_action how) -+{ -+ error_t err; -+ pid_t pid; -+ char argz_buf[128], *argz = argz_buf; -+ size_t argz_len = sizeof argz; -+ char *msg; -+ char *how_msg; -+ char *pcs; -+ -+ switch (how) -+ { -+ case crash_suspend: -+ how_msg = "suspending task"; -+ break; -+ case crash_kill: -+ how_msg = "killing task"; -+ break; -+ case crash_corefile: -+ how_msg = "writing core file"; -+ break; -+ default: -+ assert (! "reached"); -+ } -+ -+ err = proc_task2pid (procserver, task, &pid); -+ if (err) -+ return err; -+ -+ err = proc_getprocargs (procserver, pid, &argz, &argz_len); -+ if (err) -+ return err; -+ -+ err = get_pcs (task, &pcs); -+ if (err) -+ return err; -+ -+ argz_stringify (argz, argz_len, ' '); -+ asprintf (&msg, "%s: %s(%d) crashed, signal {no:%d, code:%d, error:%d}, " -+ "exception {%d, code:%d, subcode:%d}, PCs: {%s}, %s.\n", -+ _HURD_CRASH, argz, pid, -+ signo, sigcode, sigerror, -+ exc, code, subcode, -+ pcs, -+ how_msg); -+ if (argz != argz_buf) -+ vm_deallocate (mach_task_self (), argz, argz_len); -+ free (pcs); -+ if (! msg) -+ return ENOMEM; -+ -+ fprintf (stderr, "%s", msg); -+ mach_print (msg); -+ free (msg); -+ -+ return 0; -+} - - kern_return_t - S_crash_dump_task (mach_port_t port, -@@ -174,6 +288,8 @@ S_crash_dump_task (mach_port_t port, - } - } - -+ log_crash (task, signo, sigcode, sigerror, exc, code, subcode, how); -+ - switch (how) - { - default: /* NOTREACHED */ --- -2.1.4 - |