Hubertus Franke writes: > > > @@ -153,13 +155,18 @@ > > > if(last_pid & 0xffff8000) > > > last_pid = 300; > > > next_safe = PID_MAX; > > > + goto repeat; > > > } > > > - goto repeat; > > > + if(unlikely(last_pid == beginpid)) > > > + goto nomorepids; > > > + continue; > > > > You changed it. No? > > Yes, we changed but only the logic that once a pid is busy we start searching > for every task again. This is exactly the O(n**2) problem. > Run the program and you'll see. Run the attached file. Result, new pid: 301, 300: pid 300, pgrp 301 new pid == task(300)->pgrp. This get_pid() has bug. I'm missing something? -- OGAWA Hirofumi