! Please note that this is a snapshot of our old Bugzilla server, which is read only since May 29, 2020. Please go to gitlab.xfce.org for our new server !
Crashes & Freezes if "show hidden files" is switched on/off
Status:
CLOSED: REMIND

Comments

Description Jan Rathmann 2006-11-05 14:32:32 CET
User-Agent:       Mozilla/5.0 (X11; U; Linux x86_64; de-AT; rv:1.8.0.7) Gecko/20060913 SeaMonkey/1.0.5
Build Identifier: 

What I desribe here is another thing that started to happen when I switched from Ubuntu Dapper to Edgy recently (independent of the version of Thunar I'm using). Thunar tends to become sort of "unstable" if I turn "show hidden files" on (usually when I'm in my home directory). First there is a really heavy disc usage for ~ 20 sec. (maybe directorys are scanned if they contain subdirectories?). Then everythings seems to work fine, untill I switch "show hidden files" off again. Again there is heavy disc usage as described above, but this time Thunar seems to get caught in a sort of infinite loop and causes high CPU usage. The user interface responds very slow and when I try to continue to work with it, most times at one point it freezes completely and the window cannot be closed in a normal way (I have to kill Thunar).
I can also reproduce a crash (I'm not sure whether this is a different problem or not), when I disable "show hidden files" (in a situation as described above) and I have visited a hidden directory before, its entry is displayed as "selected" in the tree view and remains visible after disabling "show hidden files". If I select now a directory above this hidden directory in the tree view, Thunar crashes immediately with this command line output:

Gtk-CRITICAL **: gtk_tree_model_row_has_child_toggled: assertion `path != NULL' failed

I would happily deliver a debug output but I'm not sure how to get one. I already tried to observe with strace what Thunar is doing while it is in the described infinite loop; my terminal then gets filled with continueing messages like this:

close(11)                               = 0
open("/proc/driver/snd-page-alloc", O_RDONLY) = 11
close(11)                               = 0
open("/proc/asound/version", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/devices", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/cards", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/asound/modules", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/timers", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/asound/pcm", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/asound/hwdep", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/acpi/info", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/acpi/dsdt", O_RDONLY)       = -1 EACCES (Permission denied)
open("/proc/acpi/fadt", O_RDONLY)       = -1 EACCES (Permission denied)
open("/proc/acpi/sleep", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/acpi/alarm", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/acpi/wakeup", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/tty/ldiscs", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/tty/drivers", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/sem", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/msg", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/shm", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/scsi/scsi", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/scsi/device_info", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/netlink", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/protocols", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/dev", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/softnet_stat", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/wireless", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/dev_mcast", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/psched", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/arp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/rt_cache", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/rt_acct", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/igmp", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/mcfilter", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/ip_mr_vif", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/ip_mr_cache", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/raw", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/tcp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/udp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/route", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/netstat", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/snmp", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/sockstat", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/tr_rif", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/unix", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/packet", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/igmp6", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/mcfilter6", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/raw6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/tcp6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/udp6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/snmp6", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/sockstat6", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/anycast6", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/if_inet6", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/ipv6_route", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/net/rt6_stats", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/ip6_flowlabel", O_RDONLY) = 11
close(11)                               = 0
open("/proc/ide/drivers", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/ide/ali", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/driver/rtc", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/driver/snd-page-alloc", O_RDONLY) = 11
close(11)                               = 0
open("/proc/asound/version", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/devices", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/cards", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/asound/modules", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/timers", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/asound/pcm", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/asound/hwdep", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/acpi/info", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/acpi/dsdt", O_RDONLY)       = -1 EACCES (Permission denied)
open("/proc/acpi/fadt", O_RDONLY)       = -1 EACCES (Permission denied)
open("/proc/acpi/sleep", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/acpi/alarm", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/acpi/wakeup", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/tty/ldiscs", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/tty/drivers", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/sem", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/msg", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/shm", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/scsi/scsi", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/scsi/device_info", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/netlink", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/protocols", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/dev", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/softnet_stat", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/wireless", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/dev_mcast", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/psched", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/arp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/rt_cache", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/rt_acct", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/igmp", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/mcfilter", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/ip_mr_vif", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/ip_mr_cache", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/raw", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/tcp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/udp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/route", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/netstat", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/snmp", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/sockstat", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/tr_rif", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/unix", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/packet", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/igmp6", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/mcfilter6", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/raw6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/tcp6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/udp6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/snmp6", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/sockstat6", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/anycast6", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/if_inet6", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/ipv6_route", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/net/rt6_stats", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/ip6_flowlabel", O_RDONLY) = 11
close(11)                               = 0
open("/proc/ide/drivers", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/ide/ali", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/driver/rtc", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/driver/snd-page-alloc", O_RDONLY) = 11
close(11)                               = 0
open("/proc/asound/version", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/devices", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/cards", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/asound/modules", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/timers", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/asound/pcm", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/asound/hwdep", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/acpi/info", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/acpi/dsdt", O_RDONLY)       = -1 EACCES (Permission denied)
open("/proc/acpi/fadt", O_RDONLY)       = -1 EACCES (Permission denied)
open("/proc/acpi/sleep", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/acpi/alarm", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/acpi/wakeup", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/tty/ldiscs", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/tty/drivers", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/sem", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/msg", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/shm", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/scsi/scsi", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/scsi/device_info", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/netlink", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/protocols", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/dev", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/softnet_stat", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/wireless", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/dev_mcast", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/psched", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/arp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/rt_cache", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/rt_acct", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/igmp", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/mcfilter", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/ip_mr_vif", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/ip_mr_cache", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/raw", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/tcp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/udp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/route", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/netstat", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/snmp", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/sockstat", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/tr_rif", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/unix", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/packet", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/igmp6", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/mcfilter6", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/raw6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/tcp6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/udp6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/snmp6", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/sockstat6", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/anycast6", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/if_inet6", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/ipv6_route", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/net/rt6_stats", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/ip6_flowlabel", O_RDONLY) = 11
close(11)                               = 0
open("/proc/ide/drivers", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/ide/ali", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/driver/rtc", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/driver/snd-page-alloc", O_RDONLY) = 11
close(11)                               = 0
open("/proc/asound/version", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/devices", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/cards", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/asound/modules", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/asound/timers", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/asound/pcm", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/asound/hwdep", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/acpi/info", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/acpi/dsdt", O_RDONLY)       = -1 EACCES (Permission denied)
open("/proc/acpi/fadt", O_RDONLY)       = -1 EACCES (Permission denied)
open("/proc/acpi/sleep", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/acpi/alarm", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/acpi/wakeup", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/tty/ldiscs", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/tty/drivers", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/sem", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/msg", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/sysvipc/shm", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/scsi/scsi", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/scsi/device_info", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/netlink", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/protocols", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/dev", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/softnet_stat", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/wireless", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/dev_mcast", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/psched", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/arp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/rt_cache", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/rt_acct", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/igmp", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/mcfilter", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/ip_mr_vif", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/ip_mr_cache", O_RDONLY) = 11
close(11)                               = 0
open("/proc/net/raw", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/tcp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/udp", O_RDONLY)         = 11
close(11)                               = 0
open("/proc/net/route", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/netstat", O_RDONLY)     = 11
close(11)                               = 0
open("/proc/net/snmp", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/sockstat", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/tr_rif", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/unix", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/packet", O_RDONLY)      = 11
close(11)                               = 0
open("/proc/net/igmp6", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/mcfilter6", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/raw6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/tcp6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/udp6", O_RDONLY)        = 11
close(11)                               = 0
open("/proc/net/snmp6", O_RDONLY)       = 11
close(11)                               = 0
open("/proc/net/sockstat6", O_RDONLY)   = 11
close(11)                               = 0
open("/proc/net/anycast6", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/if_inet6", O_RDONLY)    = 11
close(11)                               = 0
open("/proc/net/ipv6_route", O_RDONLY)  = 11
close(11)                               = 0
open("/proc/net/rt6_stats", O_RDONLY)   = 11
close(11)                               = 0



Reproducible: Always

Steps to Reproduce:
1. Turn "show hidden files" on.
2. Do something.
3. Turn it off again.

Actual Results:  
Crashes & freezes as described above.

Expected Results:  
A still usable instance of Thunar ;)

My current OS is Ubuntu Edgy AMD64, it seems to include GTK 2.10.6 and Glib 2.12.4.
Comment 1 Benedikt Meurer editbugs 2006-11-05 14:38:57 CET
You can use gdb to get a backtrace of the crash. Does the problem also show with the shortcuts pane?
Comment 2 Jan Rathmann 2006-11-05 15:36:33 CET
I checked it, it does only happen with the tree view indeed.
I have to correct myself at one point, the crashes I described only occur with the newest svn version (23720) but I couldn't reproduce them with the one I compiled yesterday (23627).
Furthermore I have tried to get a backtrace of the crash with gdb, but I'm not sure if this is the right thing since I didn't have any experience with debugging programs so far. This is what the command 'backtrace' in gdb printed out after Thunar crashed:

#0  0x00002acc95ac747b in raise () from /lib/libc.so.6
#1  0x00002acc95ac8da0 in abort () from /lib/libc.so.6
#2  0x00002acc95816d70 in g_logv () from /usr/lib/libglib-2.0.so.0
#3  0x00002acc95816df3 in g_log () from /usr/lib/libglib-2.0.so.0
#4  0x00002acc94813a1b in gtk_tree_model_filter_convert_child_iter_to_iter ()
   from /usr/lib/libgtk-x11-2.0.so.0
#5  0x00002acc9523248a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#6  0x00002acc95241a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
#7  0x00002acc95242e43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#8  0x00002acc95243013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#9  0x000000000046dbd7 in thunar_tree_model_item_notify_loading (
    item=<value optimized out>, pspec=<value optimized out>, 
    folder=<value optimized out>) at thunar-tree-model.c:1500
#10 0x00002acc9523248a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#11 0x00002acc95241a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
#12 0x00002acc95242e43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#13 0x00002acc95243013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#14 0x00002acc9523626f in g_object_class_override_property ()
   from /usr/lib/libgobject-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#15 0x00002acc95236e56 in g_object_notify () from /usr/lib/libgobject-2.0.so.0
#16 0x00002acc9523248a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#17 0x00002acc95241a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
#18 0x00002acc95242e43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#19 0x00002acc95243013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#20 0x00002acc9427c9fb in thunar_vfs_job_source_dispatch (
    source=<value optimized out>, callback=<value optimized out>, 
    user_data=<value optimized out>) at thunar-vfs-job.c:453
#21 0x00002acc9580ec84 in g_main_context_dispatch ()
   from /usr/lib/libglib-2.0.so.0
#22 0x00002acc95811acd in g_main_context_check ()
   from /usr/lib/libglib-2.0.so.0
#23 0x00002acc95811dda in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#24 0x00002acc947435f3 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#25 0x000000000041dda0 in main (argc=1, argv=0x7fff1695f0f8) at main.c:239
(gdb) 
(gdb) bt
#0  0x00002acc95ac747b in raise () from /lib/libc.so.6
#1  0x00002acc95ac8da0 in abort () from /lib/libc.so.6
#2  0x00002acc95816d70 in g_logv () from /usr/lib/libglib-2.0.so.0
#3  0x00002acc95816df3 in g_log () from /usr/lib/libglib-2.0.so.0
#4  0x00002acc94813a1b in gtk_tree_model_filter_convert_child_iter_to_iter ()
   from /usr/lib/libgtk-x11-2.0.so.0
#5  0x00002acc9523248a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#6  0x00002acc95241a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
#7  0x00002acc95242e43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#8  0x00002acc95243013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#9  0x000000000046dbd7 in thunar_tree_model_item_notify_loading (
    item=<value optimized out>, pspec=<value optimized out>, 
    folder=<value optimized out>) at thunar-tree-model.c:1500
#10 0x00002acc9523248a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#11 0x00002acc95241a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
#12 0x00002acc95242e43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#13 0x00002acc95243013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#14 0x00002acc9523626f in g_object_class_override_property ()
   from /usr/lib/libgobject-2.0.so.0
---Type <return> to continue, or q <return> to quit---
#15 0x00002acc95236e56 in g_object_notify () from /usr/lib/libgobject-2.0.so.0
#16 0x00002acc9523248a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#17 0x00002acc95241a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
#18 0x00002acc95242e43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
#19 0x00002acc95243013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#20 0x00002acc9427c9fb in thunar_vfs_job_source_dispatch (
    source=<value optimized out>, callback=<value optimized out>, 
    user_data=<value optimized out>) at thunar-vfs-job.c:453
#21 0x00002acc9580ec84 in g_main_context_dispatch ()
   from /usr/lib/libglib-2.0.so.0
#22 0x00002acc95811acd in g_main_context_check ()
   from /usr/lib/libglib-2.0.so.0
#23 0x00002acc95811dda in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#24 0x00002acc947435f3 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#25 0x000000000041dda0 in main (argc=1, argv=0x7fff1695f0f8) at main.c:239
Comment 3 Jan Rathmann 2006-11-05 15:40:03 CET
Oh, I think I should explain in more detail, with "crashes" in my last comment I don't mean the infinite loop thing that I described first, this can be seen on all versions of Thunar so far.
Comment 4 Benedikt Meurer editbugs 2006-11-06 19:16:01 CET
Hm, please build Thunar with --enable-debug=full. And it would help if you could install a GTK+ library with debug symbols.
Comment 5 Jan Rathmann 2006-11-06 20:19:03 CET
I already compiled the version I used for the backtrace with --enable-debug=full, did it seem as if this was not the case?
Installing gtk-libs with debug symbol seems not to be a problem. But I want to ask, the last time I just started gdb, run Thunar from within and issued the backtrace command after is was crashed, was this the right thing or can I do something more within gdb? It also seemed as if no information about this annoying  loop were recorded at my first attempt, is there any way I can do this?
Comment 6 Jan Rathmann 2006-11-07 17:01:45 CET
Next attempt, with libgtk2.0-dbg and 'backtrace full':

Gtk-CRITICAL **: gtk_tree_model_row_has_child_toggled: assertion `path != NULL' failed
aborting...

Program received signal SIGABRT, Aborted.
[Switching to Thread 46969994102272 (LWP 5121)]
0x00002ab80bb8f47b in raise () from /lib/libc.so.6
(gdb) bt full
#0  0x00002ab80bb8f47b in raise () from /lib/libc.so.6
No symbol table info available.
#1  0x00002ab80bb90da0 in abort () from /lib/libc.so.6
No symbol table info available.
#2  0x00002ab80b8ded70 in g_logv () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#3  0x00002ab80b8dedf3 in g_log () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#4  0x00002ab80a8dba1b in gtk_tree_model_filter_row_deleted (
    c_model=<value optimized out>, c_path=<value optimized out>, data=0x7cc210)
    at gtktreemodelfilter.c:1834
        iter = {stamp = -1001484217, user_data = 0xd2fda0, 
  user_data2 = 0x1395400, user_data3 = 0x2ab80b8f3938}
        path = (GtkTreePath *) 0x0
        filter = <value optimized out>
        path = (GtkTreePath *) 0x16fc7e0
        iter = {stamp = -1001484217, user_data = 0xd478d0, 
  user_data2 = 0xbe7600, user_data3 = 0x7fffa0895d30}
        elt = <value optimized out>
        parent = (FilterElt *) 0x1395400
        level = (FilterLevel *) 0xd478d0
        parent_level = (FilterLevel *) 0xd2fda0
        emit_child_toggled = 1
---Type <return> to continue, or q <return> to quit---
        offset = <value optimized out>
        i = 10936
        __PRETTY_FUNCTION__ = "gtk_tree_model_filter_row_deleted"
#5  0x00002ab80b2fa48a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#6  0x00002ab80b309a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#7  0x00002ab80b30ae43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#8  0x00002ab80b30b013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#9  0x000000000046db87 in ?? ()
No symbol table info available.
#10 0x00002ab80b2fa48a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#11 0x00002ab80b309a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#12 0x00002ab80b30ae43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#13 0x00002ab80b30b013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#14 0x00002ab80b2fe26f in g_object_class_override_property ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#15 0x00002ab80b2fee56 in g_object_notify () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#16 0x00002ab80b2fa48a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#17 0x00002ab80b309a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#18 0x00002ab80b30ae43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#19 0x00002ab80b30b013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#20 0x00002ab80a3449fb in thunar_vfs_job_cancelled ()
   from /usr/local/lib/libthunar-vfs-1.so.2
No symbol table info available.
#21 0x00002ab80b8d6c84 in g_main_context_dispatch ()
   from /usr/lib/libglib-2.0.so.0
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#22 0x00002ab80b8d9acd in g_main_context_check ()
   from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#23 0x00002ab80b8d9dda in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#24 0x00002ab80a80b5f3 in IA__gtk_main () at gtkmain.c:1024
        tmp_list = (GList *) 0x5facf0
        functions = (GList *) 0x0
        init = (GtkInitFunction *) 0xa2bc30
        loop = (GMainLoop *) 0x5c8490
#25 0x000000000041dd50 in ?? ()
No symbol table info available.
#26 0x00002ab80bb7c0c4 in __libc_start_main () from /lib/libc.so.6
No symbol table info available.
#27 0x000000000041b899 in ?? ()
No symbol table info available.
#28 0x00007fffa0897058 in ?? ()
No symbol table info available.
#29 0x0000000000000000 in ?? ()
No symbol table info available.
(gdb) 
Comment 7 Benedikt Meurer editbugs 2006-11-10 19:06:07 CET
Hm, still the thunar-vfs debug symbols missing. Do you have two different installations of Thunar?
Comment 8 Jan Rathmann 2006-11-10 20:36:16 CET
No, of course only one ;-) Now I wiped out Thunar completely on my system, checked out a new svn version and compiled it with full debug support, but still the backtrace doesn't change significantly... Is the command

./autogen.sh --prefix=/usr/local --enable-debug=full

correct to enable full debug support?
Comment 9 Benedikt Meurer editbugs 2006-11-11 10:08:27 CET
Yes. Can you post the new backtrace?
Comment 10 Jan Rathmann 2006-11-11 11:10:21 CET
Of course (I swear that I compiled this version with full debug support and removed any older version of Thunar before installing this one):

Gtk-CRITICAL **: gtk_tree_model_row_has_child_toggled: assertion `path != NULL' failed
aborting...

Program received signal SIGABRT, Aborted.
[Switching to Thread 47907146360320 (LWP 5591)]
0x00002b923e59947b in raise () from /lib/libc.so.6
(gdb) bt full
#0  0x00002b923e59947b in raise () from /lib/libc.so.6
No symbol table info available.
#1  0x00002b923e59ada0 in abort () from /lib/libc.so.6
No symbol table info available.
#2  0x00002b923e2e8d70 in g_logv () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#3  0x00002b923e2e8df3 in g_log () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#4  0x00002b923d2e5a1b in gtk_tree_model_filter_row_deleted (
    c_model=<value optimized out>, c_path=<value optimized out>, data=0x7d1a20)
    at gtktreemodelfilter.c:1834
        iter = {stamp = 2122912308, user_data = 0xc94f10, 
  user_data2 = 0x1147e00, user_data3 = 0x2b923e2fd938}
        path = (GtkTreePath *) 0x0
        filter = <value optimized out>
        path = (GtkTreePath *) 0xc5d300
        iter = {stamp = 2122912308, user_data = 0xaffa20, 
  user_data2 = 0xc94f40, user_data3 = 0x7fff6de8e310}
        elt = <value optimized out>
        parent = (FilterElt *) 0x1147e00
        level = (FilterLevel *) 0xaffa20
        parent_level = (FilterLevel *) 0xc94f10
        emit_child_toggled = 1
---Type <return> to continue, or q <return> to quit---
        offset = <value optimized out>
        i = 11154
        __PRETTY_FUNCTION__ = "gtk_tree_model_filter_row_deleted"
#5  0x00002b923dd0448a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#6  0x00002b923dd13a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#7  0x00002b923dd14e43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#8  0x00002b923dd15013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#9  0x000000000046dbc7 in ?? ()
No symbol table info available.
#10 0x00002b923dd0448a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#11 0x00002b923dd13a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#12 0x00002b923dd14e43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#13 0x00002b923dd15013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#14 0x00002b923dd0826f in g_object_class_override_property ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#15 0x00002b923dd08e56 in g_object_notify () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#16 0x00002b923dd0448a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#17 0x00002b923dd13a08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#18 0x00002b923dd14e43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#19 0x00002b923dd15013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#20 0x00002b923cd4e9fb in thunar_vfs_job_cancelled ()
   from /usr/local/lib/libthunar-vfs-1.so.2
No symbol table info available.
#21 0x00002b923e2e0c84 in g_main_context_dispatch ()
   from /usr/lib/libglib-2.0.so.0
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#22 0x00002b923e2e3acd in g_main_context_check ()
   from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#23 0x00002b923e2e3dda in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#24 0x00002b923d2155f3 in IA__gtk_main () at gtkmain.c:1024
        tmp_list = (GList *) 0x5fad00
        functions = (GList *) 0x0
        init = (GtkInitFunction *) 0x605380
        loop = (GMainLoop *) 0x608c50
#25 0x000000000041dd50 in ?? ()
No symbol table info available.
#26 0x00002b923e5860c4 in __libc_start_main () from /lib/libc.so.6
No symbol table info available.
#27 0x000000000041b899 in ?? ()
No symbol table info available.
#28 0x00007fff6de8f638 in ?? ()
No symbol table info available.
#29 0x0000000000000000 in ?? ()
No symbol table info available.


And another backtrace, where just the freeze happened (I had to kill Thunar):

Program received signal SIGTERM, Terminated.
[Switching to Thread 47474932487680 (LWP 5552)]
0x00002b2d9c51a0fb in __write_nocancel () from /lib/libpthread.so.0
(gdb) bt full
#0  0x00002b2d9c51a0fb in __write_nocancel () from /lib/libpthread.so.0
No symbol table info available.
#1  0x00002b2d9d6d218d in ?? () from /usr/lib/libgamin-1.so.0
No symbol table info available.
#2  0x00002b2d9d6d2500 in ?? () from /usr/lib/libgamin-1.so.0
No symbol table info available.
#3  0x00002b2d9d6d3bf8 in FAMCancelMonitor () from /usr/lib/libgamin-1.so.0
No symbol table info available.
#4  0x00002b2d9ae12584 in thunar_vfs_monitor_remove ()
   from /usr/local/lib/libthunar-vfs-1.so.2
No symbol table info available.
#5  0x0000000000433e48 in ?? ()
No symbol table info available.
#6  0x00002b2d9bdbf48a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#7  0x00002b2d9bdcea08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#8  0x00002b2d9bdcfe43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#9  0x00002b2d9bdd0013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#10 0x00002b2d9bdbf48a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#11 0x00002b2d9bdcee58 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#12 0x00002b2d9bdcfe43 in g_signal_emit_valist ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#13 0x00002b2d9bdd0013 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#14 0x0000000000432552 in ?? ()
No symbol table info available.
#15 0x0000000000434779 in ?? ()
No symbol table info available.
#16 0x00002b2d9ae00bf1 in thunar_vfs_monitor_event_get_type ()
   from /usr/local/lib/libthunar-vfs-1.so.2
No symbol table info available.
#17 0x00002b2d9bdbf48a in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#18 0x00002b2d9bdcea08 in g_signal_chain_from_overridden ()
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#19 0x00002b2d9bdcfc17 in g_signal_emit_valist ()
---Type <return> to continue, or q <return> to quit---
   from /usr/lib/libgobject-2.0.so.0
No symbol table info available.
#20 0x00002b2d9ae09a6f in thunar_vfs_job_cancelled ()
   from /usr/local/lib/libthunar-vfs-1.so.2
No symbol table info available.
#21 0x00002b2d9c39bc84 in g_main_context_dispatch ()
   from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#22 0x00002b2d9c39eacd in g_main_context_check ()
   from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#23 0x00002b2d9c39edda in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
No symbol table info available.
#24 0x00002b2d9b2d05f3 in IA__gtk_main () at gtkmain.c:1024
        tmp_list = (GList *) 0x5fad00
        functions = (GList *) 0x0
        init = (GtkInitFunction *) 0x605380
        loop = (GMainLoop *) 0x608c50
#25 0x000000000041dd50 in ?? ()
No symbol table info available.
#26 0x00002b2d9c6410c4 in __libc_start_main () from /lib/libc.so.6
No symbol table info available.
#27 0x000000000041b899 in ?? ()
---Type <return> to continue, or q <return> to quit---
No symbol table info available.
#28 0x00007fff0fdd4578 in ?? ()
No symbol table info available.
#29 0x0000000000000000 in ?? ()
No symbol table info available.
Comment 11 juha editbugs 2006-11-13 09:50:47 CET
I can reproduce the cpu problems and the Gtk critical message, but not the crash.
And this only reproduces with Ubuntu Edgy, it works perfectly with older Dapper.

cpu usage is 100% and more or less half is in %us and half in %wa (looking from
top).

Edgy has GTK+ 2.10.6 and Dapper has 2.8.20.
Comment 12 Jasper Huijsmans editbugs 2006-12-10 08:51:23 CET
(In reply to comment #11)
> I can reproduce the cpu problems and the Gtk critical message, but not the
> crash.

The crash is not a real crash, it's an abort from g_return_if_fail(path!=NULL) that happens when you compile with debug=full or run with --g-fatal-warnings.

I tried to find out what's going on, but I'm afraid this is a bit too complicated for me. 

I think it may be a race condition between threads. There is a lot of activity, so I think there may be a signal triggering itself. My backtrace is slightly different, it seems:

Gtk-CRITICAL **: gtk_tree_model_row_has_child_toggled: assertion `path != NULL' failed
aborting...

Program received signal SIGABRT, Aborted.
[Switching to Thread -1220593968 (LWP 4470)]
0xb7f99410 in ?? ()
(gdb) bt
...
#8  0xb793818d in g_return_if_fail_warning () from /usr/lib/libglib-2.0.so.0
#9  0xb7db8166 in IA__gtk_tree_model_row_has_child_toggled (tree_model=0xb7edaba4, path=0x0, 
    iter=0xbfc878f4) at gtktreemodel.c:1512
#10 0xb7dbe476 in gtk_tree_model_filter_row_deleted (c_model=0x835f0c8, c_path=0x898df50, 
    data=0x834cc00) at gtktreemodelfilter.c:1834
#11 0xb79f9a8b in g_cclosure_marshal_VOID__BOXED () from /usr/lib/libgobject-2.0.so.0
#12 0xb79ed07b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#13 0xb79fd4e9 in signal_emit_unlocked_R () from /usr/lib/libgobject-2.0.so.0
#14 0xb79fe9a9 in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#15 0xb79feb59 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#16 0xb7db8083 in IA__gtk_tree_model_row_deleted (tree_model=0x835f0c8, path=0x898df50)
    at gtktreemodel.c:1535
#17 0x080b56d6 in thunar_tree_model_item_notify_loading (item=0x8707430, pspec=0x83c7c00, 
    folder=0x89cc9b0) at thunar-tree-model.c:1500
#18 0xb79f9b3b in g_cclosure_marshal_VOID__PARAM () from /usr/lib/libgobject-2.0.so.0
#19 0xb79ed07b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0

The thunar_tree_model_item_notify_loading() function specifically tests for the path not being NULL, so I guess it must be another thread that removes it while this callback is still running.

Benny, can I do more to help you find the problem?

Comment 13 Benedikt Meurer editbugs 2006-12-12 08:15:16 CET
Thunar doesn't use threaded GTK+, so only the main thread will ever call GTK+ functions. I'll see to this when I'm back at home (hopefully).
Comment 14 Jan Rathmann 2007-01-08 17:06:53 CET
Now I was able to test the current version of Thunar and I couldn't reproduce that crash anymore so far.
But this sort of endless loop remains, it is simple to reproduce on my system. I just have to enable "show hidden files" on a fresh started instance of Thunar, then (if I didn't do the same a short time before) heavy disc usage appears for a while, when I disable "show hidden files" now again, then Thunar begins to eat a lot of cpu power until I quit it (together with heavy disc usage again for a while). 
Comment 15 Jan Rathmann 2007-04-09 16:44:27 CEST
Today I did some further testing and I think I maybe have found a way to reproduce the problem beyond my own system.

If I

- download one of the Xubuntu Daily Live CDs at http://cdimage.ubuntu.com/xubuntu/daily-live/

- boot my PC with it

- start Thunar and switch to tree view

- switch "show hidden files" on and off again


then Thunar starts to continously consume CPU time (around 6 - 10 % on my system). I do not need to mount any of my disk partitions to make that happen.

I hope this helps to triage this bug.


Comment 16 Nate Crandall 2008-04-27 05:24:00 CEST
(In reply to comment #0)
> Gtk-CRITICAL **: gtk_tree_model_row_has_child_toggled: assertion `path != NULL'
> failed

Seems to be an old bug report, but...

I'm getting the exact same error in Thunar 0.9.0 and Linux 2.6.24.4 x86_64: 

(Thunar:15780): Gtk-CRITICAL **: gtk_tree_model_row_has_child_toggled: assertion `path != NULL' failed

Thunar freezes after turning "show hidden files" on and off a couple times -- CPU running about 50%-80%. Killing Thunar via "killall -9 Thunar" is only way to close window -- CPU returns to ~0%. 
As mentioned in this thread, turning off "Tree" view seems to resolve the problem completely.

-nate




Comment 17 dreadmeat 2008-08-23 07:04:50 CEST
i get this too, x86-32 though not x86-64
disabling folder view or using shortcuts view 'fixes' it.

i like tree view =(

am i blind?! where is the "subscribe to this bug" button =s
Comment 18 cruxic 2008-10-16 03:38:58 CEST
This bug is alive and well even now.  It's been annoying me ever since I started using XUbuntu so I'm finally getting off my lazy rear and reporting it here.

It is VERY reproducible as Jan described in comment #15.  I'll take it a bit further and show you how to freeze Thunar:

1) Download the latest XUbuntu live cd (I used the Intrepid Ibex beta)
2) Start from the Live CD
3) Open Thunar by clicking Places->Ubuntu
4) Enable the Tree view (View->Side Pane->Tree)
5) Select "Show hidden files" from the view menu
6) Double click all the way into: .gconf/apps/gnome-screensaver
7) Disable "Show hidden files"
8) Click .gconf in the tree view
9) Try to click apps

At this point Thunar will be frozen.  If not continue on from step #9 by clicking different subfolders of .gconf and then folders in the tree.  You don't really need to use a Live CD to reproduce it - but at least that removes any ambiguity about the software environment.

I'm certain this bug has been causing many users grief for the last few years.  I've noticed it on every machine that I've installed XUbuntu on (XFCE + Ubuntu = Awesome!).  Count my vote for getting this one fixed.
Comment 19 dreadmeat 2008-11-12 04:39:49 CET
(In reply to comment #17)
> i get this too, x86-32 though not x86-64
> disabling folder view or using shortcuts view 'fixes' it.
> 
> i like tree view =(
> 
> am i blind?! where is the "subscribe to this bug" button =s

this still exists in intrepid.
Comment 20 Thorsten Mühlfelder 2008-11-13 14:59:46 CET
This bug is annoying me since ages, too. Sometimes Thunar freezes, when I enter a hidden directory in the address bar and start browsing this directory.
Comment 21 David Mohr 2008-11-13 20:56:38 CET
I can confirm the freeze with beta1 on gentoo.

Actually, it's not completely frozen, after a while the main thread is entered again, and the window is updated.

I will attached a couple of seconds of strace -p.
Comment 22 David Mohr 2008-11-13 20:57:12 CET
Created attachment 1972 
strace of thunar being almost frozen
Comment 23 Yves-Alexis Perez editbugs 2008-11-13 21:08:25 CET
That looks a bit like bug #4051 for the tree view and fam part.
Comment 24 David Mohr 2008-11-13 21:19:11 CET
Eventually thunar just got stuck on the following system call:

write(6, " \0\1\0\307$\22\0\26\0/proc/10795/root/lib32"..., 32
Comment 25 Nick Schermer editbugs 2008-11-13 22:34:34 CET
Created attachment 1973 
Attempt to fix this bug

Bug is caused the visible filter function, it traverses the treeview, but when it reaches a leave the leaf is loaded by the _node_ref function in the model, so more and more folders are loaded in the tree. Resulting in monitoring the /proc folder which locks thunar and abuses the harddrive.

Attached patch should fix the bug, hopefully it compiles, because i backported it from a checkout that was full of debug crap ;-).
Comment 26 Yves-Alexis Perez editbugs 2008-11-14 06:32:10 CET
(In reply to comment #25)
> Attached patch should fix the bug, hopefully it compiles, because i backported
> it from a checkout that was full of debug crap ;-).

It seems to be ok. I'll watch it a bit before reporting final decision, but it looks good. (but I wasn't experiencing the crash)
Comment 27 Nick Schermer editbugs 2008-11-14 06:39:23 CET
Benny can you take a quick look a the patch? The fix is a bit ugly, but I couldn't think of an other way to prevent node_ref from loading the dummies when gtk does a foreach() in the treeview.
Comment 28 Yves-Alexis Perez editbugs 2008-11-14 06:47:12 CET
In fact it seems this is the tooltip icon (which is opened even when not displayed, because the tooltip comes a bit later).

The launcher icon is the 16px one which doesn't appear here (I have a size 20 panel).

Btw do you know how the choice is made between svg and png? Who does it? panel, libxfcegui4, gtk?

Cheers,
Comment 29 Benedikt Meurer editbugs 2008-11-14 08:53:41 CET
GtkIconTheme does it.
Comment 30 Benedikt Meurer editbugs 2008-11-14 08:56:09 CET
The patch looks good as a quick fix. Given that GtkTreeModelFilter is the cause of the problem here, I'd suggest to drop it and integrate the filter into the tree model class to really solve this issue.
Comment 31 Nick Schermer editbugs 2008-11-14 09:34:49 CET
(In reply to comment #30)
> The patch looks good as a quick fix. Given that GtkTreeModelFilter is the cause
> of the problem here, I'd suggest to drop it and integrate the filter into the
> tree model class to really solve this issue.

Well I guess I can take a look in that. Another possibility is a custom version of gtk_tree_model_foreach that does not return the dummy nodes.
Comment 32 peroo 2008-11-14 17:47:10 CET
Hey, great to see this bug's gonna be annullified!!

I've been recently reporting it here, too (but encountered it since Feisty, on different hardware):

https://bugs.launchpad.net/thunar/+bug/293839

Can you guess, when a patch will be availible via Xubuntu's official update-repositories, maybe?


Regards,

peroo
Comment 33 Jannis Pohlmann editbugs 2008-11-15 11:04:23 CET
The patch has been committed to SVN:

  Author: jannis
  Date: 2008-11-15 11:02:53 +0000 (Sat, 15 Nov 2008)
  New Revision: 28809

  Modified:
     thunar/trunk/ChangeLog
     thunar/trunk/thunar/thunar-tree-model.c
     thunar/trunk/thunar/thunar-tree-model.h
     thunar/trunk/thunar/thunar-tree-view.c
  Log:
  	* thunar/thunar-tree-model.{c,h}, thunar/thunar-tree-view.c: Fix
  	  freeze in the tree view pane when the visibility of hidden files is
  	  toggled. Kudos to Nick Schermer for the patch. This fixes bug #2502.
Comment 34 Nick Schermer editbugs 2008-11-15 11:10:49 CET
Keep the bug open since there might be better ways to fix this.

Bug #2502

Reported by:
Jan Rathmann
Reported on: 2006-11-05
Last modified on: 2009-07-17

People

Assignee:
Jannis Pohlmann
CC List:
10 users

Version

Version:
0.5.1svn

Attachments

strace of thunar being almost frozen (6.27 KB, text/plain)
2008-11-13 20:57 CET , David Mohr
no flags
Attempt to fix this bug (2.77 KB, patch)
2008-11-13 22:34 CET , Nick Schermer
no flags

Additional information