Index: kern_synch.c =================================================================== RCS file: /cvsroot/src/sys/kern/kern_synch.c,v retrieving revision 1.302 diff -u -u -r1.302 kern_synch.c --- kern_synch.c 27 Jul 2012 05:36:13 -0000 1.302 +++ kern_synch.c 18 Aug 2012 08:22:10 -0000 @@ -1170,6 +1170,15 @@ /* Calculating p_pctcpu only for ps(1) */ p->p_pctcpu = (p->p_pctcpu * ccpu) >> FSHIFT; + if (__predict_false(runtm < 0)) { + if (!backwards) { + backwards = true; + printf("WARNING: negative runtime; " + "monotonic clock has gone backwards\n"); + mutex_exit(p->p_lock); + continue; + } + /* * Check if the process exceeds its CPU resource allocation. * If over the hard limit, kill it with SIGKILL. @@ -1193,13 +1202,7 @@ } } mutex_exit(p->p_lock); - if (__predict_false(runtm < 0)) { - if (!backwards) { - backwards = true; - printf("WARNING: negative runtime; " - "monotonic clock has gone backwards\n"); - } - } else if (__predict_false(sig)) { + if (__predict_false(sig)) { KASSERT((p->p_flag & PK_SYSTEM) == 0); psignal(p, sig); }