On 11 March 2014 at 20:38, David Chisnall <theraven_at_freebsd.org> wrote: > On 12 Mar 2014, at 02:07, Roger Pau Monné <roger.pau_at_citrix.com> wrote: > >> I've found out that the value PTHREAD_STACK_MIN is currently set (2048 >> bytes) seems to be way too low > > This looks like an error in your code. The spec says: > >> PTHREAD_STACK_MIN >> Minimum size in bytes of thread stack storage. >> Minimum Acceptable Value: 0 > > It is meant to be the minimum value that the system can give for a thread stack. The purpose of this constant is for languages that do their own stack management bit some chain of activation records of segmented stacks, but want to use pthreads for threading, so that they can allocate the smallest possible stack that allows pthread cleanup to work. > > Using it from C code is very likely to be a mistake. I found that lang/polyml uses PTHREAD_STACK_MIN for a trivial signal handler thread it creates[1]. They found it was too small and implemented a 4K minimum bound to fix polyml on FreeBSD[2]. Even if this isn't really the intended use of PTHREAD_STACK_MIN it suggests the 2K x86 minimum may indeed be too low. I ran into this while trying LLVM's libunwind, which requires more stack space. 2K is certainly too low with LLVM libunwind. Is it reasonable to just increase it to say 8K? [1] https://github.com/polyml/polyml/blob/6c8add163fc39271da1056e43387a3d33ebd62c6/libpolyml/sighandler.cpp#L527 [2] https://github.com/polyml/polyml/commit/c59360ba74ac99bd9e3d342af214ced39cf0568bReceived on Thu Jan 21 2016 - 15:02:50 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:02 UTC