"Ralf S. Engelschall" wrote:
> On Thu, Sep 14, 2000, Matt Sherer wrote:
>
> > This is weird - I'm not a pth guru (by any means), but I've used it a
> > fair amount, and am pretty familiar with it. A strange error has me
> > confused - right now, I've got a bunch of really cpu-intensive,
> > stack-heavy threads. They work fine. I added another one in, probably
> > the simplest of all, that basically opens a file, and does a pth_select
> > call on it. The select wakes up, but if i try to read from the file
> > descriptor, I get a stack overflow on that thread. Raising it's stack
> > size to 128000 solves it, but I'm wondering why a simple select/read
> > call can overflow the stack while the other threads are dozens of levels
> > deep, with a lot more stack-based data structures. Its more of a
> > curiosity than anything - there's no global stack parameters or anything
> > that would come into play by adding another thread, would there?
> > (Actually, I shut down several of the others, and the problem is
> > consistent, so it's probably not a matter of adding 1 to n and crossing
> > some threshold.)
>
> Yes, adding or removing some other threads in no way affect a stacks
> stack.
>
> There are only one good reason I can think of which cause the stack
> overflow in such a "simple thread": Some of your functions or functions
> inside some other libraries (libc, etc.) use large variables on the
> stack. In C, every variable not declared "static" in a function is per
> default allocated from the run-time stack. So, if you have a simple
> "char buf[SIZE]" somewhere and SIZE is a few KB in size, this noticably
> fills the stack of the thread while the function's scope is active.
>
> Check your thread for such things.
Absolutely right - I had some locally declared variables which grew the
runtime stack noticeably. To tell the truth, it never dawned on me to look
at the fact that this thread had larger-than-average local buffers, which
overran it. I think I've learned my lesson. Thanks for the clue-in!
--Matt Sherer
______________________________________________________________________
GNU Portable Threads (Pth) http://www.gnu.org/software/pth/
User Support Mailing List [EMAIL PROTECTED]
Automated List Manager (Majordomo) [EMAIL PROTECTED]