Date: Fri, 21 Feb 2014 13:15:17 +0800 From: Erich Dollansky <erichsfreebsdlist@alogt.com> To: David Xu <davidxu@freebsd.org> Cc: freebsd-hackers@freebsd.org, Andre Albsmeier <mail@ma17.ata.myota.org> Subject: Re: pthread programming eats up resources (My or FreeBSD's fault?) Message-ID: <20140221131517.66d5b82c@X220.alogt.com> In-Reply-To: <5306DCC8.3080001@freebsd.org> References: <20140218180646.GA67861@schlappy> <53059574.8090605@freebsd.org> <20140220140644.7b1e0074@X220.alogt.com> <5305B786.8020708@freebsd.org> <20140221124405.0791d375@X220.alogt.com> <5306DCC8.3080001@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hi, On Fri, 21 Feb 2014 12:57:44 +0800 David Xu <davidxu@freebsd.org> wrote: > On 2014/02/21 12:44, Erich Dollansky wrote: > > On Thu, 20 Feb 2014 16:06:30 +0800 > > David Xu <davidxu@freebsd.org> wrote: > > > >> On 2014/02/20 14:06, Erich Dollansky wrote: > >> > >> I have found the bug, it is in rtld, where malloc_aligned() is > >> misfunctioning, memory can be corrupted by the function. > >> > >> libthr calls _rtld_allocate_tls to allocate tls control block, > >> the function is in rtld, its uses malloc_aligned() which is not > >> working correctly. > >> > > I installed the patch. It is now much, much better but after hours, > > something still seems wrong. Size went above 200MB after 40min of > > CPU time. The number of threads is now above 1200. The machine also > > has 3 zombies. The machine was restarted some 4h ago. > > > > Default thread stack size on 32-bit machine is 1M, if you have > 1024 threads, the size can be larger than 1G. I checked > maxinum threads kernel allowed is max_threads_per_proc > which is 1500 default. So what you have seen might be normal. > I don't know what is zombie, is it a zombie process? > thread library does not create process. I know, the zombies do not fit the scenario. Irritating is that some threads stay over. Is it a side effect of the scheduler? I do my normal work with the machine. The load should not block this process for long as I do nothing which requires 100% for all the time. Should I add some code to wait until the counter is zero again and see what is happening then? Erich
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20140221131517.66d5b82c>