info-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Abandoned CVS server processes


From: Larry Jones
Subject: Re: Abandoned CVS server processes
Date: Thu, 7 Mar 2002 14:15:26 -0500 (EST)

Dan Peterson writes:
> 
> I've seen ESTABLISHED and IDLE.

That's interesting, there is no official TCP state called IDLE.  I
wonder what it means?  Certainly both states imply that the connection
is alive and well as far as the system can determine.

>   1. Only a single process exists and it's parent is "inet".  Perhaps this
> is normal, if the client doesn't disconnect after each request?  WinCVS is
> just a front end for a DOS command interface isn't it?  So wouldn't that
> mean the connection should only remain open for a long checkout or commit
> (or update or tag, etc)?

Correct.  Having a single process is typical of a server that isn't
executing a CVS subcommand at the moment, but is rather processing the
client/server protocol.

> These processes appear to be in some kind of wait state and don't seem to
> be using any CPU time.  Using truss I've found them in read(), poll() and
> write() calls.  They have been hanging around for several hours.
>
> This appears like it might be the case you described where the client went
> away and TCP is waiting around?

Most likely.  It sounds like the server is waiting for a command from
the client.

>   2. Two processes; the first has a parent of "inet" and it's child seems
> to be spinning and using lots of CPU (after about 34 hours one process has
> used about 24 hours of CPU).  The sockets associated with the first
> process are in an IDLE state.

That would indicate a bug in CVS.

> I attached to each of the processes in this state with gdb and determined
> they were spinning in a tight loop inside rcs.c:translate_symtag().

This is a bug that I just recently fixed -- translate_symtag would go
into an infinite loop if the tag was "".

-Larry Jones

My life needs a rewind/erase button. -- Calvin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]