But, a while back, I'd hacked linux/net/sock.h to make the
lock_sock() not just print a double lock occured, but where the
current and prev locks happened.
Not seen such a message in a while, but I finally did today with
1.99.7. I saw the following when I type into a VC that had an
rlogin session that had been idle for a while [formatted to fit
under 80 chars]
May 28 18:51:22 thune kernel: double lock on socket at tcp.c:1162, \
prev lock at tcp.c:1440
Now, in that file, line 1162 is in tcp_sendmsg() (just prior to
the discussion of Nagle's rule); line 1440 is in tcp_recvmsg()
(just prior to found_on_skb: label).
I must admit, I don't understand the networking code thoroughly.
However, it appears that there is no obvious path from that point
in tcp_recvmsg() to tcp_sendmsg() that does not go through
release_sock().
I'm still a bit confused on how a process accessing the network,
that has been paged out, could cause this scenario....
If that has been discussed before, a pointer to the message-id
(and a working website that has them archived... last time i
tried homer.ncm.com, it wasn't working), I'll reread the
discussion myself.
mrc
-- Mike Castle .-=NEXUS=-. Life is like a clock: You can work constantly mcastle@cs.umr.edu and be right all the time, or not work at all mcastle@umr.edu and be right at least twice a day. -- mrc We are all of us living in the shadow of Manhattan. -- Watchmen