162 lines
6.1 KiB
Bash
Executable File
162 lines
6.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
## Here are some configuration options for Linux Client Testers.
|
|
## These options are for self-assisted troubleshooting during this beta
|
|
## testing phase; you should not usually need to touch them.
|
|
|
|
## - Avoids using any FMOD Ex audio driver.
|
|
#export LL_BAD_FMODEX_DRIVER=x
|
|
## - Avoids using any OpenAL audio driver.
|
|
#export LL_BAD_OPENAL_DRIVER=x
|
|
## - Avoids using any FMOD audio driver.
|
|
#export LL_BAD_FMOD_DRIVER=x
|
|
|
|
## - Avoids using the FMOD Ex PulseAudio audio driver.
|
|
#export LL_BAD_FMOD_PULSEAUDIO=x
|
|
## - Avoids using the FMOD or FMOD Ex ALSA audio driver.
|
|
#export LL_BAD_FMOD_ALSA=x
|
|
## - Avoids using the FMOD or FMOD Ex OSS audio driver.
|
|
#export LL_BAD_FMOD_OSS=x
|
|
## - Avoids using the FMOD or FMOD Ex ESD audio driver.
|
|
#export LL_BAD_FMOD_ESD=x
|
|
|
|
## - Avoids the optional OpenGL extensions which have proven most problematic
|
|
## on some hardware. Disabling this option may cause BETTER PERFORMANCE but
|
|
## may also cause CRASHES and hangs on some unstable combinations of drivers
|
|
## and hardware.
|
|
## NOTE: This is now disabled by default.
|
|
#export LL_GL_BASICEXT=x
|
|
|
|
## - Avoids *all* optional OpenGL extensions. This is the safest and least-
|
|
## exciting option. Enable this if you experience stability issues, and
|
|
## report whether it helps in the Linux Client Testers forum.
|
|
#export LL_GL_NOEXT=x
|
|
|
|
## - For advanced troubleshooters, this lets you disable specific GL
|
|
## extensions, each of which is represented by a letter a-o. If you can
|
|
## narrow down a stability problem on your system to just one or two
|
|
## extensions then please post details of your hardware (and drivers) to
|
|
## the Linux Client Testers forum along with the minimal
|
|
## LL_GL_BLACKLIST which solves your problems.
|
|
#export LL_GL_BLACKLIST=abcdefghijklmno
|
|
|
|
## - Some ATI/Radeon users report random X server crashes when the mouse
|
|
## cursor changes shape. If you suspect that you are a victim of this
|
|
## driver bug, try enabling this option and report whether it helps:
|
|
#export LL_ATI_MOUSE_CURSOR_BUG=x
|
|
|
|
## - If you experience crashes with streaming video and music, you can
|
|
## disable these by enabling this option:
|
|
#export LL_DISABLE_GSTREAMER=x
|
|
|
|
|
|
## Everything below this line is just for advanced troubleshooters.
|
|
##-------------------------------------------------------------------
|
|
|
|
## - For advanced debugging cases, you can run the viewer under the
|
|
## control of another program, such as strace, gdb, or valgrind. If
|
|
## you're building your own viewer, run the configure step with
|
|
## -DPACKAGE:BOOL=OFF to produce an unstripped binary for debugging.
|
|
if [ -n "$ASCENDED_DEVELOPER" ]; then
|
|
if [ "$ASCENDED_DEVELOPER" = "1" ]; then
|
|
export LL_WRAPPER='gdb --args'
|
|
elif [ "$ASCENDED_DEVELOPER" = "2" ]; then
|
|
export LL_WRAPPER='valgrind --smc-check=all --error-limit=no --log-file=secondlife.vg --leak-check=full --suppressions=/usr/lib/valgrind/glibc-2.5.supp --suppressions=secondlife-i686.supp'
|
|
elif [ "$ASCENDED_DEVELOPER" = "3" ]; then
|
|
export LL_WRAPPER='strace -f -ff -o @VIEWER_BRANDING_ID@.strace'
|
|
fi
|
|
fi
|
|
|
|
## - This allows one to set an arbitrary value for LD_PRELOAD.
|
|
## It won't work if LL_TCMALLOC is set because that uses it's
|
|
## own value of LD_PRELOAD.
|
|
#export AI_PRELOAD='/path/to/libmemleak.so'
|
|
|
|
## - Avoids an often-buggy X feature that doesn't really benefit us anyway.
|
|
export SDL_VIDEO_X11_DGAMOUSE=0
|
|
|
|
## - Works around a problem with misconfigured 64-bit systems not finding GL
|
|
# This is less needed nowadays; don't uncomment this unless LibGL can't find your
|
|
# drivers automatically.
|
|
#export LIBGL_DRIVERS_PATH="${LIBGL_DRIVERS_PATH}":/usr/lib64/dri:/usr/lib32/dri:/usr/lib/dri
|
|
|
|
## - The 'scim' GTK IM module widely crashes the viewer. Avoid it.
|
|
if [ "$GTK_IM_MODULE" = "scim" ]; then
|
|
export GTK_IM_MODULE=xim
|
|
fi
|
|
|
|
# Work around for a crash bug when restarting OpenGL after a change in the
|
|
# graphic settings (anti-aliasing, VBO, FSAA, full screen mode, UI scale).
|
|
# When you enable this work around, you can change the settings without
|
|
# crashing, but you will have to restart the viewer after changing them
|
|
# because the display still gets corrupted.
|
|
export LL_OPENGL_RESTART_CRASH_BUG=x
|
|
|
|
## - Automatically work around the ATI mouse cursor crash bug:
|
|
## (this workaround is disabled as most fglrx users do not see the bug)
|
|
#if lsmod | grep fglrx &>/dev/null ; then
|
|
# export LL_ATI_MOUSE_CURSOR_BUG=x
|
|
#fi
|
|
|
|
|
|
## Nothing worth editing below this line.
|
|
##-------------------------------------------------------------------
|
|
|
|
SCRIPTSRC=`readlink -f "$0" || echo "$0"`
|
|
RUN_PATH=`dirname "${SCRIPTSRC}" || echo .`
|
|
echo "Running from ${RUN_PATH}"
|
|
cd "${RUN_PATH}"
|
|
|
|
# Re-register the secondlife:// protocol handler every launch, for now.
|
|
./etc/register_secondlifeprotocol.sh
|
|
|
|
# Re-register the application with the desktop system every launch, for now.
|
|
./etc/refresh_desktop_app_entry.sh
|
|
|
|
## Before we mess with LD_LIBRARY_PATH, save the old one to restore for
|
|
## subprocesses that care.
|
|
export SAVED_LD_LIBRARY_PATH="${LD_LIBRARY_PATH}"
|
|
|
|
SL_ENV=
|
|
|
|
if [ -n "$AI_PRELOAD" ]; then
|
|
SL_ENV='LD_PRELOAD="$AI_PRELOAD" '
|
|
fi
|
|
|
|
if [ -n "$LL_TCMALLOC" ]; then
|
|
tcmalloc_libs='/usr/lib/libtcmalloc.so.0 /usr/lib/libstacktrace.so.0 /lib/libpthread.so.0'
|
|
all=1
|
|
for f in $tcmalloc_libs; do
|
|
if [ ! -f $f ]; then
|
|
all=0
|
|
fi
|
|
done
|
|
if [ $all != 1 ]; then
|
|
echo 'Cannot use tcmalloc libraries: components missing' 1>&2
|
|
else
|
|
SL_ENV='LD_PRELOAD="$(echo $tcmalloc_libs | tr '"' '"' :)" '
|
|
if [ -z "$HEAPCHECK" -a -z "$HEAPPROFILE" ]; then
|
|
export HEAPCHECK=${HEAPCHECK:-normal}
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
export VIEWER_BINARY='do-not-directly-run-@VIEWER_BRANDING_ID@-bin'
|
|
BINARY_TYPE=$(expr match "$(file -b bin/$VIEWER_BINARY)" '\(.*executable\)' | sed -e 's/ / /g')
|
|
if [ "${BINARY_TYPE}" == "ELF 32-bit LSB executable" ]; then
|
|
SL_ENV+='LD_LIBRARY_PATH="`pwd`/lib:$LD_LIBRARY_PATH"'
|
|
else
|
|
SL_ENV+='LD_LIBRARY_PATH="`pwd`/lib64:`pwd`/lib32:$LD_LIBRARY_PATH"'
|
|
fi
|
|
export SL_CMD='$LL_WRAPPER bin/$VIEWER_BINARY'
|
|
|
|
|
|
# Run the program.
|
|
eval ${SL_ENV} ${SL_CMD} || LL_RUN_ERR=runerr
|
|
|
|
# Handle any resulting errors
|
|
if [ "$LL_RUN_ERR" = "runerr" ]; then
|
|
# generic error running the binary
|
|
echo '*** Bad shutdown. ***'
|
|
fi
|