Bug#568672: openoffice.org: improper nfs handling in /usr/bin/soffice
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
hello rene,
these are my slightly updated programs.
my guidelines were keeping nfs/locking handling together, and similar in both
programs, as much as i could.
i didn't diff, so that you could diff against any upstream version you need.
as i needed the isshared variable, i've copied it's calculation to the top of
unopkg. in case it's calculation is in debian code only, please remove it's
calculation from the other location.
best regards,
alex
On 02/06/2010 10:45 PM, Rene Engelhard wrote:
> Hi,
>
> On Sat, Feb 06, 2010 at 09:08:43PM +0200, alex bodnaru wrote:
>> in case nfs/smb is detected, file_or_home_on_nfs returns 0, hence the handling
>> is inverse.
>
> Aha. Matthias, you wrote that, any comment?
> Looks valid to me.
>
>> STAR_PROFILE_LOCKING_DISABLED=1 should also be set when homedir on remote fs.
>>
>> though i can't be sure, i still feel some locks occur, even though i've fixed
>> myself the previous issue. look at the suspect messages relating to open files:
>
> You fixed that? You don't dare to send a patch? I mean,
> I don't have $HOME over nfs/smb anywhere.
>
>> rm: cannot remove `.openoffice.org/3/user/uno_packages/cache/.nfs000000000010c7c80000028a': Device or resource busy
>> rm: cannot remove `.openoffice.org/3/user/uno_packages/cache/.nfs000000000010c7d400000289': Device or resource busy
>> rm: cannot remove `.openoffice.org/3/user/uno_packages/cache/registry/com.sun.star.comp.deployment.configuration.PackageRegistryBackend/.nfs000000000010c7cd00000288': Device or resource busy
>
> When does that happen? On a manual rm?
> If yes - err, if even simple commands like rm fail, how is it OOos fault if this
> fails for you? This looks more like a generic problem, thus not a OOo
> bug.
>
> Grüße/Regards,
>
> René
- --
- --
best regards,
alex
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/
iJwEAQECAAYFAktwxogACgkQ2nA3WyrfyeORnAP/coufKmyO6hZ0mfpcP/9xxenw
WwUzBraknIdES57s6YOsyEp3lNq+eu/mKAHFUK/WpMjWyTZIyF5jYx4RuaefzQjA
8vwSoSEjHJVjWZ4tI0ALaNfXKoFk+8iCs/kZdA3mv348q00YFs4P7mNVr1j5Umyf
IxL0NDCGEYTe7l/JX+I=
=7pMc
-----END PGP SIGNATURE-----
#!/bin/sh
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2008 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# $RCSfile: unopkg.sh,v $
#
# $Revision: 1.14 $
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
# if isshared is only in debian/ubuntu, please consider setting it here only
isshared=0
for arg in $@
do
if [ "$arg" = "--shared" ]; then
isshared=1
fi
done
if [ $isshared -eq 1 ]; then
HOME=/var/spool/openoffice/
else
if test -z "$HOME"; then
HOME=$(getent passwd $(whoami) | cut -d":" -f6)
fi
fi
# helper functions
file_or_home_on_nfs()
{
case $(stat -f -c %T $HOME) in nfs*|smb)
# different cases
STAR_PROFILE_LOCKING_DISABLED=1
esac
for i; do
case "$i" in -*) continue; esac
[ -f "$i" ] || continue
case $(stat -f -c %T "$i") in nfs*|smb)
# different cases
SAL_ENABLE_FILE_LOCKING=0
return 1
esac
done
SAL_ENABLE_FILE_LOCKING=1
STAR_PROFILE_LOCKING_DISABLED=0
return 0
}
# read Ubuntu config file
FILE_LOCKING=auto
if [ -f /etc/openoffice/soffice.sh ]; then
. /etc/openoffice/soffice.sh
fi
# sanity checks
case "$FILE_LOCKING" in
auto|yes|no) ;;
*)
echo >&2 "unknown value '$FILE_LOCKING' for FILE_LOCKING parameter."
FILE_LOCKING=auto
echo >&2 "FILE_LOCKING reset to '$FILE_LOCKING'"
esac
# adjust environment
if [ -z "$SAL_ENABLE_FILE_LOCKING" ]; then
case "$FILE_LOCKING" in
auto)
file_or_home_on_nfs "$@"
;;
yes)
SAL_ENABLE_FILE_LOCKING=1
STAR_PROFILE_LOCKING_DISABLED=0
;;
no)
SAL_ENABLE_FILE_LOCKING=0
STAR_PROFILE_LOCKING_DISABLED=1
esac
fi
# export only once
export SAL_ENABLE_FILE_LOCKING
export STAR_PROFILE_LOCKING_DISABLED
# 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"
isshared=0
for arg in $@
do
if [ "$arg" = "--shared" ]; then
isshared=1
fi
done
if [ $isshared -eq 1 ]; then
echo $@ | grep -q env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY
if [ $? -ne 0 ]; then
set -- $@ '-env:JFW_PLUGIN_DO_NOT_CHECK_ACCESSIBILITY=1'
fi
echo $@ | grep -q env:UNO_JAVA_JFW_INSTALL_DATA
if [ $? -ne 0 -a -w $sd_prog/../share/config/javasettingsunopkginstall.xml ]; then
set -- $@ '-env:UNO_JAVA_JFW_INSTALL_DATA=$$ORIGIN/../share/config/javasettingsunopkginstall.xml'
fi
echo $@ | grep -q env:UserInstallation
if [ $? -ne 0 ]; then
INSTDIR=`mktemp -d -t unoinstall.XXXXXX`
set -- $@ '-env:UserInstallation=file://'$INSTDIR
fi
fi
#collect all bootstrap variables specified on the command line
#so that they can be passed as arguments to javaldx later on
for arg in $@
do
case "$arg" in
-env:*) BOOTSTRAPVARS=$BOOTSTRAPVARS" ""$arg";;
esac
done
# extend the ld_library_path for java: javaldx checks the sofficerc for us
if [ -x "$sd_prog/../basis-link/ure-link/bin/javaldx" ] ; then
my_path=`"$sd_prog/../basis-link/ure-link/bin/javaldx" $BOOTSTRAPVARS \
"-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"`
if [ -n "$my_path" ] ; then
LD_LIBRARY_PATH=$my_path${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
fi
fi
unset XENVIRONMENT
# uncomment line below to disable anti aliasing of fonts
# SAL_ANTIALIAS_DISABLE=true; export SAL_ANTIALIAS_DISABLE
# uncomment line below if you encounter problems starting soffice on your system
# SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS
# Set PATH so that crash_report is found:
PATH=$sd_prog${PATH+:$PATH}
export PATH
# execute binary
"$sd_prog/unopkg.bin" "$@" \
"-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"
if [ -n "$INSTDIR" ]; then
rm -rf $INSTDIR
fi
#!/bin/sh
#*************************************************************************
#
# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
#
# Copyright 2008 by Sun Microsystems, Inc.
#
# OpenOffice.org - a multi-platform office productivity suite
#
# $RCSfile: soffice.sh,v $
#
# $Revision: 1.34 $
#
# This file is part of OpenOffice.org.
#
# OpenOffice.org is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License version 3
# only, as published by the Free Software Foundation.
#
# OpenOffice.org is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License version 3 for more details
# (a copy is included in the LICENSE file that accompanied this code).
#
# You should have received a copy of the GNU Lesser General Public License
# version 3 along with OpenOffice.org. If not, see
# <http://www.openoffice.org/license.html>
# for a copy of the LGPLv3 License.
#
#*************************************************************************
if test -z "$HOME"; then
HOME=$(getent passwd $(whoami) | cut -d":" -f6)
fi
# helper functions
file_or_home_on_nfs()
{
case $(stat -f -c %T $HOME) in nfs*|smb)
# different cases
STAR_PROFILE_LOCKING_DISABLED=1
esac
for i; do
case "$i" in -*) continue; esac
[ -f "$i" ] || continue
case $(stat -f -c %T "$i") in nfs*|smb)
# different cases
SAL_ENABLE_FILE_LOCKING=0
return 1
esac
done
SAL_ENABLE_FILE_LOCKING=1
STAR_PROFILE_LOCKING_DISABLED=0
return 0
}
# FIXME: this is conservative; allow more known working configurations
working_opengl_support()
{
if [ -n "$(lsmod | awk '/^(fglrx|nvidia)/ {print $1}')" ]; then
return 1
fi
return 0
}
# read config file
FILE_LOCKING=auto
OPENGL_SUPPORT=no
if [ -f /etc/openoffice/soffice.sh ]; then
. /etc/openoffice/soffice.sh
fi
# sanity checks
case "$FILE_LOCKING" in
auto|yes|no) ;;
*)
echo >&2 "unknown value '$FILE_LOCKING' for FILE_LOCKING parameter."
FILE_LOCKING=auto
echo >&2 "FILE_LOCKING reset to '$FILE_LOCKING'"
esac
case "$OPENGL_SUPPORT" in
auto|yes|no) ;;
*)
echo >&2 "unknown value '$OPENGL_SUPPORT' for OPENGL_SUPPORT parameter."
OPENGL_SUPPORT=auto
echo >&2 "OPENGL_SUPPORT reset to '$OPENGL_SUPPORT'"
esac
# adjust environment
if [ -z "$SAL_ENABLE_FILE_LOCKING" ]; then
case "$FILE_LOCKING" in
auto)
file_or_home_on_nfs "$@"
;;
yes)
SAL_ENABLE_FILE_LOCKING=1
STAR_PROFILE_LOCKING_DISABLED=0
;;
no)
SAL_ENABLE_FILE_LOCKING=0
STAR_PROFILE_LOCKING_DISABLED=1
esac
fi
# export only once
export SAL_ENABLE_FILE_LOCKING
export STAR_PROFILE_LOCKING_DISABLED
if [ -z "$SAL_NOOPENGL" ]; then
case "$OPENGL_SUPPORT" in
auto)
working_opengl_support
if [ $? -eq 0 ]; then
SAL_NOOPENGL=true
export SAL_NOOPENGL
fi
;;
yes)
:
unset SAL_NOOPENGL
#export SAL_NOOPENGL
;;
no)
SAL_NOOPENGL=true
export SAL_NOOPENGL
esac
fi
# the following test is needed on Linux PPC with IBM j2sdk142
# These variables are substituted during the build process
if [ "LINUX" = "LINUX" -a "X86_64" = "POWERPC" ] ; then
JITC_PROCESSOR_TYPE=6
export JITC_PROCESSOR_TYPE
fi
# 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"
sd_binary=`basename "$0"`.bin
#collect all bootstrap variables specified on the command line
#so that they can be passed as arguments to javaldx later on
for arg in $@
do
case "$arg" in
-env:*) BOOTSTRAPVARS=$BOOTSTRAPVARS" ""$arg";;
esac
done
# pagein
sd_pagein_args=@pagein-common
for sd_arg in "$@"; do
case ${sd_arg} in
-calc)
sd_pagein_args="${sd_pagein_args} @pagein-calc"
break;
;;
-draw)
sd_pagein_args="${sd_pagein_args} @pagein-draw"
break;
;;
-impress)
sd_pagein_args="${sd_pagein_args} @pagein-impress"
break;
;;
-writer)
sd_pagein_args="${sd_pagein_args} @pagein-writer"
break;
;;
esac
done
"$sd_prog/../basis-link/program/pagein" -L"$sd_prog/../basis-link/program" \
${sd_pagein_args}
# extend the ld_library_path for java: javaldx checks the sofficerc for us
if [ -x "$sd_prog/../basis-link/ure-link/bin/javaldx" ] ; then
my_path=`"$sd_prog/../basis-link/ure-link/bin/javaldx" $BOOTSTRAPVARS \
"-env:INIFILENAME=vnd.sun.star.pathname:$sd_prog/redirectrc"`
if [ -n "$my_path" ] ; then
LD_LIBRARY_PATH=$my_path${LD_LIBRARY_PATH+:$LD_LIBRARY_PATH}
export LD_LIBRARY_PATH
fi
fi
unset XENVIRONMENT
# uncomment line below to disable anti aliasing of fonts
# SAL_ANTIALIAS_DISABLE=true; export SAL_ANTIALIAS_DISABLE
# uncomment line below if you encounter problems starting soffice on your system
# SAL_NO_XINITTHREADS=true; export SAL_NO_XINITTHREADS
# read database entries for Adabas D
if [ -f /etc/adabasrc ]; then
. /etc/adabasrc
fi
# Set PATH so that crash_report is found:
PATH=$sd_prog${PATH+:$PATH}
export PATH
PYTHONPATH=$sd_prog/../basis-link/program${PYTHONPATH+:$PYTHONPATH}
export PYTHONPATH
# test for availability of the fast external splash
for arg in $@; do
if [ "$arg" = "-nologo" -o "$arg" = "-no-oosplash" ]; then
no_oosplash=y
fi
done
if [ "$sd_binary" = "soffice.bin" -a -x "$sd_prog/oosplash.bin" ] && [ "$no_oosplash" != "y" ] ; then
sd_binary="oosplash.bin"
fi
# execute soffice binary
"$sd_prog/$sd_binary" "$@" &
trap 'kill -9 $!' TERM
wait $!
while [ $? -eq 79 ]
do
"$sd_prog/$sd_binary" ""$BOOTSTRAPVARS"" &
wait $!
done
exit
Reply to: