Date: prev next · Thread: first prev next last
2013 Archives by date, by thread · List index


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.