Bug 62192 - : broken launch script, bork in March in Germany
Summary: : broken launch script, bork in March in Germany
Status: RESOLVED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: LibreOffice (show other bugs)
Version:
(earliest affected)
4.0.1.2 release
Hardware: Other Linux (All)
: medium normal
Assignee: Not Assigned
URL:
Whiteboard: target:4.2.0
Keywords: difficultyBeginner, easyHack, skillScript
Depends on:
Blocks:
 
Reported: 2013-03-11 21:50 UTC by ExecutorElassus
Modified: 2016-02-05 11:10 UTC (History)
1 user (show)

See Also:
Crash report or crash signature:


Attachments
Set LC_ALL=C (300 bytes, patch)
2013-06-14 09:14 UTC, Erik Auerswald
Details
[PATCH] Minimal fix: use POSIX locale for ls call only (480 bytes, patch)
2013-06-14 20:22 UTC, Erik Auerswald
Details
[PATCH] Save LC_ALL, use POSIX locale for script, and restore LC_ALL before starting LibreOffice (678 bytes, patch)
2013-06-14 20:23 UTC, Erik Auerswald
Details

Note You need to log in before you can comment on or make changes to this bug.
Description ExecutorElassus 2013-03-11 21:50:24 UTC
Problem description: 

I ran into this problem last year, in the same month, and here I am again. This section of code is in /usr/lib/libreoffice/program/soffice:

---------------------------
# resolve installation directory 
sd_cwd="`pwd`" 
if [ -h "$0" ] ; then 
    sd_basename=`basename "$0"` 
     sd_script=`ls -l "$0" | sed "s/.*${sd_basename} -> //g"` 
    cd "`dirname "$0"`" 
    cd "`dirname "$sd_script"`" 
else 
    cd "`dirname "$0"`" 
fi 
sd_prog=`pwd` 
cd "$sd_cwd" 
-------------------------
The gentoo developers rightly refer to this code as "completely broken", as it causes LibreOffice to puke on launch when trying to determine the month string of its working directory if used on a system for which certain months use non-standard characters.

For instance, in Gremany, the current month is "März." Launching LO any time between now and 2013-04-01 will cause LO to fail with the following error:

-----------------------------
$ libreoffice 
ls: error initializing month strings 
/usr/bin/libreoffice: line 58: cd: lrwxrwxrwx 1 root root 38 10. Mä/usr/lib64/libreoffice/program: No such file or directory 
/usr/bin/libreoffice: line 180: /usr/bin/oosplash: No such file or directory 
--------------------------------

Steps to reproduce:
1. set the filesystem locale to German (any variant)
2. try to launch LO in the month of March
3. cry

Current behavior: the launcher pukes

Expected behavior: the launcher could maybe use a coreutil that is pretty good at reading month strings? In any case, it should launch properly.

Cheers,

              
Operating System: Linux (Other)
Version: 4.0.1.2 release
Comment 1 Andras Timar 2013-04-16 05:28:10 UTC
This is an easy hack. The only trick is that the solution need to work on a wide variety of systems, not on Linux only.
See also: http://stackoverflow.com/questions/7665/how-to-resolve-symbolic-links-in-a-shell-script
Comment 2 Erik Auerswald 2013-06-14 09:14:07 UTC
Created attachment 80803 [details]
Set LC_ALL=C

The script should be locale independent. Set LC_ALL=C to do this.
Comment 3 Erik Auerswald 2013-06-14 20:21:09 UTC
Unconditionally overwriting locale settings might have unintended consequences for the started LibreOffice program. Thus I have written two alternative patches:

1. libreoffice_bug62192_minimal_fix.patch
 This fixes the offending 'ls' call only.

2. libreoffice_bug62192_involved_fix.patch
 This saves the current LC_ALL setting, sets the POSIX locale for (most of) the script, and restores the original setting before exec'ing the LibreOffice binary.

The minimal fix seems quite safe, but the more invovled one should be tested on several different systems.

BTW, this bug is not reproducible with Debian GNU/Linux (checked, old stable, stable and unstable), because the GNU sed used copes with non-ASCII input.
Comment 4 Erik Auerswald 2013-06-14 20:22:10 UTC
Created attachment 80825 [details]
[PATCH] Minimal fix: use POSIX locale for ls call only
Comment 5 Erik Auerswald 2013-06-14 20:23:13 UTC
Created attachment 80826 [details]
[PATCH] Save LC_ALL, use POSIX locale for script, and restore LC_ALL before starting LibreOffice
Comment 7 Commit Notification 2013-07-09 21:44:46 UTC
Erik Auerswald committed a patch related to this issue.
It has been pushed to "master":

http://cgit.freedesktop.org/libreoffice/core/commit/?id=e75b8e9b4bf720f3bcf479c6915d7815bf8f3e6e

fdo#62192: broken launch script, bork in March in Germany



The patch should be included in the daily builds available at
http://dev-builds.libreoffice.org/daily/ in the next 24-48 hours. More
information about daily builds can be found at:
http://wiki.documentfoundation.org/Testing_Daily_Builds
Affected users are encouraged to test the fix and report feedback.
Comment 8 Björn Michaelsen 2013-10-18 19:58:36 UTC
assumed fixed with the commit.
Comment 9 Robinson Tryon (qubit) 2015-12-15 23:23:22 UTC
Migrating Whiteboard tags to Keywords: (EasyHack DifficultyEasy SkillScript)
[NinjaEdit]
Comment 10 Björn Michaelsen 2016-02-05 11:10:48 UTC
difficultyEasy -> difficultyBeginner. The former never really existed and only makes the EasyHack not appear on the wiki.