Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock List of forums Git Version | Version Git Crash causé par gtk_icon_theme_lookup_icon
The latest stable release is the *3.4.0* : How to install it here.
Note: We just switched from BZR to Git on Github! (only to host the code and your future pull requests)
Git Version | Version Git

Subjects Author Language Messages Last message
[Locked] Crash causé par gtk_icon_theme_lookup_icon [Bug #204]
matttbe Français 18 fabounet [Read]
01 June 2012 à 15:57

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)
warning :  (/opt/cairo-dock_bzr/cairo-dock-plug-ins/Dbus/src/applet-dbus.c:cd_dbus_register_module_in_dir:172) 
file /home/mbaerts/.config/cairo-dock/third-party/po/auto-load.conf should not be here
warning :  (/opt/cairo-dock_bzr/cairo-dock-plug-ins/Dbus/src/applet-dbus.c:cd_dbus_register_module_in_dir:172) 
file /home/mbaerts/.config/cairo-dock/third-party/Cardapio_moved/auto-load.conf should not be here
warning :  (/opt/cairo-dock_bzr/cairo-dock-plug-ins/Dbus/src/applet-dbus.c:cd_dbus_register_module_in_dir:172) 
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).

fabounet, Monday 20 June 2011 à 13:07


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.

fabounet, Tuesday 21 June 2011 à 12:43


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é.

fabounet, Tuesday 12 July 2011 à 16:58


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

fabounet, Friday 15 July 2011 à 13:53


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

fabounet, Wednesday 30 May 2012 à 16:39


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...

fabounet, Friday 01 June 2012 à 15:57


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

Subjects Author Language Messages Last message
[Locked] Crash causé par gtk_icon_theme_lookup_icon [Bug #204]
matttbe Français 18 fabounet [Read]
01 June 2012 à 15:57


Glx-Dock / Cairo-Dock List of forums Git Version | Version Git Crash causé par gtk_icon_theme_lookup_icon Top

Online users :

Powered by ElementSpeak © 2007 Adrien Pilleboue, 2009-2013 Matthieu Baerts.
Dock based on CSS Dock Menu (Ndesign) with jQuery. Icons by zgegball
Cairo-Dock is a free software under GNU-GPL3 licence. First stable version created by Fabounet.
Many thanks to TuxFamily for the web Hosting and Mav for the domain name.