On Thu Feb 24 11, Bruce Evans wrote: > On Wed, 23 Feb 2011, Alexander Best wrote: > > >On Wed Feb 23 11, Kostik Belousov wrote: > >>On Wed, Feb 23, 2011 at 12:56:25PM +0000, John Baldwin wrote: > >>>... > >>>Log: > >>> Fix off-by-one error in check against max_threads_per_proc. > >>> > >>> Submitted by: arundel > >>> MFC after: 1 week > >>> > >>>Modified: > >>> head/sys/kern/kern_thr.c > >>> > >>>Modified: head/sys/kern/kern_thr.c > >>>============================================================================== > >>>--- head/sys/kern/kern_thr.c Wed Feb 23 10:28:37 2011 (r218966) > >>>+++ head/sys/kern/kern_thr.c Wed Feb 23 12:56:25 2011 (r218967) > >>>@@ -153,7 +153,7 @@ create_thread(struct thread *td, mcontex > >>> p = td->td_proc; > >>> > >>> /* Have race condition but it is cheap. */ > >>>- if (p->p_numthreads >= max_threads_per_proc) { > >>>+ if (p->p_numthreads > max_threads_per_proc) { > >>> ++max_threads_hits; > >>> return (EPROCLIM); > >>> } > >> > >>I do not think there was off by one error. The create_thread() function > >>is called to create new thread, and before the process thread counter > >>is incremented in thread_link(). The old test tried to not allow more > >>then max_threads_per_proc threads in a process, now it allows to > >>create max_threads_per_proc. > > Actually, now it allows to create 1 more than max_threads_per_proc threads > in a process. > > >doesn't the semantics of the term "maximum" imply that it's own value is > >also > >valid? > > Yes. Not 1 more.
the misconception on my side was that i thought a process had an initial thread count of zero. however since a process itself counts as a single thread and has a thread id, it's now obvious to me that with max_threads_per_proc=15000 a process should only be allowed to spawn 14999 new threads. thanks for clearing things up for the n3wb. ;) cheers. alex > > >if a sign says maximum weight 2000kg, does that mean that a weight of > >2000kg is > >invalid and the highest valid weight is 1999,999..kg? > > No. This means that if weights are always in units of kg, and are > represented > by indexes starting at index 0, then the highest valid index is 1999. But > if the index is a count of the number of kg's, then the highest valud index > is 2000. > > p->p_numthreads presumably matches its name, so it is a count of a number > of threads and not a thread number. > > Bruce -- a13x _______________________________________________ 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"