TCP Stack Questions

From: Stanislav Rost (prgrssor@cs.bu.edu)
Date: Fri Aug 04 2000 - 14:14:16 EST


Fellow kernel coders,

As part of my research, I have been hacking the Linux kernel for quite a
while now (trying to introduce some experimental functionality), but
recently I have been facing a problem which I cannot resolve; it feels
like banging my head against the wall and so I turn to you for help. I
apologize for possible stupidity of the questions.

The problem is as follows: the 2.2.15 TCP stack has been modified so that
(to describe in a very simplified way) multiple connections of a web
server start delivering data from the same data pool, once a special
switch/flag in tcp_opt has been set for a TCP socket. The problem is,
once I start using these modified sockets to deliver the content from the
web server, after a while, for mysterious reasons, the webserver threads
one by one start blocking in accept() and never un-blocking.

Further investigation reveals that threads get stuck on the call to
wait_for_connect() after finding out that tcp_find_established() finds no
socket which would accept. This is extremely strange, because I really
made no modifications whatsoever to the connection establishment
mechanism, and it really *should* work as before.

I understand that the modifications I made are far more extensive than
what could be discussed on the list, so I will limit myself to a few
simple questions which should greatly aid my debugging:

- What is the sequence of events (packet arrivals,
func. invocations) which would normally cause tcp_find_established to
fail on account of syn_wait_queue being NULL at the moment of the call to
tcp_accept()?
- What function in which is responsible for waking up the thread
waiting in wait_for_connect()? What is the call trace leading to the
invocation of that function?

Thanks for any help that you can offer

Stan Rost

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Mon Aug 07 2000 - 21:00:13 EST