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: Mon, 13 Oct 2003 22:37:55 GMT

"Pierre" <address@hidden> wrote in message news:address@hidden
> The result :
>
> Fist time :
>
> client2 sleeping 5 seconds
> client2 has woken up
> client2 sleeping 5 seconds
> client2 has woken up
>
> Second time :
>
> client2 sleeping 5 seconds
> client2 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

Unfortunately this is not what I expected, I expected consistent
failure.  Ok, so let's try again.  You can keep calling this "TEST III",
as it is a consistent thread of testing.  On an unmodified CVS 1.11.9,
can you apply the below patch, and then run it 50 or more times.  I
am hoping that it will fail every time.

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 13 Oct 2003 22:35:19 -0000
***************
*** 1453,1458 ****
--- 1453,1472 ----
   /* shutdown() sockets */
   if (S_ISSOCK(s.st_mode))
       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. */
+         printf("client3 sleeping 7 seconds\n");
+         sleep(7);
+         printf("client3 has woken up\n");
  # 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 13 Oct 2003 22:35:31 -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]