[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: TEST III
From: |
Paul Edwards |
Subject: |
Re: TEST III |
Date: |
Fri, 17 Oct 2003 11:21:13 GMT |
"Pierre" <pceteaudatmacif.fr@netcourrier.com> wrote in message
b86193eb.0310170254.4d4565f3@posting.google.com">news:b86193eb.0310170254.4d4565f3@posting.google.com...
> >Ok, apply this one patch (only) to cvs 1.11.9 and tell me how many
> >failures out of 150...
>
> client4 sleeping 5 seconds
> client4 has woken up
> Le sous-programme assert a ÚchouÚ : fstat ( fileno (bc->fp), &s ) != -1,
> fichier
> buffer.c, ligne 1384
> cvs [login aborted]: received abort signal
>
> It fails 150 times out 150.
Once again I have been surprised. But I have a new theory.
As always, get an unmodified cvs 1.11.9 and then apply this
patch. Note that it changes 2 files.
BFN. Paul.
Index: buffer.c
===================================================================
RCS file: /cvs/ccvs/src/buffer.c,v
retrieving revision 1.21.4.1
diff -c -r1.21.4.1 buffer.c
*** buffer.c 17 Feb 2003 21:19:12 -0000 1.21.4.1
--- buffer.c 17 Oct 2003 11:19:10 -0000
***************
*** 1452,1458 ****
--- 1452,1474 ----
# ifndef NO_SOCKET_TO_FD
/* shutdown() sockets */
if (S_ISSOCK(s.st_mode))
+ {
+ printf("client5 sleeping 5 seconds\n");
+ sleep(5);
+ printf("client5 has woken up\n");
shutdown ( fileno (bc->fp), 1);
+ }
+ /* FIXME: On at least some AIX systems, there is
+ a race condition. If you activate this sleep
+ command, you will find that you get an
+ assertion failure on the next call to this
+ function, on the fstat, in the situation where
+ you have client and server running on the same
+ machine, and you are running "cvs login". This
+ is because the server exits, and the fileno is
+ no longer accessible to the client. I expect
+ that this is an AIX bug, it probably has no
+ right to invalidate filenos. */
# else
{
/* I'm not sure I like this empty block, but the alternative
Index: server.c
===================================================================
RCS file: /cvs/ccvs/src/server.c,v
retrieving revision 1.284.2.9
diff -c -r1.284.2.9 server.c
*** server.c 3 Oct 2003 19:15:32 -0000 1.284.2.9
--- server.c 17 Oct 2003 11:19:22 -0000
***************
*** 5719,5724 ****
--- 5719,5730 ----
{
printf ("I LOVE YOU\n");
fflush (stdout);
+
+ /* FIXME: On AIX at least, in some circumstances,
+ there is a race condition in CVS which can be
+ circumvented with a pause here. The race is
+ triggered by the shutdown(,1) call in buffer.c */
+ sleep(2);
#ifdef SYSTEM_CLEANUP
/* Hook for OS-specific behavior, for example socket subsystems on
- Re: TEST FFF and GGG with sleep(1), (continued)
- Re: TEST FFF and GGG with sleep(1), Pierre, 2003/10/13
- Re: TEST III ?, Pierre, 2003/10/13
- Re: TEST III, Paul Edwards, 2003/10/13
- Re: TEST III, Pierre, 2003/10/15
- Re: TEST III, Paul Edwards, 2003/10/16
- Re: TEST III, Pierre, 2003/10/17
- Re: TEST III, Paul Edwards, 2003/10/17
- Re: TEST JJJ, Pierre, 2003/10/17
- Re: TEST JJJ, Paul Edwards, 2003/10/17
- Re: TEST III, Pierre, 2003/10/17
- Re: TEST III,
Paul Edwards <=
- Re: TEST JJJ, Paul Edwards, 2003/10/17
- Re: TEST III, Pierre, 2003/10/17
- Re: TEST III, Pierre, 2003/10/17
- Re: TEST HHH, Pierre, 2003/10/17
- Re: TEST AAA, Paul Edwards, 2003/10/09