office-gobmx/sd/export_setup.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

87 lines
2.1 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/.
#
#*************************************************************************
# template for export tests
define sd_export_test
$(eval $(call gb_CppunitTest_CppunitTest,sd_export_tests$(1)))
$(eval $(call gb_CppunitTest_use_externals,sd_export_tests$(1),\
boost_headers \
libxml2 \
))
$(eval $(call gb_CppunitTest_use_common_precompiled_header,sd_export_tests$(1)))
$(eval $(call gb_CppunitTest_add_exception_objects,sd_export_tests$(1), \
sd/qa/unit/export-tests$(1) \
))
$(eval $(call gb_CppunitTest_use_libraries,sd_export_tests$(1), \
$(call gb_Helper_optional,AVMEDIA,avmedia) \
basegfx \
comphelper \
cppu \
cppuhelper \
drawinglayer \
editeng \
for \
forui \
i18nlangtag \
msfilter \
oox \
sal \
salhelper \
sax \
sd \
sfx \
sot \
svl \
svt \
svx \
svxcore \
test \
tl \
tk \
ucbhelper \
unotest \
utl \
vcl \
xo \
))
$(eval $(call gb_CppunitTest_set_include,sd_export_tests$(1),\
-I$(SRCDIR)/sd/source/ui/inc \
-I$(SRCDIR)/sd/inc \
$$(INCLUDE) \
))
$(eval $(call gb_CppunitTest_use_sdk_api,sd_export_tests$(1)))
$(eval $(call gb_CppunitTest_use_ure,sd_export_tests$(1)))
$(eval $(call gb_CppunitTest_use_vcl,sd_export_tests$(1)))
$(eval $(call gb_CppunitTest_use_rdb,sd_export_tests$(1),services))
$(eval $(call gb_CppunitTest_use_custom_headers,sd_export_tests$(1),\
officecfg/registry \
))
$(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
# vim: set noet sw=4 ts=4: