Re: [Feature Request?] Inline compression of process core dumps

From: Christopher S. Aker
Date: Thu Apr 12 2007 - 22:58:04 EST


Randy Dunlap wrote:
On Thu, 12 Apr 2007 22:22:18 -0400 Christopher S. Aker wrote:

Alan Cox wrote:
> Indeed. So useful that in current kernels you can set the core dump
> path to be
>
> "|application"

Cool stuff! However, it's not working (2.6.20.6):

Core dump to |/home/caker/bin/dumper.pl.4442 pipe failed

even though...

# cat /proc/sys/kernel/core_uses_pid
0
# cat /proc/sys/kernel/core_pattern
|/home/caker/bin/dumper.pl

Looking at the code, it seems to me that format_corename() is appending .pid, regardless if !core_uses_pid and corename[0]=='|', in which case it creates an invalid path for call_usermodehelper_pipe().

Bug in the code, or bug in my methods?

What are you trying to dump? is it a multi-thread group app,
not a "simple" app? I ask because of this (I'm looking at 2.6.21-rc6)
<mm_users> reference (not that I know what that is):

if (!pid_in_pattern
&& (core_uses_pid || atomic_read(&current->mm->mm_users) != 1)) {
rc = snprintf(out_ptr, out_end - out_ptr,
".%d", current->tgid);
if (rc > out_end - out_ptr)
goto out;
out_ptr += rc;
}

I saw that too, and unfortunately I don't know what what that condition represents, either. It's the only other element in that if statement that could make it take that path, so I'm assuming that's part of the problem.

The process is a UML instance (skas mode, so at least a kernel, userspace, and io thread), which will generate a single, usable, core file just fine with a non-pipe core_pattern...

-Chris

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/