threads/160708: Bypass process stack quota :)

John Baldwin jhb at freebsd.org
Mon Sep 19 12:51:22 UTC 2011


On Saturday, September 17, 2011 7:50:08 am Michael Pounov wrote:
> The following reply was made to PR threads/160708; it has been noted by 
GNATS.
> 
> From: Michael Pounov <misho at elwix.org>
> To: freebsd-gnats-submit at freebsd.org
> Cc:  
> Subject: Re: threads/160708: Bypass process stack quota :)
> Date: Sat, 17 Sep 2011 14:26:11 +0300
> 
>  Hmm, you no so right Peter. 
>  
>  	Yes I can move esp pointer in any other address, but please 
>  start program and see address of allocated memory for every thread. 
>  All this allocations is made in upper memory called stack. 
>  	
>  	Try same alloca() in main program thread and you see how 
>  system terminate program if you going over stack limit.

It's not very practical to apply this limit to multithreaded apps.  Would you 
want it to be a global limit (i.e. all stacks summed together must be <= 
limit) or a per-thread limit (i.e. each thread's stack must be <= limit).  
Also, given that RLIMIT_DATA is now obsolete (since malloc() defaults to using 
MAP_ANON with mmap() rather than sbrk()), using RLIMIT_AS is probably the 
right thing if you are trying to prevent local DOS.

-- 
John Baldwin


More information about the freebsd-threads mailing list