cvs commit: src/sys/kern kern_sig.c

Simon Schubert corecode at
Thu Feb 22 07:51:15 PST 2007

corecode    2007/02/22 07:48:55 PST

DragonFly src repository

  Modified files:
    sys/kern             kern_sig.c 
  Fix stopping of the current process, which was broken by the last commit.
  If the current process is still far inside the kernel and is going to
  tsleep(), CURSIG()/issignal() in tsleep() have to see the pending signal;
  holding the process in SSTOP is not enough.
  However, if this is happening to a process which already received a stopping
  signal and thus already is in SSTOP, but which wakes up for some reason, and
  then posts a SA_STOP signal to itself, we may not ignore this, in spite of
  already being in SSTOP.
  All this process stopping business inside CURSIG()/issignal() makes all of
  this very fragile, but we will have to live with it for now.
  The bug can be reproduced by doing
  % cat
  % ps lx|grep '[c]at'
  The correct output would be something like:
   4156 stop    p2  DL     0:00.00 cat
  The broken behavior shows with:
  17417 ttybg2  p2  TL     0:00.00 cat
  Reviewed-by: Thomas E. Spanjaard <tgen at>
  Revision  Changes    Path
  1.70      +8 -2      src/sys/kern/kern_sig.c

More information about the Commits mailing list