Mail Archives: cygwin/2004/05/20/07:52:52
> -----Original Message-----
> From: cygwin-owner On Behalf Of Brian Ford
> Sent: 19 May 2004 14:54
> On Wed, 19 May 2004, Brian Dessent wrote:
>
> > Although I'd still like to know why using ProcExp to list
> the handles*
>
> Nope, it is DLLs.
>
> > of any running Cygwin process causes the CPU to peg to 100%, and not
> > come down until cygwin1.dll is unloaded, i.e. kill all
> running cygwin
> > tasks and services. I've had to train myself when using ProcExp to
> > never accidently click on any Cygwin process, otherwise I have to go
> > through the annoying process of closing all rxvt's and stopping all
> > cygservices in order to get an idle CPU again...
>
> I don't quite see that. Only the process being explored runs away.
> After killing it, all is normal.
>
> > I've seen this reported to the list before but it got no replies.
>
> IIRC, I think I was the first to report it and you were the
> only one who
> replied. I haven't tried to fix it yet.
>
> > It started several notches back in the 1.5 series when there were a
> > large number of changes to the signal handling code, IIRC.
>
> Agreed.
A few data points:
The reason that the cygwin task behaves strangely has to be a consequence
of the actions of the thread that procexp/handleex attaches into it.
Perhaps we can find out more using apispy or similar. I can't see any
obvious reason why attaching a thread and messing with the process token
should cause problems, but maybe there's more to it than that.
When I saw this problem, ISTM that the cpu time was divided approx. 70/30
between the cygwin task and CSRSS.EXE; I think there must be a whole load of
client-server lpc thrashing going on between them.
When I ran handleex, it didn't even start up properly because a cygwin
(bash) process was hogging cpu; when I killed that process, handleex got
some time to run and promptly crashed with a NULL pointer dereference. This
came immediately after a failed call to
ntdll!RtlQueryProcessDebugInformation, i.e. the code sequence was
call ntdll!RtlQueryProcessDebugInformation
check return value, if non-zero continue elsewhere
load up a variable from the stack frame
dereference it.
so I suspect that something is going wrong in the debug subsystem (which
csrss has responsibility for forwarding).
cheers,
DaveK
--
Can't think of a witty .sigline today....
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -