Author: kib
Date: Tue Mar  6 11:16:14 2012
New Revision: 232599
URL: http://svn.freebsd.org/changeset/base/232599

Log:
  MFC r232239:
  Fix a race in top non-interactive mode.  Use plain sleep(3) call instead
  of arming timer and then pausing.  If SIGALRM is delivered before pause(3)
  is entered, top hangs.

Modified:
  stable/8/contrib/top/top.c
Directory Properties:
  stable/8/contrib/top/   (props changed)

Modified: stable/8/contrib/top/top.c
==============================================================================
--- stable/8/contrib/top/top.c  Tue Mar  6 11:05:50 2012        (r232598)
+++ stable/8/contrib/top/top.c  Tue Mar  6 11:16:14 2012        (r232599)
@@ -70,7 +70,6 @@ int pcpu_stats = No;
 
 /* signal handling routines */
 sigret_t leave();
-sigret_t onalrm();
 sigret_t tstop();
 #ifdef SIGWINCH
 sigret_t winch();
@@ -723,12 +722,7 @@ restart:
            no_command = Yes;
            if (!interactive)
            {
-               /* set up alarm */
-               (void) signal(SIGALRM, onalrm);
-               (void) alarm((unsigned)delay);
-    
-               /* wait for the rest of it .... */
-               pause();
+               sleep(delay);
            }
            else while (no_command)
            {
@@ -1174,11 +1168,3 @@ int status;
     exit(status);
     /*NOTREACHED*/
 }
-
-sigret_t onalrm()      /* SIGALRM handler */
-
-{
-    /* this is only used in batch mode to break out of the pause() */
-    /* return; */
-}
-
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to