[Top][All Lists]

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

Re: assertion fault. on loggin

From: Paul Edwards
Subject: Re: assertion fault. on loggin
Date: Wed, 10 Sep 2003 13:17:44 GMT

"Pierre" <address@hidden> wrote in message news:address@hidden
> Here is the results :
> bc is 2002f928
> bc->fp is f0004c00
> fn is 3
> bc is 200359f8
> bc->fp is f0004c20
> fn is 4

Ok.  Good news and bad news.  It looks to me like there's no
bug in CVS.

That fn of 4 looks perfectly fine.  For fstat to fail, after being
given that number, is more likely to mean that there's a bug in
the operating system.  So if you upgrade your operating system,
(or apply maintenance etc), the problem may go away.

You have the following options:

1. Continue this sequence of posting debug info and trying
various tricks to prove definitively that it is the OS that is
technically at fault.  There is a 40% chance that during
this process, it will be determined that the theory is incorrect,
and that there is a wild pointer, or some other race condition
or misunderstanding in CVS that is corrupting data (or
causing the stream to be unavailable) that is causing the
fileno() function to fail.  You will then need to present this
information to the OS vendor, and convince them that they
are the ones at fault and that they should give you a patch.

2. Accept a workaround in the CVS code that will bypass
the presumed OS bug.

If you want (2), then try the following:

a. comment out the printfs with /* ... */ (or delete them).
b. change the *(char *)0 = '\0' to "return (0);"

Before you ask on "1", "if it's a bug in the OS, why am I the
only person experiencing this problem", then the answer is
"nobody knows, the seemingly inexplicable is very common
in computing, and you can only come up with a rational
explanation at the end of the investigation process, which
could take ages".  The CVS code is unusual, it is not common
to see people doing an fstat in that manner.  But being
unusual doesn't make it wrong.

Another option you have is to change the above "return (0);"
to ";" (ie nothing), to see if the code can continue doing its
normal cleanup.  That's probably preferable, but also more
likely to not work if that fileno is genuinely unavailable.

So what is your goal, to ensure that there's no bug in CVS, or
to get CVS working on your system so you can use it, and let
someone else find the bug, if any, another day?

Oh, also, someone else in this newsgroup may have different
ideas to me, so maybe you'll get a different answer from them,
which would be great, but that's my take on the situation.
This is a difficult problem, which is why you're the only one
reporting it.  No-one else sees it, because its rare.  Could even
be a bug in your compiler etc.  It's a nasty problem.  That's why
there's endless hordes of programmers employed fixing endless
hordes of bugs.  :-)

BFN.  Paul.

reply via email to

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