mirror of
https://github.com/LibreOffice/core.git
synced 2025-07-22 01:09:00 +00:00
Avoid external processes picking up instdir/program/libnspr4.so
...which is a problem in ASan builds, as seen with a failing CppunitTest_sd_import_tests (among lots of other similarly failing tests): > Exception in thread "main" java.lang.UnsatisfiedLinkError: /usr/lib/jvm/java-11-openjdk-11.0.11.0.9-5.fc34.x86_64/lib/libsystemconf.so: ~/lo/core/instdir/program/libnspr4.so: undefined symbol: __asan_option_detect_stack_use_after_return > at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method) > at java.base/java.lang.ClassLoader$NativeLibrary.load(ClassLoader.java:2442) > at java.base/java.lang.ClassLoader$NativeLibrary.loadLibrary(ClassLoader.java:2498) > at java.base/java.lang.ClassLoader.loadLibrary0(ClassLoader.java:2694) > at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2648) > at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:830) > at java.base/java.lang.System.loadLibrary(System.java:1873) > at java.base/java.security.SystemConfigurator$1.run(SystemConfigurator.java:67) > at java.base/java.security.SystemConfigurator$1.run(SystemConfigurator.java:65) > at java.base/java.security.AccessController.doPrivileged(Native Method) > at java.base/java.security.SystemConfigurator.<clinit>(SystemConfigurator.java:65) > at java.base/java.security.Security.initialize(Security.java:208) > at java.base/java.security.Security$2.run(Security.java:93) > at java.base/java.security.Security$2.run(Security.java:91) > at java.base/java.security.AccessController.doPrivileged(Native Method) > at java.base/java.security.Security.<clinit>(Security.java:91) > at java.base/sun.security.jca.ProviderList.<init>(ProviderList.java:176) > at java.base/sun.security.jca.ProviderList$2.run(ProviderList.java:94) > at java.base/sun.security.jca.ProviderList$2.run(ProviderList.java:92) > at java.base/java.security.AccessController.doPrivileged(Native Method) > at java.base/sun.security.jca.ProviderList.fromSecurityProperties(ProviderList.java:91) > at java.base/sun.security.jca.Providers.<clinit>(Providers.java:54) > at java.base/java.security.SecureRandom.getDefaultPRNG(SecureRandom.java:264) > at java.base/java.security.SecureRandom.<init>(SecureRandom.java:219) > at java.base/java.util.UUID$Holder.<clinit>(UUID.java:101) > at java.base/java.util.UUID.randomUUID(UUID.java:147) > at org.probatron.officeotron.sessionstorage.Store.putZippedResource(Unknown Source) > at org.probatron.officeotron.CommandLineSubmission.<init>(Unknown Source) > at org.probatron.officeotron.Driver.main(Unknown Source) > warn:svl.items:1258842:1258842:svl/source/items/itempool.cxx:358: old secondary pool: EditEngineItemPool of pool: XOutdevItemPool must be empty. > ~/lo/core/test/source/bootstrapfixture.cxx:232:SdImportTest::testDocumentLayout > equality assertion failed > - Expected: 0 > - Actual : 256 > - failed to execute: sh ~/lo/core/bin/officeotron.sh ~/lo/tmp/SdImportTest__testDocumentLayout_16w8dw.tmp > ~/lo/tmp/SdImportTest__testDocumentLayout_16w8dy.tmp The solution reuses the arg-env bootstrap variable already used by test::OfficeConnection::setUp (unotest/source/cpp/officeconnection.cxx) and for that makes test::getArgumnet available outside Library_unotest. (For simplicity, it adds the relevant gb_CppunitTest_add_arguments calls unconditionally to the various *.mk files, even though the data is only used conditionally for non-_WIN32 in test::BootstrapFixture::validate in test/source/bootstrapfixture.cxx, at least for now.) Not sure what exactly started to cause this issue now for my ASan builds on Fedora 34. Change-Id: I7a4d6c0e36b94935442c6c91d5ee967fcad61763 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119317 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
@ -127,4 +127,8 @@ $(eval $(call gb_CppunitTest_use_components,chart2_pivot_chart_test,\
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_configuration,chart2_pivot_chart_test))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,chart2_pivot_chart_test, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -138,6 +138,10 @@ $(eval $(call gb_CppunitTest_use_configuration,chart2_export$(1)))
|
||||
|
||||
$(call gb_CppunitTest_get_target,chart2_export$(1)): $(call gb_Package_get_target,postprocess_images)
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,chart2_export$(1), \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
endef
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -24,18 +24,15 @@
|
||||
#include <string_view>
|
||||
|
||||
#include <rtl/ustring.hxx>
|
||||
#include <unotest/detail/unotestdllapi.hxx>
|
||||
|
||||
namespace test {
|
||||
|
||||
namespace detail {
|
||||
|
||||
// Obtain the value of an argument tunneled in via an "arg-<name>" bootstrap
|
||||
// variable:
|
||||
bool getArgument(
|
||||
OOO_DLLPUBLIC_UNOTEST bool getArgument(
|
||||
std::u16string_view name, OUString * value);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
@ -42,4 +42,8 @@ $(eval $(call gb_CppunitTest_use_custom_headers,oox_drawingml,\
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_configuration,oox_drawingml))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,oox_drawingml, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -127,4 +127,8 @@ $(eval $(call gb_CppunitTest_use_packages,sc_bugfix_test,\
|
||||
))
|
||||
endif
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sc_bugfix_test, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -121,4 +121,8 @@ $(eval $(call gb_CppunitTest_use_components,sc_filters_test,\
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_configuration,sc_filters_test))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sc_filters_test, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -118,4 +118,8 @@ $(eval $(call gb_CppunitTest_use_custom_headers,sc_pivottable_filters_test,\
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_configuration,sc_pivottable_filters_test))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sc_pivottable_filters_test, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -134,6 +134,10 @@ $(eval $(call gb_CppunitTest_use_packages,sc_subsequent_$(1), \
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_more_fonts,sc_subsequent_$(1)))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sc_subsequent_$(1), \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
endef
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -129,4 +129,8 @@ ifneq ($(ENABLE_POPPLER),)
|
||||
$(eval $(call gb_CppunitTest_use_executable,sd_import_tests,xpdfimport))
|
||||
endif
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sd_import_tests, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -74,4 +74,8 @@ $(eval $(call gb_CppunitTest_use_packages,sd_import_tests_smartart,\
|
||||
oox_customshapes \
|
||||
))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sd_import_tests_smartart, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -128,4 +128,8 @@ $(eval $(call gb_CppunitTest_use_configuration,sd_misc_tests))
|
||||
|
||||
$(call gb_CppunitTest_get_target,sd_misc_tests): $(call gb_Package_get_target,postprocess_images)
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sd_misc_tests, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -63,4 +63,9 @@ $(eval $(call gb_CppunitTest_use_uiconfigs,sd_tiledrendering, \
|
||||
svx \
|
||||
))
|
||||
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sd_tiledrendering, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -79,6 +79,7 @@ $(eval $(call gb_CppunitTest_use_configuration,sd_export_tests$(1)))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sd_export_tests$(1),\
|
||||
-env:SVG_DISABLE_FONT_EMBEDDING= \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
endef
|
||||
|
@ -6261,6 +6261,7 @@ include/uno/threadpool.h
|
||||
include/unoidl/unoidl.hxx
|
||||
include/unotest/bootstrapfixturebase.hxx
|
||||
include/unotest/filters-test.hxx
|
||||
include/unotest/getargument.hxx
|
||||
include/unotest/gettestargument.hxx
|
||||
include/unotest/officeconnection.hxx
|
||||
include/unotest/toabsolutefileurl.hxx
|
||||
@ -14165,7 +14166,6 @@ unoidl/source/unoidl.cxx
|
||||
unoidl/source/unoidlprovider.cxx
|
||||
unoidl/source/unoidlprovider.hxx
|
||||
unotest/source/cpp/filters-test.cxx
|
||||
unotest/source/cpp/getargument.hxx
|
||||
unotest/source/cpp/officeconnection.cxx
|
||||
unotest/source/cpp/toabsolutefileurl.cxx
|
||||
unotest/source/cpp/unobootstrapprotector/unobootstrapprotector.cxx
|
||||
|
@ -69,4 +69,8 @@ $(eval $(call gb_CppunitTest_use_uiconfigs,sw_odfexport, \
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_more_fonts,sw_odfexport))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sw_odfexport, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -69,4 +69,8 @@ $(eval $(call gb_CppunitTest_use_uiconfigs,sw_odfexport2, \
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_more_fonts,sw_odfexport2))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sw_odfexport2, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -61,4 +61,8 @@ $(eval $(call gb_CppunitTest_use_rdb,sw_odfimport,services))
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_configuration,sw_odfimport))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sw_odfimport, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -89,6 +89,11 @@ $(eval $(call gb_CppunitTest_use_packages,sw_ooxmlexport$(1),\
|
||||
))
|
||||
endif
|
||||
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sw_ooxmlexport$(1), \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
endef
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -90,6 +90,10 @@ $(call gb_CppunitTest_get_target,sw_uiwriter$(1)) : $(call gb_Library_get_target
|
||||
|
||||
$(eval $(call gb_CppunitTest_use_more_fonts,sw_uiwriter$(1)))
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,sw_uiwriter$(1), \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
endef
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <vcl/graphicfilter.hxx>
|
||||
#include <osl/file.hxx>
|
||||
#include <osl/process.h>
|
||||
#include <unotest/getargument.hxx>
|
||||
#include <unotools/tempfile.hxx>
|
||||
#include <vcl/salgtype.hxx>
|
||||
#include <vcl/scheduler.hxx>
|
||||
@ -190,6 +191,21 @@ void test::BootstrapFixture::validate(const OUString& rPath, test::ValidationFor
|
||||
OUString aOutputFile = aOutput.GetFileName();
|
||||
OUString aCommand = aValidator + " " + rPath + " > " + aOutputFile;
|
||||
|
||||
#if !defined _WIN32
|
||||
// For now, this is only needed by some Linux ASan builds, so keep it simply and disable it on
|
||||
// Windows (which doesn't support the relevant shell syntax for (un-)setting environment
|
||||
// variables).
|
||||
OUString env;
|
||||
if (test::getArgument(u"env", &env)) {
|
||||
auto const n = env.indexOf('=');
|
||||
if (n == -1) {
|
||||
aCommand = "unset -v " + env + " && " + aCommand;
|
||||
} else {
|
||||
aCommand = env + " " + aCommand;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
SAL_INFO("test", "BootstrapFixture::validate: executing '" << aCommand << "'");
|
||||
int returnValue = system(OUStringToOString(aCommand, RTL_TEXTENCODING_UTF8).getStr());
|
||||
|
||||
|
@ -22,10 +22,9 @@
|
||||
#include <osl/diagnose.h>
|
||||
#include <rtl/bootstrap.hxx>
|
||||
#include <rtl/ustring.hxx>
|
||||
#include <unotest/getargument.hxx>
|
||||
|
||||
#include "getargument.hxx"
|
||||
|
||||
namespace test::detail
|
||||
namespace test
|
||||
{
|
||||
bool getArgument(std::u16string_view name, OUString* value)
|
||||
{
|
||||
|
@ -20,15 +20,14 @@
|
||||
#include <sal/config.h>
|
||||
|
||||
#include <rtl/ustring.hxx>
|
||||
#include <unotest/getargument.hxx>
|
||||
#include <unotest/gettestargument.hxx>
|
||||
|
||||
#include "getargument.hxx"
|
||||
|
||||
namespace test
|
||||
{
|
||||
bool getTestArgument(std::u16string_view name, OUString* value)
|
||||
{
|
||||
return detail::getArgument(OUString(OUString::Concat("testarg.") + name), value);
|
||||
return getArgument(OUString(OUString::Concat("testarg.") + name), value);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -30,11 +30,10 @@
|
||||
#include <osl/test/uniquepipename.hxx>
|
||||
#include <osl/time.h>
|
||||
#include <sal/macros.h>
|
||||
#include <unotest/getargument.hxx>
|
||||
#include <unotest/officeconnection.hxx>
|
||||
#include <unotest/toabsolutefileurl.hxx>
|
||||
|
||||
#include "getargument.hxx"
|
||||
|
||||
namespace test {
|
||||
|
||||
OfficeConnection::OfficeConnection(): process_(nullptr) {}
|
||||
@ -48,7 +47,7 @@ void OfficeConnection::setUp() {
|
||||
OUString desc;
|
||||
OUString argSoffice;
|
||||
CPPUNIT_ASSERT(
|
||||
detail::getArgument(
|
||||
getArgument(
|
||||
u"soffice",
|
||||
&argSoffice));
|
||||
if (argSoffice.match("path:")) {
|
||||
@ -62,7 +61,7 @@ void OfficeConnection::setUp() {
|
||||
OUString acceptArg("--accept=" + desc + ";urp");
|
||||
OUString argUser;
|
||||
CPPUNIT_ASSERT(
|
||||
detail::getArgument(u"user", &argUser));
|
||||
getArgument(u"user", &argUser));
|
||||
OUString userArg("-env:UserInstallation=" + toAbsoluteFileUrl(argUser));
|
||||
OUString jreArg(
|
||||
"-env:UNO_JAVA_JFW_ENV_JREHOME=true");
|
||||
@ -72,7 +71,7 @@ void OfficeConnection::setUp() {
|
||||
jreArg.pData };
|
||||
rtl_uString ** envs = nullptr;
|
||||
OUString argEnv;
|
||||
if (detail::getArgument(u"env", &argEnv))
|
||||
if (getArgument(u"env", &argEnv))
|
||||
{
|
||||
envs = &argEnv.pData;
|
||||
}
|
||||
|
@ -78,4 +78,8 @@ $(eval $(call gb_CppunitTest_use_packages,xmlsecurity_signing,\
|
||||
))
|
||||
endif
|
||||
|
||||
$(eval $(call gb_CppunitTest_add_arguments,xmlsecurity_signing, \
|
||||
-env:arg-env=$(gb_Helper_LIBRARY_PATH_VAR)"$$$${$(gb_Helper_LIBRARY_PATH_VAR)+=$$$$$(gb_Helper_LIBRARY_PATH_VAR)}" \
|
||||
))
|
||||
|
||||
# vim: set noet sw=4 ts=4:
|
||||
|
Reference in New Issue
Block a user