[systemd-devel] [PATCH 2/2] coredump: Handle programs with spaces in COMM

Colin Walters walters at verbum.org
Tue Apr 30 12:15:31 PDT 2013


On Tue, 2013-04-30 at 19:47 +0200, Zbigniew Jędrzejewski-Szmek wrote:
> On Tue, Apr 30, 2013 at 01:12:19PM -0400, Colin Walters wrote:
> > This patch makes systemd-coredump handle processes that have
> > whitespace in their COMM fields.
> > 
> > fs/coredump.c when given %e (as systemd-coredump uses), will end up
> > joining the process arguments into a string (along with the other
> > fields), then will split the entire thing up on whitespace, and use
> > it as the arguments to the coredump pipe handler.
> > 
> > Previously, systemd-coredump would then reject them as having too many
> > arguments.
> > ---
> That's a workaround for a bug in the kernel. I think it makes sense, but
> it'd be nice to fix the kernel too.

To do what though?  Add a new coredump format specifier that gives you
a string-escaped version as one argument?  That'd probably make sense,
but then we'd have to test the kernel version before installing a
specifier.

Oddly, abrt doesn't seem to have this problem, but I also don't see how
the current code handles it.  More oddly, its core pattern is:
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
I don't understand how the lack of % for the 'e' works.

Oh, wait it doesn't actually use that format code, it just
parses /proc/pid/exe.  That's kind of funny =)

Although it does have some neat code to handle sparseness in cores and
attempt page-aligned IO.

Anyways, CC'd some of the people that appear in "git log fs/coredump.c"
for comments on the semantics of %e and whitespace in kernel arguments.




More information about the systemd-devel mailing list