On 01/29/2013 09:31 PM, Henrik /KaarPoSoft wrote:
On 01/29/2013 01:53 PM, Stephan Bergmann wrote:
On 01/24/2013 10:43 PM, Henrik /KaarPoSoft wrote:
On 01/24/2013 10:09 AM, Stephan Bergmann wrote:
On 01/24/2013 12:33 AM, Henrik /KaarPoSoft wrote:
On 01/23/2013 04:54 PM, Stephan Bergmann wrote:
On 01/23/2013 08:31 AM, Henrik /KaarPoSoft wrote:
Your strace lines like
[...]
look oddly truncated. For example, there should be a
.../program/boostraprc file that soffice.bin would indeed try to open
early on.
So I just ran into a problem with a libreoffice-4-0-0 build of mine on
Mac OS X whose symptoms looked very much like the above, expanding LO
bootstrap variables ($UserInstallation from bootstraprc in my case) to
pathnames that were oddly truncated. I tracked that down to bad calls
to putenv (the code to expand bootstrap variables in
sal/rtl/source/bootstrap.cxx tries to obtain values for that variables
via getenv, among others, so it is susceptible to problems resulting
from a broken environment), see
<http://cgit.freedesktop.org/libreoffice/core/commit/?id=d841273ba54b173020aa8da18ba7841cf950c13c>
"Do not call putenv with a temporary string argument."
While that fix is in Mac OS X specific code (so cannot be the cause of
your Linux problems), there are more calls to putenv in the LO code
base, and some of the might be broken in a similar way.
Stephan
I have applied the attached patch to my build.
Some of the changes are just quick-and-dirty, and leaking.
However, with those patches strace does not show any oddly truncated
lines, and LibreOffice continues a bit longer before dying on me (but I
will address this in another subject).
Thank you very much for your help!
/Henrik
diff -Naur libreoffice-4.0.0.3.ORIG/cppuhelper/test/loader/loader.test.cxx
libreoffice-4.0.0.3/cppuhelper/test/loader/loader.test.cxx
--- libreoffice-4.0.0.3.ORIG/cppuhelper/test/loader/loader.test.cxx 2013-01-31
11:54:53.000000000 +0100
+++ libreoffice-4.0.0.3/cppuhelper/test/loader/loader.test.cxx 2013-02-06 18:04:23.239228816 +0100
@@ -130,11 +130,7 @@
result += servicePurpose;
result += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("\") - "));
- char buff[256];
- strcpy(buff, "TestComponent.uno=");
- strcat(buff, pServicePurpose);
-
- putenv(buff);
+ setenv("TestComponent.uno", pServicePurpose, 1);
try {
cppu::writeSharedLibComponentInfo(
diff -Naur libreoffice-4.0.0.3.ORIG/sal/osl/unx/process.cxx
libreoffice-4.0.0.3/sal/osl/unx/process.cxx
--- libreoffice-4.0.0.3.ORIG/sal/osl/unx/process.cxx 2013-01-31 11:54:53.000000000 +0100
+++ libreoffice-4.0.0.3/sal/osl/unx/process.cxx 2013-02-06 18:04:23.239228816 +0100
@@ -272,7 +272,7 @@
}
else
{
- putenv(data.m_pszEnv[i]); /*TODO: check error return*/
+ putenv(strdup(data.m_pszEnv[i])); /*TODO: check error return*/
}
}
diff -Naur libreoffice-4.0.0.3.ORIG/sal/osl/unx/signal.c libreoffice-4.0.0.3/sal/osl/unx/signal.c
--- libreoffice-4.0.0.3.ORIG/sal/osl/unx/signal.c 2013-01-31 11:54:53.000000000 +0100
+++ libreoffice-4.0.0.3/sal/osl/unx/signal.c 2013-02-06 18:06:03.264680154 +0100
@@ -542,7 +542,6 @@
if ( strEnv )
{
putenv( rtl_string_getStr( strEnv ) );
- rtl_string_release( strEnv );
}
rtl_uString_release( ustrEnvironment );
diff -Naur libreoffice-4.0.0.3.ORIG/svtools/bmpmaker/bmp.cxx
libreoffice-4.0.0.3/svtools/bmpmaker/bmp.cxx
--- libreoffice-4.0.0.3.ORIG/svtools/bmpmaker/bmp.cxx 2013-01-31 11:54:53.000000000 +0100
+++ libreoffice-4.0.0.3/svtools/bmpmaker/bmp.cxx 2013-02-06 18:08:42.648988158 +0100
@@ -217,10 +217,7 @@
int main( int nArgCount, char* ppArgs[] )
{
#ifdef UNX
- static char aDisplayVar[ 1024 ];
-
- strcpy( aDisplayVar, "DISPLAY=" );
- putenv( aDisplayVar );
+ setenv("DISPLAY", "", 1);
#endif
::std::vector< String > aArgs;
diff -Naur libreoffice-4.0.0.3.ORIG/svtools/bmpmaker/bmpsum.cxx
libreoffice-4.0.0.3/svtools/bmpmaker/bmpsum.cxx
--- libreoffice-4.0.0.3.ORIG/svtools/bmpmaker/bmpsum.cxx 2013-01-31 11:54:53.000000000 +0100
+++ libreoffice-4.0.0.3/svtools/bmpmaker/bmpsum.cxx 2013-02-06 18:08:48.848078258 +0100
@@ -450,10 +450,7 @@
int main( int nArgCount, char* ppArgs[] )
{
#ifdef UNX
- static char aDisplayVar[ 1024 ];
-
- strcpy( aDisplayVar, "DISPLAY=" );
- putenv( aDisplayVar );
+ setenv("DISPLAY", "", 1);
#endif
::std::vector< String > aArgs;
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.