diff -ruN lwp-2.0/src/lwp.c lwp-2.0-fixed/src/lwp.c --- lwp-2.0/src/lwp.c 2005-03-25 17:50:56.000000000 +0100 +++ lwp-2.0-fixed/src/lwp.c 2005-05-05 14:32:56.580753096 +0200 @@ -463,6 +463,16 @@ #ifndef MMAP_LWP_STACKS stackptr = (char *) malloc(stacksize); #else + pagesize = getpagesize(); + +#if defined(__x86_64__) + /* [gb] Ensure minimal stack size. Heuristically determined + through tdb test that 2048 is too small when printf() et al. come + into action. */ + if (stacksize < pagesize) + stacksize = pagesize; +#endif + #ifdef MAP_ANON stackptr = mmap(lwp_stackbase, stacksize, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0); @@ -483,7 +493,6 @@ perror("stack: "); assert(0); } - pagesize = getpagesize(); lwp_stackbase += ((stacksize/pagesize) + 2) * pagesize; #endif if (!stackptr)