From 0f298df1508779fd3aab8a58be4f3fb5a346118e Mon Sep 17 00:00:00 2001 From: Razvan Becheriu Date: Thu, 17 Oct 2024 20:03:13 +0300 Subject: [PATCH] [#3351] use execve to silence valgrind on child exit --- configure.ac | 2 ++ src/lib/process/tests/.gitignore | 1 + src/lib/process/tests/Makefile.am | 1 + src/lib/process/tests/daemon_unittest.cc | 7 +++++-- src/lib/process/tests/process_test.sh.in | 1 + 5 files changed, 10 insertions(+), 2 deletions(-) create mode 100644 src/lib/process/tests/process_test.sh.in diff --git a/configure.ac b/configure.ac index 9fc41611fc..5bafc2cb63 100644 --- a/configure.ac +++ b/configure.ac @@ -1682,6 +1682,8 @@ AC_CONFIG_FILES([src/lib/process/cfgrpt/Makefile]) AC_CONFIG_FILES([src/lib/process/cfgrpt/tests/Makefile]) AC_CONFIG_FILES([src/lib/process/tests/Makefile]) AC_CONFIG_FILES([src/lib/process/testutils/Makefile]) +AC_CONFIG_FILES([src/lib/process/tests/process_test.sh], + [chmod +x src/lib/process/tests/process_test.sh]) AC_CONFIG_FILES([src/lib/stats/Makefile]) AC_CONFIG_FILES([src/lib/stats/tests/Makefile]) AC_CONFIG_FILES([src/lib/stats/testutils/Makefile]) diff --git a/src/lib/process/tests/.gitignore b/src/lib/process/tests/.gitignore index 21c391e461..98b8080cfc 100644 --- a/src/lib/process/tests/.gitignore +++ b/src/lib/process/tests/.gitignore @@ -1 +1,2 @@ /libprocess_unittests +/process_test.sh diff --git a/src/lib/process/tests/Makefile.am b/src/lib/process/tests/Makefile.am index f556c76593..30e5057b75 100644 --- a/src/lib/process/tests/Makefile.am +++ b/src/lib/process/tests/Makefile.am @@ -3,6 +3,7 @@ dhcp_data_dir = @runstatedir@/@PACKAGE@ AM_CPPFLAGS = -I$(top_builddir)/src/lib -I$(top_srcdir)/src/lib AM_CPPFLAGS += $(BOOST_INCLUDES) AM_CPPFLAGS += -DTEST_DATA_BUILDDIR=\"$(abs_top_builddir)/src/lib/process/tests\" +AM_CPPFLAGS += -DTEST_SCRIPT_SH=\"$(abs_top_builddir)/src/lib/process/tests/process_test.sh\" AM_CPPFLAGS += -DDATA_DIR="\"$(dhcp_data_dir)\"" AM_CPPFLAGS += -DINSTALL_PROG=\"$(abs_top_srcdir)/install-sh\" diff --git a/src/lib/process/tests/daemon_unittest.cc b/src/lib/process/tests/daemon_unittest.cc index ca0bcd1f31..3ac29f2983 100644 --- a/src/lib/process/tests/daemon_unittest.cc +++ b/src/lib/process/tests/daemon_unittest.cc @@ -221,8 +221,11 @@ TEST_F(DaemonTest, createPIDFileOverwrite) { ASSERT_GE(pid, 0); if (pid == 0) { - // This is the child, die right away. Tragic, no? - _exit (0); + char name[] = TEST_SCRIPT_SH; + char* argv[] = { name, 0 }; + char* envp[] = { 0 }; + execve(name, argv, envp); + _exit(0); } // Back in the parent test, we need to wait for the child to die diff --git a/src/lib/process/tests/process_test.sh.in b/src/lib/process/tests/process_test.sh.in new file mode 100644 index 0000000000..1a2485251c --- /dev/null +++ b/src/lib/process/tests/process_test.sh.in @@ -0,0 +1 @@ +#!/bin/sh