SUMMARY By the https://github.com/systemd/systemd/issues/2187, I try to debug systemd (pid 1) memory leak using valgrind. Kernel boot command is below: /usr/bin/valgrind --leak-check=full --log-file=/valgrind.out /lib/systemd/systemd Boot log and result of "/usr/bin/valgrind /lib/systemd/systemd" OBSERVED RESULT [ 11.653187] /usr/bin/valgrind --leak-check=full --log-file=/valgrind.out /lib/systemd/systemdsh: cannot set terminal process group (-1): Inappropriate ioctl for device sh: no job control in this shell sh-4.3# /usr/bin/valgrind /lib/systemd/systemd valgrind: warning (non-fatal): readlink("/proc/self/exe") failed. valgrind: continuing, however --trace-children=yes will not work. --247:0: aspacem Valgrind: FATAL: can't open /proc/self/maps --247:0: aspacem Exiting now. EXPECTED RESULT In this link https://github.com/systemd/systemd/issues/2187, valgrind can debug systemd(pid 1) SOFTWARE/OS VERSIONS Linux: 2.6 or yocto dunfell
Is there anything missing in my valgrind?
(In reply to hguo3 from comment #1) > Is there anything missing in my valgrind? I think this question is really for the systemd project. The problem that you are observing is that the way you are running/starting systemd causes the /proc filesystem not being available. You might look in the systemd bug report https://github.com/systemd/systemd/issues/2187 or ask the systemd project how you are supposed to run/start systemd under valgrind to get proper results.
*** Bug 464184 has been marked as a duplicate of this bug. ***
Thanks for reply and will ask systemd for help.
Get below debug log, when I use "valgrind -d". It is valgrind exit before systemd runs. Seems this is valgrind issue not systemd ------------------------------------------------ sh-4.3#/usr/bin/valgrind -d --leak-check=full --log-file=/valgrind.out /lib/systemd/systemd --254:1:debuglog DebugLog system started by Stage 1, level 1 logging requested --254:1:launcher no tool requested, defaulting to 'memcheck' --254:1:launcher selected platform 'ppc64be-linux' valgrind: warning (non-fatal): readlink("/proc/self/exe") failed. valgrind: continuing, however --trace-children=yes will not work. --254:1:launcher launching /usr/lib64/valgrind/memcheck-ppc64be-linux --254:1:debuglog DebugLog system started by Stage 2 (main), level 1 logging requested --254:1: main Welcome to Valgrind version 3.16.1 debug logging --254:1: main Checking current stack is plausible --254:1: main Checking initial stack was noted --254:1: main Starting the address space manager --254:0: aspacem Valgrind: FATAL: can't open /proc/self/maps --254:0: aspacem Exiting now. sh-4.3#
The issue is that you don't seem to have a /proc file system. Please let us know what the systemd people tell you.
https://github.com/systemd/systemd/issues/26046 Our systemd version is too old to support by upstream.