uitest: make child soffice process die when parent dies
using PR_SET_PDEATHSIG. Note that this can only be called by the child process in question, so we have to pass a new command line argument down to activate it. And we have to plumb it through the wrapper oosplash process. I wonder where else our testing infrastructure could benefit from this Change-Id: I55e8e9f7f4e6cc415046df04c804e51475b8a4c9 Reviewed-on: https://gerrit.libreoffice.org/79854 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
This commit is contained in:
@@ -42,6 +42,11 @@
|
||||
#include <osl/file.hxx>
|
||||
#include <sal/log.hxx>
|
||||
|
||||
#ifdef LINUX
|
||||
#include <sys/prctl.h>
|
||||
#include <signal.h>
|
||||
#endif
|
||||
|
||||
using namespace com::sun::star::lang;
|
||||
using namespace com::sun::star::uri;
|
||||
using namespace com::sun::star::uno;
|
||||
@@ -362,6 +367,15 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
|
||||
{
|
||||
// Do nothing, accept only for backward compatibility
|
||||
}
|
||||
else if ( oArg == "dont-survive-parent" )
|
||||
{
|
||||
// only supported on linux for now
|
||||
#ifdef LINUX
|
||||
prctl(PR_SET_PDEATHSIG, SIGKILL);
|
||||
#else
|
||||
fprintf(stderr, "Warning: dont-survive-parent is not supported on this platform (yet).\n");
|
||||
#endif
|
||||
}
|
||||
else if ( oArg == "nologo" )
|
||||
{
|
||||
m_nologo = true;
|
||||
|
@@ -112,7 +112,8 @@ namespace desktop
|
||||
"Developer arguments: \n"
|
||||
" --terminate_after_init \n"
|
||||
" Exit after initialization complete (no documents loaded)\n"
|
||||
" --eventtesting Exit after loading documents. \n\n"
|
||||
" --eventtesting Exit after loading documents. \n"
|
||||
" --dont-survive-parent Exit when the parent exits (linux only) \n\n"
|
||||
"New document creation arguments: \n"
|
||||
"The arguments create an empty document of specified kind. Only one of them may \n"
|
||||
"be used in one command line. If filenames are specified after an argument, \n"
|
||||
|
@@ -9,6 +9,10 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <osl/process.h>
|
||||
#ifdef LINUX
|
||||
#include <sys/prctl.h>
|
||||
#include <signal.h>
|
||||
#endif
|
||||
|
||||
#include "args.h"
|
||||
|
||||
@@ -121,6 +125,15 @@ Args *args_parse (void)
|
||||
args->pPageinType = pArgDescr[j].pPageinType;
|
||||
break;
|
||||
}
|
||||
if (rtl_ustr_ascii_compare_WithLength(
|
||||
arg, length, "dont-survive-parent")
|
||||
== 0)
|
||||
{
|
||||
#ifdef LINUX
|
||||
prctl(PR_SET_PDEATHSIG, SIGKILL);
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -66,7 +66,7 @@ class OfficeConnection:
|
||||
argv = [soffice, "--accept=" + socket + ";urp",
|
||||
"-env:UserInstallation=" + userdir,
|
||||
"--quickstart=no", "--nofirststartwizard",
|
||||
"--norestore", "--nologo"]
|
||||
"--norestore", "--nologo", "--dont-survive-parent"]
|
||||
if "--valgrind" in self.args:
|
||||
argv.append("--valgrind")
|
||||
|
||||
|
Reference in New Issue
Block a user