bug-cvs
[Top][All Lists]
Advanced

[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" <address@hidden> wrote in message news:address@hidden
> >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




reply via email to

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