From 34b5aa167da439900c4c1d1bb45b642b47d9a572 Mon Sep 17 00:00:00 2001 From: Justus Winter Date: Tue, 1 Nov 2016 14:38:27 +0100 Subject: startup: Dump processes if we cannot find the kernel. * startup/startup.c (dump_processes): New function. (frob_kerne_process): Use the new function. --- startup/startup.c | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'startup/startup.c') diff --git a/startup/startup.c b/startup/startup.c index f54de5ec..2eba5636 100644 --- a/startup/startup.c +++ b/startup/startup.c @@ -879,6 +879,23 @@ init_stdarrays () /* Frobnicate the kernel task and the proc server's idea of it (PID 2), so the kernel command line can be read as for a normal Hurd process. */ +void +dump_processes (void) +{ + pid_t pid; + for (pid = 1; pid < 100; pid++) + { + char args[256], *buffer = args; + size_t len = sizeof args; + if (proc_getprocargs (procserver, pid, &buffer, &len) == 0) + { + fprintf (stderr, "pid%d\t%s\n", (int) pid, buffer); + if (buffer != args) + vm_deallocate (mach_task_self (), (vm_offset_t) buffer, len); + } + } +} + void frob_kernel_process (void) { @@ -904,7 +921,10 @@ frob_kernel_process (void) /* Make the kernel our child. */ err = proc_child (procserver, task); if (err) - error (0, err, "cannot make the kernel our child"); + { + error (0, err, "cannot make the kernel our child"); + dump_processes (); + } err = proc_task2proc (procserver, task, &proc); if (err) -- cgit v1.2.3