[plug] odd file manager hangs

Craig Ringer craig at postnewspapers.com.au
Wed Aug 18 15:38:44 WST 2004


Craig Ringer wrote:

> I have not yet been able to reproduce the problem in testing when
> strace()ing a process or running it under gdb, but have observed it on
> users' machines. Trust me, this is not for lack of trying - it seems
> like just before I get to attach a debugger or trace the program, it
> stops doing it.

So of course, now that I've posted I manage to catch it. I seem to have 
a permanently hung filemanager this time though (which I haven't seen 
before) so it may not be the same issue or may be being affected by the 
fact that I'm tracing the process.

Anyway, the main process is waiting on:

sigreturn()                             = ? (mask now [RTMIN])
rt_sigsuspend([]

and that's backed up by ps:

$ ps a --format user,pid,ppid,state,wchan=WCHAN________WIDE,cmd \
| egrep '(nautilus|strace)'
craig    25819 25818 S wait4             strace -o /tmp/trace-22333 
craig    25820 25819 S rt_sigsuspend     nautilus --no-desktop
craig    25841 25840 S rt_sigsuspend     nautilus --no-desktop
craig    25846 25840 S rt_sigsuspend     nautilus --no-desktop
craig    25842 25840 S rt_sigsuspend     nautilus --no-desktop
craig    25845 25840 S rt_sigsuspend     nautilus --no-desktop
craig    25847 25840 S rt_sigsuspend     nautilus --no-desktop
craig    25848 25840 S rt_sigsuspend     nautilus --no-desktop
craig    25849 25840 S rt_sigsuspend     nautilus --no-desktop
craig    25850 25840 S rt_sigsuspend     nautilus --no-desktop
craig    25851 25840 S rt_sigsuspend     nautilus --no-desktop
craig    25852 25840 S rt_sigsuspend     nautilus --no-desktop
craig    25840 25820 T finish_stop       nautilus --no-desktop
root      1395 29710 S pipe_wait         grep -E (nautilus|strace)

(cmd trimmed for email sanity).

The trace flag on 25840 is odd, but I think that's left over from when I 
  attached strace to it earlier - I don't think it was present 
initially. When traced, 25840 appears to be looping over:

poll([{fd=21, events=POLLIN}], 1, 2000) = 0
getppid()                               = 25820
poll([{fd=21, events=POLLIN}], 1, 2000) = 0
getppid()                               = 25820

where fd 21 of the process is:

# ls -al /proc/25840/fd/21
lr-x------    1 craig    users          64 Aug 18 15:02 21 -> pipe:[8476683]

that pipe is attached to:

nautilus  25841    craig   21r  FIFO        0,7             8476683 pipe
nautilus  25841    craig   22w  FIFO        0,7             8476683 pipe

according to lsof (can't seem to see how to use fuser to see what 
processes are attached to a pipe).

None of the other nautilus processes/threads seem to be doing anything 
when strace is attached. I'm not sure if gdb will be useful here, or 
where to start.

fuser reports normal usage on /netstore/current_stories:

                      USER        PID ACCESS COMMAND
/netstore/current_stories
                      root       6153 ..c..  smbd
                      root       9778 ..c..  smbd
                      root      13091 ..c..  afpd
                      root      15977 ..c..  smbd
                      root      17925 ..c..  afpd
                      root      18765 f....  fam
                      root      25938 ..c..  smbd
                      root      27396 ..c..  afpd
                      root      28007 ..c..  afpd

so it looks like the bunch of nautilus processes with the directory open 
may have just been chance before.

Finally, note that the spinner is looping eternally, so nautilus is not 
entirely frozen (though the rest of the window doesn't redraw when it 
needs it, so it's pretty close).

This is all the more frustrating because I don't /use/ a graphical file 
manager myself, I'm just trying to make it work for the others.

Please note that I don't think this is nautilus specific, though I'm not 
100% sure. I'm pretty sure I caught Konqueror doing it at least once in 
my tests, but only briefly.

Summary: it's all very weird. Still, I now seem to have a captive "dead 
nautilus" to poke and prod, so suggestions would be appreciated.

--
Craig Ringer




More information about the plug mailing list