]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
main: drop get_process_cmdline from crash handler
authorlicunlong <licunlong1@huawei.com>
Thu, 10 Mar 2022 01:22:29 +0000 (09:22 +0800)
committerLennart Poettering <lennart@poettering.net>
Thu, 10 Mar 2022 08:19:50 +0000 (09:19 +0100)
get_process_cmdline calls malloc, which should be avoid in signal handler.

Fixes: #22690
src/core/main.c

index 41a4b4225fea1caac1fd040baec0108031cc7df9..7c9265f394e2d080e38432964e924975678c3f00 100644 (file)
@@ -274,11 +274,12 @@ _noreturn_ static void crash(int sig, siginfo_t *siginfo, void *context) {
                         int r;
 
                         if (siginfo) {
-                                _cleanup_free_ char *cmdline = NULL;
-                                pid_t sender_pid = siginfo->si_pid;
-
-                                (void) get_process_cmdline(sender_pid, SIZE_MAX, 0, &cmdline);
-                                log_emergency("Caught <%s> from PID "PID_FMT" (%s)", signal_to_string(sig), sender_pid, strna(cmdline));
+                                if (siginfo->si_pid == 0)
+                                        log_emergency("Caught <%s> from unknown sender process.", signal_to_string(sig));
+                                else if (siginfo->si_pid == 1)
+                                        log_emergency("Caught <%s> from our own process.", signal_to_string(sig));
+                                else
+                                        log_emergency("Caught <%s> from PID "PID_FMT".", signal_to_string(sig), siginfo->si_pid);
                         }
 
                         /* Order things nicely. */