From a33adb814a1f22ce6ad9be5271d0a31aa6808a4e Mon Sep 17 00:00:00 2001 From: Paul Wise Date: Wed, 7 Aug 2019 09:45:25 +0800 Subject: [PATCH] core.5: Explain the new situation with argument splitting Things changed in Linux v5.3-rc3 commit 315c69261dd3 from splitting after template expansion to splitting beforehand. Signed-off-by: Michael Kerrisk --- man5/core.5 | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/man5/core.5 b/man5/core.5 index d3efca3f8..ddc0352b8 100644 --- a/man5/core.5 +++ b/man5/core.5 @@ -267,6 +267,20 @@ file. If the first character of this file is a pipe symbol (\fB|\fP), then the remainder of the line is interpreted as the command-line for a user-space program (or script) that is to be executed. +.PP +.\" 315c69261dd3fa12dbc830d4fa00d1fad98d3b03 +Since kernel 5.3.0, the pipe template is split on spaces into an +argument list before the template parameters are expanded. +In earlier kernels the template parameters are expanded first and +the resulting string is split on spaces into an argument list. +This means that in earlier kernels executable names added by the +%e and %E template parameters could get split into multiple arguments. +So the core dump handler needs to put the executable names as the last +argument and ensure it joins all parts of the executable name using spaces. +Executable names with multiple spaces in them are not correctly represented +in earlier kernels so the core dump handler needs to use mechanisms to find +the executable name. +.PP Instead of being written to a disk file, the core dump is given as standard input to the program. Note the following points: