You are not logged in.

1

Thursday, June 7th 2007, 8:00pm

kdesktop holds .desktop file open

I've got an environment with some shared users with NFS home directories that are working with some KDE 3.1 installations.

We're seeing a problem with file access that appears to be from kdesktop. But I don't understand what's happening.

On initial login everything seems okay. But after some period of time, the kdesktop process has the Desktop/.directory file open via mmap. The problem comes when (because the account is shared) it is deleted on another machine.

# lsof -p 2677 | grep esk
kdeinit 2677 user mem DEL 0,10 1032869 /home/user/Desktop/.directory (nfsserv4:/vol/homedir2/user)
kdeinit 2677 user mem REG 104,2 515584 4490297 /usr/lib64/kdesktop.so
kdeinit 2677 user 10u unix 0x0000010bfb3d37c0 988309 /tmp/ksocket-user/kdesktopXs5ALb.slave-socket

Because I don't see this mapping (or open file) at all immediately after the login, I'm having a lot of trouble tracking down what is causing the file to be opened and mapped later.

Any suggestions for why this could be occuring or how I might track down what triggers this to be open?

Thanks,
--
Darren

2

Thursday, June 7th 2007, 8:53pm

RE: kdesktop holds .desktop file open

Oh, I forgot to mention. The reason I'm concerned about this process is that it seems to be stuck in a signal loop of some sort, and it's doing I/O while this is happening. I *think* that the mmaped file is being read directly (so no read() call appears in strace), and when the file isn't found, it causes a SIGBUS.

> strace-p 2677
Process 2677 attached - interrupt to quit
--- SIGSTOP (Stopped (signal)) @ 0 (0) ---
--- SIGSTOP (Stopped (signal)) @ 0 (0) ---
--- SIGBUS (Bus error) @ 0 (0) ---
write(2, "SIGBUS\n", 7) = 7
rt_sigaction(SIGBUS, {0x2a961b8570, [BUS], SA_RESTORER|SA_RESTART, 0x2a980f0720}, {0x2a961b8570, [BUS], SA_RESTORER|SA_RESTART, 0x2a980f0720}, 8) = 0
rt_sigreturn(0x35003a0045434152 <unfinished ...>
--- SIGBUS (Bus error) @ 0 (0) ---
<... rt_sigreturn resumed> ) = -1 ENOSYS (Function not implemented)
rt_sigaction(SIGBUS, {0x2a961b8570, [BUS], SA_RESTORER|SA_RESTART, 0x2a980f0720}, {0x2a961b8570, [BUS], SA_RESTORER|SA_RESTART, 0x2a980f0720}, 8) = 0
rt_sigreturn(0x35003a0045434152 <unfinished ...>
--- SIGBUS (Bus error) @ 0 (0) ---
<... rt_sigreturn resumed> ) = -1 ENOSYS (Function not implemented)
rt_sigaction(SIGBUS, {0x2a961b8570, [BUS], SA_RESTORER|SA_RESTART, 0x2a980f0720}, {0x2a961b8570, [BUS], SA_RESTORER|SA_RESTART, 0x2a980f0720}, 8) = 0
rt_sigreturn(0x35003a0045434152 <unfinished ...>
--- SIGBUS (Bus error) @ 0 (0) ---

[...]

Thanks,
--
Darren