[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