office-gobmx/sc/CppunitTest_sc_bugfix_test.mk
Stephan Bergmann e854abe076 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>
2021-07-21 15:27:02 +02:00

134 lines
3.2 KiB
Makefile

# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
#
# This file is part of the LibreOffice project.
#
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
#
$(eval $(call gb_CppunitTest_CppunitTest,sc_bugfix_test))
$(eval $(call gb_CppunitTest_use_common_precompiled_header,sc_bugfix_test))
$(eval $(call gb_CppunitTest_add_exception_objects,sc_bugfix_test, \
sc/qa/unit/bugfix-test \
))
$(eval $(call gb_CppunitTest_use_externals,sc_bugfix_test, \
boost_headers \
mdds_headers \
libxml2 \
))
$(eval $(call gb_CppunitTest_use_libraries,sc_bugfix_test, \
basegfx \
comphelper \
cppu \
cppuhelper \
drawinglayer \
editeng \
for \
forui \
i18nlangtag \
msfilter \
oox \
sal \
salhelper \
sax \
sb \
sc \
scqahelper \
sfx \
sot \
subsequenttest \
svl \
svt \
svx \
svxcore \
test \
tk \
tl \
ucbhelper \
unotest \
utl \
vbahelper \
vcl \
xo \
))
$(eval $(call gb_CppunitTest_set_include,sc_bugfix_test,\
-I$(SRCDIR)/sc/source/ui/inc \
-I$(SRCDIR)/sc/inc \
$$(INCLUDE) \
))
$(eval $(call gb_CppunitTest_use_api,sc_bugfix_test,\
udkapi \
offapi \
oovbaapi \
))
$(eval $(call gb_CppunitTest_use_ure,sc_bugfix_test))
$(eval $(call gb_CppunitTest_use_vcl,sc_bugfix_test))
$(eval $(call gb_CppunitTest_use_components,sc_bugfix_test,\
basic/util/sb \
chart2/source/chartcore \
chart2/source/controller/chartcontroller \
comphelper/util/comphelp \
configmgr/source/configmgr \
dbaccess/util/dba \
embeddedobj/util/embobj \
eventattacher/source/evtatt \
filter/source/config/cache/filterconfig1 \
filter/source/xmlfilteradaptor/xmlfa \
filter/source/xsltfilter/xsltfilter \
forms/util/frm \
framework/util/fwk \
i18npool/source/search/i18nsearch \
i18npool/util/i18npool \
linguistic/source/lng \
oox/util/oox \
package/source/xstor/xstor \
package/util/package2 \
sax/source/expatwrap/expwrap \
scaddins/source/analysis/analysis \
scaddins/source/datefunc/date \
sc/util/sc \
sc/util/scfilt \
sfx2/util/sfx \
sot/util/sot \
svl/util/svl \
svtools/util/svt \
toolkit/util/tk \
ucb/source/core/ucb1 \
ucb/source/ucp/file/ucpfile1 \
ucb/source/ucp/tdoc/ucptdoc1 \
unotools/util/utl \
unoxml/source/rdf/unordf \
unoxml/source/service/unoxml \
uui/util/uui \
vcl/vcl.common \
xmloff/util/xo \
xmlsecurity/util/xmlsecurity \
))
$(eval $(call gb_CppunitTest_use_components,sc_bugfix_test,\
xmlsecurity/util/xsec_xmlsec \
))
$(eval $(call gb_CppunitTest_use_configuration,sc_bugfix_test))
ifeq ($(OS),WNT)
# gpgme-w32spawn.exe is needed in workdir/LinkTarget/Executable
$(eval $(call gb_CppunitTest_use_packages,sc_bugfix_test,\
$(call gb_Helper_optional,GPGMEPP,gpgmepp)\
))
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: