[Python-Dev] [Fwd: segfault in sre on 64-bit plats]

Trent Mick trentm@ActiveState.com
2000年8月17日 14:41:04 -0700


On Thu, Aug 17, 2000 at 09:17:42AM +0800, Mark Favas wrote:
> [Trent]
> > This test on Win32 and Linux32 hits the recursion limit check of 10000 in
> > SRE_MATCH(). However, on Linux64 the segfault occurs at a recursion depth of
> > 7500. I don't want to just willy-nilly drop the recursion limit down to make
> > the problem go away.
> > 
>> Sorry for the delay - yes, I had these segfaults due to exceeding the
> stack size on Tru64 Unix (which, by default, is 2048 kbytes) before
> Fredrick introduced the recusrion limit of 10000 in _sre.c. You'd expect
> a 64-bit OS to use a bit more bytes of the stack when handling recursive
> calls, but your 7500 down from 10000 sounds a bit much - unless the

Actually with pointers being twice the size the stack will presumably get
comsumed more quickly (right?), so all other things being equal the earlier
stack overflow is expected.
> stack size limit you're using on Linux64 is smaller than that for
> Linux32 - what are they?

------------------- snip --------- snip ----------------------
#include <sys/time.h>
#include <sys/resource.h>
#include <unistd.h>
int main(void)
{
 struct rlimit lims;
 if (getrlimit(RLIMIT_STACK, &lims) != 0) {
 printf("error in getrlimit\n");
 exit(1);
 }
 printf("cur stack limit = %d, max stack limit = %d\n",
 lims.rlim_cur, lims.rlim_max);
 return 0;
}
------------------- snip --------- snip ----------------------
On Linux32:
 cur stack limit = 8388608, max stack limit = 2147483647
On Linux64:
 cur stack limit = 8388608, max stack limit = -1
Trent
-- 
Trent Mick
TrentM@ActiveState.com

AltStyle によって変換されたページ (->オリジナル) /