Portál AbcLinuxu, 3. listopadu 2025 22:09
Řešení dotazu:
bash -x /opt/thunderbird/.....thunderbird (nevím přesně jak se jmenuje ten váš spouštěcí skript který spouštíte a je někde v /opt/thunderbird)
bash -x /opt/thunderbird/thunderbird + moz_libdir=/usr/local/lib/thunderbird-3.0.1 + found=0 + progname=/opt/thunderbird/thunderbird ++ dirname /opt/thunderbird/thunderbird + curdir=/opt/thunderbird ++ basename /opt/thunderbird/thunderbird + progbase=thunderbird + run_moz=/opt/thunderbird/run-mozilla.sh + test -x /opt/thunderbird/run-mozilla.sh + dist_bin=/opt/thunderbird + found=1 + '[' 1 = 0 ']' + script_args= + debugging=0 + MOZILLA_BIN=thunderbird-bin + '[' linux-gnu = beos ']' + pass_arg_count=0 + '[' 0 -gt 0 ']' + '[' 0 = 1 ']' + /opt/thunderbird/run-mozilla.sh /opt/thunderbird/thunderbird-bin
strace :D Já si jen nebyl jist jak se chová u shell skriptů. Čili
strace /opt/thunderbird/thunderbirdti poví víc.
strace /opt/thunderbird/thunderbird
execve("/opt/thunderbird/thunderbird", ["/opt/thunderbird/thunderbird"], [/* 35 vars */]) = 0
brk(0) = 0x92c4000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb779c000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=90232, ...}) = 0
mmap2(NULL, 90232, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7785000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/tls/i686/cmov/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\260l\1\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1319364, ...}) = 0
mmap2(NULL, 1329512, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xe29000
mprotect(0xf67000, 4096, PROT_NONE) = 0
mmap2(0xf68000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13e) = 0xf68000
mmap2(0xf6b000, 10600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xf6b000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7784000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb77848d0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0xf68000, 8192, PROT_READ) = 0
mprotect(0x805e000, 4096, PROT_READ) = 0
mprotect(0x7e1000, 4096, PROT_READ) = 0
munmap(0xb7785000, 90232) = 0
getpid() = 2935
rt_sigaction(SIGCHLD, {SIG_DFL, [CHLD], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
geteuid32() = 1001
brk(0) = 0x92c4000
brk(0x92e5000) = 0x92e5000
getppid() = 2934
stat64("/home/pavel", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
stat64(".", {st_mode=S_IFDIR|0755, st_size=12288, ...}) = 0
open("/opt/thunderbird/thunderbird", O_RDONLY) = 3
fcntl64(3, F_DUPFD, 10) = 10
close(3) = 0
fcntl64(10, F_SETFD, FD_CLOEXEC) = 0
rt_sigaction(SIGINT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGINT, {0x804f5fb, ~[RTMIN RT_1], 0}, NULL, 8) = 0
rt_sigaction(SIGQUIT, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGQUIT, {SIG_DFL, ~[RTMIN RT_1], 0}, NULL, 8) = 0
rt_sigaction(SIGTERM, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigaction(SIGTERM, {SIG_DFL, ~[RTMIN RT_1], 0}, NULL, 8) = 0
read(10, "#!/bin/sh\n#\n# ***** BEGIN LICENS"..., 8192) = 3891
pipe([3, 4]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7784938) = 2936
close(4) = 0
read(3, "/opt/thunderbird\n", 128) = 17
read(3, "", 128) = 0
close(3) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 2936
pipe([3, 4]) = 0
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7784938) = 2937
close(4) = 0
read(3, "thunderbird\n", 128) = 12
read(3, "", 128) = 0
close(3) = 0
--- SIGCHLD (Child exited) @ 0 (0) ---
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 2937
stat64("/opt/thunderbird/run-mozilla.sh", {st_mode=S_IFREG|0755, st_size=10450, ...}) = 0
geteuid32() = 1001
getgid32() = 513
getegid32() = 513
getgroups32(0, NULL) = 15
getgroups32(15, [4, 20, 24, 25, 29, 30, 44, 46, 107, 109, 115, 125, 150, 151, 513]) = 15
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7784938) = 2938
wait4(-1,
A kurzor blika.. ja z toho teda moc moudrej nejsem...
Externí monitor, široká plocha nebo tak. Ale to asi ne, no. Nic jiného mě bohužel nenapadá :(
#!/bin/sh
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
# http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is
# Netscape Communications Corporation.
# Portions created by the Initial Developer are Copyright (C) 1998
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either of the GNU General Public License Version 2 or later (the "GPL"),
# or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
cmdname=`basename "$0"`
MOZ_DIST_BIN=`dirname "$0"`
MOZ_DEFAULT_NAME="./${cmdname}-bin"
MOZ_APPRUNNER_NAME="./mozilla-bin"
MOZ_VIEWER_NAME="./viewer"
MOZ_PROGRAM=""
exitcode=0
#
##
## Functions
##
##########################################################################
moz_usage()
{
echo "Usage: ${cmdname} [options] [program]"
echo ""
echo " options:"
echo ""
echo " -g Run in debugger."
echo " --debug"
echo ""
echo " -d debugger Debugger to use."
echo " --debugger debugger"
echo ""
echo " Examples:"
echo ""
echo " Run the viewer"
echo ""
echo " ${cmdname} viewer"
echo ""
echo " Run the mozilla-bin binary"
echo ""
echo " ${cmdname} mozilla-bin"
echo ""
echo " Debug the viewer in a debugger"
echo ""
echo " ${cmdname} -g viewer"
echo ""
echo " Debug the mozilla-bin binary in gdb"
echo ""
echo " ${cmdname} -g mozilla-bin -d gdb"
echo ""
return 0
}
##########################################################################
moz_bail()
{
message=$1
echo
echo "$cmdname: $message"
echo
exit 1
}
##########################################################################
moz_test_binary()
{
binary=$1
if [ -f "$binary" ]
then
if [ -x "$binary" ]
then
return 1
fi
fi
return 0
}
##########################################################################
moz_get_debugger()
{
debuggers="ddd gdb dbx bdb"
debugger="notfound"
done="no"
for d in $debuggers
do
moz_test_binary /bin/type
if [ $? -eq 1 ]
then
dpath=`LC_MESSAGES=C type ${d} | awk '{print $3;}' | sed -e 's/\.$//'`
else
dpath=`which ${d}`
fi
if [ -x "$dpath" ]
then
debugger=$dpath
break
fi
done
echo $debugger
return 0
}
##########################################################################
moz_run_program()
{
prog=$MOZ_PROGRAM
##
## Make sure the program is executable
##
if [ ! -x "$prog" ]
then
moz_bail "Cannot execute $prog."
fi
##
## Run the program
##
"$prog" ${1+"$@"}
exitcode=$?
}
##########################################################################
moz_debug_program()
{
prog=$MOZ_PROGRAM
##
## Make sure the program is executable
##
if [ ! -x "$prog" ]
then
moz_bail "Cannot execute $prog."
fi
if [ -n "$moz_debugger" ]
then
moz_test_binary /bin/type
if [ $? -eq 1 ]
then
debugger=`LC_MESSAGES=C type $moz_debugger | awk '{print $3;}' | sed -e 's/\.$//'`
else
debugger=`which $moz_debugger`
fi
else
debugger=`moz_get_debugger`
fi
if [ -x "$debugger" ]
then
tmpfile=`mktemp /tmp/mozargs.XXXXXX` || { echo "Cannot create temporary file" >&2; exit 1; }
trap " [ -f \"$tmpfile\" ] && /bin/rm -f -- \"$tmpfile\"" 0 1 2 3 13 15
# echo -n isn't portable, so pipe through perl -pe chomp instead
echo "set args" | perl -pe 'chomp' > $tmpfile
for PARAM in "$@"
do
echo " '$PARAM'" | perl -pe 'chomp' >> $tmpfile
done
echo >> $tmpfile
# If you are not using ddd, gdb and know of a way to convey the arguments
# over to the prog then add that here- Gagan Saksena 03/15/00
case `basename $debugger` in
gdb) echo "$debugger $prog -x $tmpfile"
$debugger "$prog" -x $tmpfile
exitcode=$?
;;
ddd) echo "$debugger --debugger \"gdb -x $tmpfile\" $prog"
$debugger --debugger "gdb -x $tmpfile" "$prog"
exitcode=$?
;;
*) echo "$debugger $prog ${1+"$@"}"
$debugger "$prog" ${1+"$@"}
exitcode=$?
;;
esac
else
echo "Could not find a debugger on your system."
fi
}
##########################################################################
##
## Command line arg defaults
##
moz_debug=0
moz_debugger=""
#
##
## Parse the command line
##
while [ $# -gt 0 ]
do
case $1 in
-g | --debug)
moz_debug=1
shift
;;
-d | --debugger)
moz_debugger=$2;
if [ "${moz_debugger}" != "" ]; then
shift 2
else
echo "-d requires an argument"
exit 1
fi
;;
*)
break;
;;
esac
done
#
##
## Program name given in $1
##
if [ $# -gt 0 ]
then
MOZ_PROGRAM=$1
shift
fi
##
## Program not given, try to guess a default
##
if [ -z "$MOZ_PROGRAM" ]
then
##
## Try this script's name with '-bin' appended
##
if [ -x "$MOZ_DEFAULT_NAME" ]
then
MOZ_PROGRAM=$MOZ_DEFAULT_NAME
## Try viewer (this should be deprecated)
##
elif [ -x "$MOZ_VIEWER_NAME" ]
then
MOZ_PROGRAM=$MOZ_VIEWER_NAME
##
## Try mozilla-bin
##
elif [ -x "$MOZ_APPRUNNER_NAME" ]
then
MOZ_PROGRAM=$MOZ_APPRUNNER_NAME
fi
fi
#
#
##
## Make sure the program is executable
##
if [ ! -x "$MOZ_PROGRAM" ]
then
moz_bail "Cannot execute $MOZ_PROGRAM."
fi
#
##
## Set MOZILLA_FIVE_HOME
##
MOZILLA_FIVE_HOME=$MOZ_DIST_BIN
if [ -z "$MRE_HOME" ]; then
MRE_HOME=$MOZILLA_FIVE_HOME
fi
##
## Set LD_LIBRARY_PATH
##
## On Solaris we use $ORIGIN (set in RUNPATH) instead of LD_LIBRARY_PATH
## to locate shared libraries.
##
## When a shared library is a symbolic link, $ORIGIN will be replaced with
## the real path (i.e., what the symbolic link points to) by the runtime
## linker. For example, if dist/bin/libxul.so is a symbolic link to
## toolkit/library/libxul.so, $ORIGIN will be "toolkit/library" instead of "dist/bin".
## So the runtime linker will use "toolkit/library" NOT "dist/bin" to locate the
## other shared libraries that libxul.so depends on. This only happens
## when a user (developer) tries to start firefox, thunderbird, or seamonkey
## under dist/bin. To solve the problem, we should rely on LD_LIBRARY_PATH
## to locate shared libraries.
##
## Note:
## We test $MOZ_DIST_BIN/*.so. If any of them is a symbolic link,
## we need to set LD_LIBRARY_PATH.
##########################################################################
moz_should_set_ld_library_path()
{
[ `uname -s` != "SunOS" ] && return 0
for sharedlib in $MOZ_DIST_BIN/*.so
do
[ -h $sharedlib ] && return 0
done
return 1
}
if moz_should_set_ld_library_path
then
LD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH+":$LD_LIBRARY_PATH"}
fi
if [ -n "$LD_LIBRARYN32_PATH" ]
then
LD_LIBRARYN32_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN32_PATH+":$LD_LIBRARYN32_PATH"}
fi
if [ -n "$LD_LIBRARYN64_PATH" ]
then
LD_LIBRARYN64_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARYN64_PATH+":$LD_LIBRARYN64_PATH"}
fi
if [ -n "$LD_LIBRARY_PATH_64" ]; then
LD_LIBRARY_PATH_64=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/plugins:${MRE_HOME}${LD_LIBRARY_PATH_64+":$LD_LIBRARY_PATH_64"}
fi
#
#
## Set SHLIB_PATH for HPUX
SHLIB_PATH=${MOZ_DIST_BIN}:${MRE_HOME}${SHLIB_PATH+":$SHLIB_PATH"}
#
## Set LIBPATH for AIX
LIBPATH=${MOZ_DIST_BIN}:${MRE_HOME}${LIBPATH+":$LIBPATH"}
#
## Set DYLD_LIBRARY_PATH for Mac OS X (Darwin)
DYLD_LIBRARY_PATH=${MOZ_DIST_BIN}:${MRE_HOME}${DYLD_LIBRARY_PATH+":$DYLD_LIBRARY_PATH"}
#
## Set LIBRARY_PATH for BeOS
LIBRARY_PATH=${MOZ_DIST_BIN}:${MOZ_DIST_BIN}/components:${MRE_HOME}${LIBRARY_PATH+":$LIBRARY_PATH"}
#
## Set ADDON_PATH for BeOS
ADDON_PATH=${MOZ_DIST_BIN}${ADDON_PATH+":$ADDON_PATH"}
#
## Solaris Xserver(Xsun) tuning - use shared memory transport if available
if [ "$XSUNTRANSPORT" = "" ]
then
XSUNTRANSPORT="shmem"
XSUNSMESIZE="512"
export XSUNTRANSPORT XSUNSMESIZE
fi
# Disable Gnome crash dialog
GNOME_DISABLE_CRASH_DIALOG=1
export GNOME_DISABLE_CRASH_DIALOG
if [ "$moz_debug" -eq 1 ]
then
echo "MOZILLA_FIVE_HOME=$MOZILLA_FIVE_HOME"
echo " LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
if [ -n "$LD_LIBRARYN32_PATH" ]
then
echo "LD_LIBRARYN32_PATH=$LD_LIBRARYN32_PATH"
fi
if [ -n "$LD_LIBRARYN64_PATH" ]
then
echo "LD_LIBRARYN64_PATH=$LD_LIBRARYN64_PATH"
fi
if [ -n "$LD_LIBRARY_PATH_64" ]; then
echo "LD_LIBRARY_PATH_64=$LD_LIBRARY_PATH_64"
fi
if [ -n "$DISPLAY" ]; then
echo "DISPLAY=$DISPLAY"
fi
if [ -n "$FONTCONFIG_PATH" ]; then
echo "FONTCONFIG_PATH=$FONTCONFIG_PATH"
fi
if [ -n "$MOZILLA_POSTSCRIPT_PRINTER_LIST" ]; then
echo "MOZILLA_POSTSCRIPT_PRINTER_LIST=$MOZILLA_POSTSCRIPT_PRINTER_LIST"
fi
echo "DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH"
echo " LIBRARY_PATH=$LIBRARY_PATH"
echo " SHLIB_PATH=$SHLIB_PATH"
echo " LIBPATH=$LIBPATH"
echo " ADDON_PATH=$ADDON_PATH"
echo " MOZ_PROGRAM=$MOZ_PROGRAM"
echo " MOZ_TOOLKIT=$MOZ_TOOLKIT"
echo " moz_debug=$moz_debug"
echo " moz_debugger=$moz_debugger"
fi
#
export MOZILLA_FIVE_HOME LD_LIBRARY_PATH
export SHLIB_PATH LIBPATH LIBRARY_PATH ADDON_PATH DYLD_LIBRARY_PATH
if [ $moz_debug -eq 1 ]
then
moz_debug_program ${1+"$@"}
else
moz_run_program ${1+"$@"}
fi
wmctrl -l | grep -i firefox
Dotaz je dobrý, ale sám nevím jak to formulovat do Google :( Když to pouštíte jako obyč. uživatel, tak vám to tu hlášku s glib předpokládám nepíše..
Když si to shrneme, spuštění bez profilu (a tedy bez rozšíření) jste zkoušel, strace jste zkoušel, pod rootem jste to zkoušel, firefox běží ale není vidět. Záhada :(
presne tak, hlaska s glib je jen v pripade roota, ostatni jsem provedl tez, bez uspechu.. nyni jsem tedy doinstaloval wmctrl a na mem pc, kde TB3 funguje a je spusteny neukazal zadnou hlasku... Ted jsem to zkusil na problemobem PC (pres SSH), kde TB3 bezi, ale neni videt a vypis je:
wmctrl -l | grep -i thunderbird Cannot open display.ale to je zrejme tim, ze to je na vzdalenem stroji
extensions...
Ale říkal jste že jste zkoušel i nějaký safe mode, který by snad měl doplňky ignorovat, tak nevím.
strace -f thunderbird, případně strace -ff -o stracelog pro následnou analýzu. Myslím že se to buď na něco čeká, nebo se to cyklí a na něco to čeká.
No, rekl bych, ze celkem zasadni je toto:
[pid 11072] --- SIGSEGV (Segmentation fault) @ 0 (0) ---
pak je tam divne tohle:
[pid 11072] access("/home/pavel/.thunderbird", F_OK) = -1 ENOENT (No such file or directory)
[pid 11072] mkdir("/home/pavel/.thunderbird", 0700) = -1 EEXIST (File exists)
Nema ten adresar nejaka podivuhodna prava? Jinak pred tim definitivnim padem je tam pokus o nacitani konfiguraku od ldap-u - nemas nejaky zvlastne nastaveny resolving?
/home/pavel/.thunderbird jsem presunul schvalne, aby nebyl nacitanej uzivatelskej profil.. jinak overovani na tom stroji je vuci LDAP.. co to s tim ma spolecnyho ale nechapu..
~/.thunderbird se vytvoril.. je v nem nejakej adresar Crash Reports s obsahem:
InstallTime20100111100551 s obsahem 1265921855 LastCrash s obsahem 1265921855
pid 11072] open("/etc/ldap.conf", O_RDONLY) = 3
[pid 11072] fstat64(3, {st_mode=S_IFREG|0644, st_size=9152, ...}) = 0
pak to ten stat přímo na soubor mu asi nějak nevyšel či co :-O
stracelog.$pid to posílá ten druhý příkaz ;)
staci na posouzeni to, co jsem poslal?
/tmp//6f5e73c8-c857-8808-05a46aa2-5c94e0cf.extra vám to zanechalo dopis na rozloučenou. Bohužel, vypadá to, že víc nevykoukám, a asi ani z toho logu v /tmp bych víc nepoznal :(
(thunderbird-bin:5311): GLib-WARNING **: g_set_prgname() called multiple times
Da se z toho neco vyvodit?
glib-config --versionmožná zkusit jinou, pokud lze?
glib-config --version No command 'glib-config' found, did you mean: Command 'gdlib-config' from package 'libgd2-xpm-dev' (main) Command 'gdlib-config' from package 'libgd2-noxpm-dev' (main) glib-config: command not foundtak nevim..
Pokud je to segmentation fault, doporučuji vzít GDB a zkusit, zda to není tohle. V zlib jsou nové kusy assembleru a s některými verzemi libxml2 to odletí. Musí se aktualizovat obojí společně. Jinak žuch.
thunderbird-bin. U mě je v /usr/lib/thunderbird-3.0/thunderbird-bin. Bude asi ve stejném adresáři, kam vede symlink /usr/bin/thunderbird nebo něco podobného (whereis thunderbird).gdb /usr/lib/thunderbird-3.0/thunderbird-bin. Pokud tam GDB není, stačí ho balíčkovacím manažerem doinstalovat.run. Jakmile (jestliže...) Thunderbird spadne, můžeš příkazem bt získat backtrace, tedy výpis zásobníku.V prvé řadě to chce nějaký backtrace z GDB, aby bylo jasné, co se vlastně stalo.
thunderbird-bin. U mě je v /usr/lib/thunderbird-3.0/thunderbird-bin. Bude asi ve stejném adresáři, kam vede symlink /usr/bin/thunderbird nebo něco podobného (whereis thunderbird).gdb /usr/lib/thunderbird-3.0/thunderbird-bin. Pokud tam GDB není, stačí ho balíčkovacím manažerem doinstalovat.run. Jakmile (jestliže...) Thunderbird spadne, můžeš příkazem bt získat backtrace, tedy výpis zásobníku.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.