Bug 465479 - nautilus "Computer" window doesn't work
nautilus "Computer" window doesn't work
Product: Fedora
Classification: Fedora
Component: nautilus (Show other bugs)
All Linux
medium Severity medium
: ---
: ---
Assigned To: Tomáš Bžatek
Fedora Extras Quality Assurance
Depends On:
Blocks: F10DesktopBlocker
  Show dependency treegraph
Reported: 2008-10-03 10:49 EDT by Ray Strode [halfline]
Modified: 2015-03-03 17:33 EST (History)
5 users (show)

See Also:
Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2008-10-21 00:06:20 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Ray Strode [halfline] 2008-10-03 10:49:35 EDT
If I doubleclick on "Computer" on my desktop it doesn't show up.  Instead it just sits there with "Loading..." in the titlebar and a gray windows, with the status bar desensitized.
Comment 1 Tomáš Bžatek 2008-10-07 09:45:14 EDT
Can you please try gvfs-1.0.1-5.fc10? You might have experienced similar behaviour as with network:// - a warning message aborting the backend. I had no luck reproducing this original issue though. What gvfs mounts do you have active?
Comment 2 Ray Strode [halfline] 2008-10-07 10:58:20 EDT
It doesn't work with gvfs-1.0.1-5.fc10 either.  The problem seems to be this entry in my ~/.gtk-bookmarks:


Also, I ran gvfsd-computer through valgrind and noticed this:

common/gdbusutils.c (append_escaped_name):
   gboolean first;
   static const gchar hex[16] = "0123456789ABCDEF";
+  first = TRUE;
   while ((c = *unescaped++) != 0)
       if (first)

Notice if you ignore the "+ first = TRUE;" line I added, that the if (first) check is reading first before it's initialized.

The problem is probably unrelated I guess.
Comment 3 Matthias Clasen 2008-10-07 13:05:53 EDT
I think there is more wrong with that append_escaped_name loop.
The first = FALSE assignment needs to be in the if (first) block
Comment 4 Matthias Clasen 2008-10-07 13:10:02 EDT
Also, adding that computer:// bookmark to my .gtk-bookmarks file reproduces the symptoms.
Comment 5 Alexander Larsson 2008-10-17 05:23:17 EDT
Nice spotting of the first = assignment. I'm fixing in svn.
I'll try to add a computer bookmark here.
Comment 6 Alexander Larsson 2008-10-17 06:01:23 EDT
Adding computer:///noexist gives the same failure. Looking into it.
Comment 7 Alexander Larsson 2008-10-17 13:25:25 EDT
The problem is that the bookmark caused the NautilusFile for the bookmark location to immediately be re-created when the file is noticed as deleted. 

Reading computer:/// lead to it being noticed as deleted, and the new NautilusFile created caused problems due to another bug where we don't correctly handle files being added to a directory while we're doing call_when_ready() waiting for all files in the directory. The problem is that we only queue i/o for the files that exist when call_when_ready() is called, but we require *all* files to be done before calling the callback, and the newly added file won't get queued for i/o.

The fix for the bookmarks issue is to not immediately re-create the file when deleted. I've commited this to head and gnome-2-24, and it will be in the next version (on monday). 

I've also got a fix for the race condition, but that is more risky (for instance, it loops if the bookmarks case isn't fixed), so it goes on trunk only.
Comment 8 Matthias Clasen 2008-10-21 00:06:20 EDT
Should be fixed in 2.24.1 in rawhide

Note You need to log in before you can comment on or make changes to this bug.