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 <osl/file.hxx>
|
||||||
#include <sal/log.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::lang;
|
||||||
using namespace com::sun::star::uri;
|
using namespace com::sun::star::uri;
|
||||||
using namespace com::sun::star::uno;
|
using namespace com::sun::star::uno;
|
||||||
@@ -362,6 +367,15 @@ void CommandLineArgs::ParseCommandLine_Impl( Supplier& supplier )
|
|||||||
{
|
{
|
||||||
// Do nothing, accept only for backward compatibility
|
// 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" )
|
else if ( oArg == "nologo" )
|
||||||
{
|
{
|
||||||
m_nologo = true;
|
m_nologo = true;
|
||||||
|
@@ -112,7 +112,8 @@ namespace desktop
|
|||||||
"Developer arguments: \n"
|
"Developer arguments: \n"
|
||||||
" --terminate_after_init \n"
|
" --terminate_after_init \n"
|
||||||
" Exit after initialization complete (no documents loaded)\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"
|
"New document creation arguments: \n"
|
||||||
"The arguments create an empty document of specified kind. Only one of them may \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"
|
"be used in one command line. If filenames are specified after an argument, \n"
|
||||||
|
@@ -9,6 +9,10 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <osl/process.h>
|
#include <osl/process.h>
|
||||||
|
#ifdef LINUX
|
||||||
|
#include <sys/prctl.h>
|
||||||
|
#include <signal.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "args.h"
|
#include "args.h"
|
||||||
|
|
||||||
@@ -121,6 +125,15 @@ Args *args_parse (void)
|
|||||||
args->pPageinType = pArgDescr[j].pPageinType;
|
args->pPageinType = pArgDescr[j].pPageinType;
|
||||||
break;
|
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",
|
argv = [soffice, "--accept=" + socket + ";urp",
|
||||||
"-env:UserInstallation=" + userdir,
|
"-env:UserInstallation=" + userdir,
|
||||||
"--quickstart=no", "--nofirststartwizard",
|
"--quickstart=no", "--nofirststartwizard",
|
||||||
"--norestore", "--nologo"]
|
"--norestore", "--nologo", "--dont-survive-parent"]
|
||||||
if "--valgrind" in self.args:
|
if "--valgrind" in self.args:
|
||||||
argv.append("--valgrind")
|
argv.append("--valgrind")
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user