Bug#454764: reproducing and GDB output

Vasilis Papavasileiou el03020 at mail.ntua.gr
Fri Aug 22 21:44:29 UTC 2008


Hello,

This happens all the time since I started using Nautilus with the
'--no-desktop' switch. To reproduce open and close Nautilus many times.
Eventually it will start using 100% of the CPU and writing to
nautilus-debug-log.txt.

GDB for one of the processes reveals:

(gdb) thread apply all bt full

Thread 1 (Thread 0x7f7bf1278780 (LWP 17476)):
#0  0x00007f7bebf6ec03 in fputs () from /lib/libc.so.6
No symbol table info available.
#1  0x000000000049ba41 in write_string (
    filename=0x1446c10 "/home/vasilis/nautilus-debug-log.txt", file=0x1, 
    str=0x144df70 "", error=0x3131206c616e6769) at nautilus-debug-log.c:446
No locals.
#2  0x000000000049bb57 in nautilus_debug_log_dump (
    filename=0x1446c10 "/home/vasilis/nautilus-debug-log.txt", error=0x0)
    at nautilus-debug-log.c:508
	file = <value optimized out>
	success = <value optimized out>
	__PRETTY_FUNCTION__ = "nautilus_debug_log_dump"
#3  0x0000000000440104 in dump_debug_log () at nautilus-main.c:213
	filename = 0x7f7bf1292b64 "0 2008/08/23 00:18:03.9508 (USER): debug log dumped due to signal 11\n0xb58220 2008/08/23 00:18:03.9536 (USER): debug log dumped due to signal 11\n0xb58220 2008/08/23 00:18:03.9563 (USER): debug log dum"...
#4  0x0000000000440130 in sigfatal_handler (sig=11) at nautilus-main.c:258
	func = <value optimized out>
#5  <signal handler called>
No symbol table info available.
#6  magazine_cache_push_magazine (ix=1, magazine_chunks=0x0, count=51)
    at /build/buildd/glib2.0-2.16.4/glib/gslice.c:470
	current = (ChunkLink *) 0xbd5b20
	next = <value optimized out>
	prev = <value optimized out>

Notice sigfatal_handler at #4. Soon after that it segfaults:

(gdb) continue
Continuing.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7f7bf1278780 (LWP 17476)]
magazine_cache_push_magazine (ix=1, magazine_chunks=0x0, count=51)
    at /build/buildd/glib2.0-2.16.4/glib/gslice.c:470
470	/build/buildd/glib2.0-2.16.4/glib/gslice.c: No such file or directory.
	in /build/buildd/glib2.0-2.16.4/glib/gslice.c

(gdb) thread apply all bt full

Thread 1 (Thread 0x7f7bf1278780 (LWP 17476)):
#0  magazine_cache_push_magazine (ix=1, magazine_chunks=0x0, count=51)
    at /build/buildd/glib2.0-2.16.4/glib/gslice.c:470
	current = (ChunkLink *) 0xbd5b20
	next = <value optimized out>
	prev = <value optimized out>
#1  0x00007f7bed269c98 in IA__g_slice_free_chain_with_offset (mem_size=24, 
    mem_chain=<value optimized out>, next_offset=8)
    at /build/buildd/glib2.0-2.16.4/glib/gslice.c:744
	current = (guint8 *) 0xbad7a0 "\006"
	tmem = (ThreadMemory *) 0xb58be0
	ix = 1
	slice = (gpointer) 0x0
	chunk_size = 32
#2  0x00007f7bf0b34cf4 in eel_enumeration_free ()
   from /usr/lib/libeel-2-2.20.so

Something causes Nautilus to segfault and the code invoked by sigfatal_handler
to write to nautilus-debug-log.txt crashes itself, so we end up with a loop.
At least Nautilus periodically resets the log and it doesn't grow over 5MB or
so.

The patch linked by Kevin seems to fix the problem (not the original segfault,
but the loop) but I have not tested it. I think the bug is quite serious and
Nautilus is a key part of the "default" Debian desktop, so please apply it.






More information about the pkg-gnome-maintainers mailing list