Git Version | Version Git
matttbe, Monday 20 June 2011 à 11:12
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Parfois, lorsque le dock est lancé automatiquement au démarrage, il y a un crash. Depuis peu, je lance le dock avec gdb et en cas de crash, il exporte le backtrace GNU gdb (Ubuntu/Linaro 7.2-1ubuntu11) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/bin/cairo-dock...done.
[Thread debugging using libthread_db enabled]
============================================================================
Cairo-Dock version: 2.4.0~0beta0
Compiled date: Jun 19 2011 21:32:17
Running with OpenGL: 1
============================================================================
cairo_dock_load_icon_info_from_desktop_file (01chromium-browser.desktop)
cairo_dock_register_class_full (/usr/share/applications/chromium-browser.desktop, Chromium-browser)
cairo_dock_guess_class ((null), 'Chromium-browser')
-> 'chromium-browser'
+ parsing class desktop file /usr/share/applications/chromium-browser.desktop...
-> class 'chromium-browser'
cairo_dock_set_data_from_class (chromium-browser)
cairo_dock_load_icon_info_from_desktop_file (01firefox.desktop)
cairo_dock_register_class_full (/usr/share/applications/firefox.desktop, Firefox)
cairo_dock_guess_class ((null), 'Firefox')
-> 'firefox'
+ parsing class desktop file /usr/share/applications/firefox.desktop...
-> class 'firefox'
cairo_dock_set_data_from_class (firefox)
cairo_dock_load_icon_info_from_desktop_file (01gnome-terminal.desktop)
cairo_dock_register_class_full (/usr/share/applications/gnome-terminal.desktop, (null))
+ parsing class desktop file /usr/share/applications/gnome-terminal.desktop...
cairo_dock_guess_class (gnome-terminal, '(null)')
-> 'gnome-terminal'
-> class 'gnome-terminal'
cairo_dock_set_data_from_class (gnome-terminal)
cairo_dock_load_icon_info_from_desktop_file (01empathy.desktop)
cairo_dock_register_class_full (/usr/share/applications/empathy.desktop, (null))
+ parsing class desktop file /usr/share/applications/empathy.desktop...
cairo_dock_guess_class (empathy, '(null)')
-> 'empathy'
-> class 'empathy'
cairo_dock_set_data_from_class (empathy)
cairo_dock_load_icon_info_from_desktop_file (01gwibber.desktop)
cairo_dock_register_class_full (/usr/share/applications/gwibber.desktop, (null))
+ parsing class desktop file /usr/share/applications/gwibber.desktop...
cairo_dock_guess_class (gwibber %U, '(null)')
-> 'gwibber'
-> class 'gwibber'
cairo_dock_set_data_from_class (gwibber)
cairo_dock_load_icon_info_from_desktop_file (01gcalctool.desktop)
cairo_dock_register_class_full (/usr/share/applications/gcalctool.desktop, (null))
+ parsing class desktop file /usr/share/applications/gcalctool.desktop...
cairo_dock_guess_class (gcalctool, '(null)')
-> 'gcalctool'
-> class 'gcalctool'
cairo_dock_set_data_from_class (gcalctool)
[1;38mwarning : [0m [0;37m(/opt/cairo-dock_bzr/cairo-dock-plug-ins/Dbus/src/applet-dbus.c:cd_dbus_register_module_in_dir:172) [0m
file /home/mbaerts/.config/cairo-dock/third-party/po/auto-load.conf should not be here
[1;38mwarning : [0m [0;37m(/opt/cairo-dock_bzr/cairo-dock-plug-ins/Dbus/src/applet-dbus.c:cd_dbus_register_module_in_dir:172) [0m
file /home/mbaerts/.config/cairo-dock/third-party/Cardapio_moved/auto-load.conf should not be here
[1;38mwarning : [0m [0;37m(/opt/cairo-dock_bzr/cairo-dock-plug-ins/Dbus/src/applet-dbus.c:cd_dbus_register_module_in_dir:172) [0m
file /home/mbaerts/.config/cairo-dock/third-party/Lancelot_moved/auto-load.conf should not be here
[New Thread 0x7fffd4b4a700 (LWP 2493)]
[Thread 0x7fffd4b4a700 (LWP 2493) exited]
[New Thread 0x7fffd4b4a700 (LWP 2521)]
[New Thread 0x7fffcf9ec700 (LWP 2522)]
[New Thread 0x7fffcf1eb700 (LWP 2523)]
[Thread 0x7fffcf1eb700 (LWP 2523) exited]
[New Thread 0x7fffcf1eb700 (LWP 2535)]
[New Thread 0x7fffc93c2700 (LWP 2552)]
[Thread 0x7fffc93c2700 (LWP 2552) exited]
[New Thread 0x7fffc93c2700 (LWP 2553)]
[New Thread 0x7fffc8bc1700 (LWP 2556)]
[Thread 0x7fffc8bc1700 (LWP 2556) exited]
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffcf1eb700 (LWP 2535)]
0x00007ffff6eed357 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#0 0x00007ffff6eed357 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#1 0x00007ffff6eed639 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#2 0x00007ffff6ef38b8 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#3 0x00007ffff6ef4a29 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#4 0x00007ffff6ef549a in gtk_icon_theme_lookup_icon () from /usr/lib/libgtk-x11-2.0.so.0
#5 0x00007ffff6144491 in cairo_dock_search_icon_s_path (cFileName=0x9e75f0 "drive-harddisk-ata") at /opt/cairo-dock_bzr/cairo-dock-core/src/gldit/cairo-dock-icon-factory.c:162
#6 0x00007fffe6a896de in _cd_get_icon_path (pIcon=0x8ac460, cTargetURI=<value optimized out>) at /opt/cairo-dock_bzr/cairo-dock-plug-ins/gvfs-integration/cairo-dock-gio-vfs.c:94
#7 0x00007fffe6a89f5c in cairo_dock_gio_vfs_list_directory (cBaseURI=<value optimized out>, iSortType=CAIRO_DOCK_FM_SORT_BY_NAME, iNewIconsGroup=6, bListHiddenFiles=0, iNbMaxFiles=100, cValidUri=0x7fffcf1eab40) at /opt/cairo-dock_bzr/cairo-dock-plug-ins/gvfs-integration/cairo-dock-gio-vfs.c:850
#8 0x00007fffde92ee05 in cd_shortcuts_list_drives (pSharedMemory=0x9eb480) at /opt/cairo-dock_bzr/cairo-dock-plug-ins/shortcuts/src/applet-drives.c:302
#9 0x00007fffde92d935 in _load_icons (pSharedMemory=0x9eb480) at /opt/cairo-dock_bzr/cairo-dock-plug-ins/shortcuts/src/applet-load-icons.c:194
#10 cd_shortcuts_get_shortcuts_data (pSharedMemory=0x9eb480) at /opt/cairo-dock_bzr/cairo-dock-plug-ins/shortcuts/src/applet-load-icons.c:228
#11 0x00007ffff61a5ac4 in _cairo_dock_threaded_calculation (pTask=0x9ec650) at /opt/cairo-dock_bzr/cairo-dock-core/src/gldit/cairo-dock-task.c:64
#12 0x00007ffff6445256 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#13 0x00007ffff798ed8c in start_thread () from /lib/x86_64-linux-gnu/libpthread.so.0
#14 0x00007ffff5e5b1bd in clone () from /lib/x86_64-linux-gnu/libc.so.6
#15 0x0000000000000000 in ?? ()
A debugging session is active.
Inferior 1 [process 2207] will be killed.
Quit anyway? (y or n) [answered Y; input not from terminal] Manifestement, c'est un bug dans gtk et une recherche sur gtk nous montre que ce n'est pas nouveau...
Mais du coup, comment peut-on facilement catcher l'erreur?
D'après la doc, cette fonction ne semble pas gérer l'erreur, (gtk_icon_theme_load_icon oui mais ce n'est pas ce que l'on veut) quels outils peut-on utiliser?
À noter également que j'ai déjà eu des crash avec musicPlayer (plus fréquemment => p-ê DBus?) et Switcher (plus rare). |
Subscription date : 30 November 2007
Messages : 17118
|
embêtant ça
évidemment avec un délai au lancement ça ne le fait pas ?
je vois mal comment fixer ça, il faudrait le reporter aux devs de gtk non ?
pour MP et switcher, tu as pu choper le backtrace ? |
matttbe, Monday 20 June 2011 à 15:34
|
|
Subscription date : 24 January 2009
Messages : 12573
|
évidemment avec un délai au lancement ça ne le fait pas ? En effet.
je vois mal comment fixer ça, il faudrait le reporter aux devs de gtk non ? Oui,... mais si tu recherches le nom de la fonction sur google, tu tombes directement sur de vieux crash de NM et autres.
pour MP et switcher, tu as pu choper le backtrace ? Pas encore. |
Subscription date : 30 November 2007
Messages : 17118
|
Oui,... mais si tu recherches le nom de la fonction sur google, tu tombes directement sur de vieux crash de NM et autres.
preuve qu'ils n'ont rien fait, mais justement ils l'ont sûrement oublié.
c'est tout de même embêtant.
le dock redémarre automatiquement ou bien il affiche un message ? on pourrait ptet (au 1er crash) le relancer avec un délai de 2s et sans message. |
matttbe, Tuesday 21 June 2011 à 15:43
|
|
Subscription date : 24 January 2009
Messages : 12573
|
le dock redémarre automatiquement ou bien il affiche un message ? on pourrait ptet (au 1er crash) le relancer avec un délai de 2s et sans message. Chez moi il redémarre avec le panneau de conf... Il n'y a pas moyen d'avoir un très beau hack? Du genre, si l'uptime est < 1min, alors il redémarre au lieu d'afficher le panneau de conf. |
fabounet, Wednesday 22 June 2011 à 17:51
|
|
Subscription date : 30 November 2007
Messages : 17118
|
en fait, il affiche le panneau de conf s'il plante tout de suite, justement pour que tu puisses éventuellement désactiver ce qui cause ça
il faut que je revoie ça, peut-être le faire en 3 temps (1er plantage => délai de 1s, 2nd plantage: pas de délai, 3ème => panneau) |
matttbe, Wednesday 22 June 2011 à 19:07
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Oui bonne idée
D'un autre côté, ça n'arrive qu'au démarrage (et même) donc il pourrait y avoir un délai plus long avant de redémarrer. D'un autre côté, c'est un plantage... Un petit délai avant de redémarrer est justifié. |
Subscription date : 30 November 2007
Messages : 17118
|
au fait j'ai arrangé ça, normalement le démarrage devrait être transparent même en cas de pépin  |
matttbe, Tuesday 12 July 2011 à 23:36
|
|
Subscription date : 24 January 2009
Messages : 12573
|
A chouette, à tester dès que j'aurai un pc  |
fabounet, Wednesday 13 July 2011 à 12:17
|
|
Subscription date : 30 November 2007
Messages : 17118
|
tu dors sous un pont en ce moment ? |
matttbe, Wednesday 13 July 2011 à 13:13
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Non mais je n'avais pas mon pc et maintenant, je dois le renvoyer en réparation (enfin, sous garantie).
Mais finalement, je viens d'avoir tout le backtrace, j'espère que ça leur aidera à fixer le crash: https://bugzilla.gnome.org/show_bug.cgi?id=653410 |
Subscription date : 30 November 2007
Messages : 17118
|
oh je vois, la fonction gtk_icon_theme_lookup_icon() est appelée depuis un thread (celui de Shortcuts)
ça n'est peut-être pas évident pour eux, est-ce que tu pourrais le leur signaler stp ? il se peut que leur fonction ne soit pas thread-safe (ça serait mal !) et du coup crashe quand 2 threads l'appellent simultanément. |
matttbe, Tuesday 19 July 2011 à 14:04
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Détail rapporté  |
fabounet, Wednesday 20 July 2011 à 16:47
|
|
Subscription date : 30 November 2007
Messages : 17118
|
merki
est-ce que tu as pu expérimenté le crash avec les modifs que j'ai faite pour le lancement ? |
matttbe, Wednesday 20 July 2011 à 17:29
|
|
Subscription date : 24 January 2009
Messages : 12573
|
N'ayant plus pour le moment mon ordi sous Oneiric, non
Mais ça n'arrivait que très rarement... |
matttbe, Wednesday 30 May 2012 à 11:31
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Juste en passant, ayant encore par moments des crashes avec gtk_icon_theme_lookup_icon et la derniere version de gtk+3, j'ai protégé la fonction (utilisee qu'une fois dans le core, pas de risque de deadlocks) avec un mutex en attendant un possible fix dans GTK  |
Subscription date : 30 November 2007
Messages : 17118
|
ah, en effet ça contourne, bien vu
un peu dommage tout de même de plomber cette fonction qui est très souvent utilisée.
peut-être qu'on aurait pu ne pas l'utiliser dans le thread, mais dans la 2ème partie de la CairoTask (qui est dans la main loop) ?
enfin ça ne serait pas un bien meilleur contournement vivement qu'ils fixent ça ! |
matttbe, Wednesday 30 May 2012 à 18:31
|
|
Subscription date : 24 January 2009
Messages : 12573
|
Je n'ai plus ce crash par contre, j'ai tenté de le reproduire via un petit programme et pas moyen... je lui ai créé 10 threads (pthread, pas de GThread) pour faire 200 boucles de recherche d'une centaine de nom dans theme par defaut et là, tout roule, pas de crash... |
Subscription date : 30 November 2007
Messages : 17118
|
ouais, c'est bien un problème de multi-thread mal géré dans leur fonction ... ça devrait pas être bien compliqué à trouver maintenant que tu les as aiguillonnés |
Git Version | Version Git
|