Re: [Nautilus-list] gnome-vfs async race condition



Darin Adler <darin eazel com> writes:

> on 10/12/00 10:19 AM, Martin Baulig at martin home-of-linux org wrote:
> 
> > Oh, that'd be good if we could fix this - I wanted to debug my BonoboZoomable
> > thing this afternoon but was unable to do so 'cause gdb doesn't work with the
> > pthread gnome-vfs backend and Nautilus fails to work with the corba one ...
> 
> Can you write a bug report for this one, with steps to reproduce and such?

Basically you just need to run nautilus in gdb on a slow machine to reproduce
this - unfortunately I was unable to reproduce it with a stand-alone nautilus
yet.

However, some debugging showed me the problem:

get_info_callback() is called whenever the VFS finished getting the mime info
for a file:

====
	directory->details->get_info_file = NULL;
	directory->details->get_info_in_progress = NULL;
	
	result = results->data;
	if (result->result != GNOME_VFS_OK) {
		get_info_file->details->get_info_failed = TRUE;
		get_info_file->details->get_info_error = result->result;
	} else {
		nautilus_file_update_info (get_info_file, result->file_info,
					   got_slow_mime_type);
	}
	nautilus_file_changed (get_info_file);
	nautilus_directory_async_state_changed (directory);
===

The above piece of code (from get_info_callback()) results in
start_getting_file_info() being called again
(from nautilus_directory_async_state_changed()) with
directory->details->get_info_in_progress == NULL and thus it reads the
mime info of the same file yet again.

You can also insert a g_message() in file-method.c to see that the mime
info of the same file is fetched multiple times.

-- 
Martin Baulig
martin gnome org (private)
baulig suse de (work)





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]