[Python-Dev] [Fwd: segfault in sre on 64-bit plats]
Mark Favas
m.favas@per.dem.csiro.au
Thu, 17 Aug 2000 09:17:42 +0800
This is a multi-part message in MIME format.
--------------53A0211FF1B8BFA142994B9A
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
--------------53A0211FF1B8BFA142994B9A
Content-Type: message/rfc822
Content-Disposition: inline
Message-ID: <399B3CAA.C8815E61@per.dem.csiro.au>
Date: Thu, 17 Aug 2000 09:15:22 +0800
From: Mark Favas <m.favas@per.dem.csiro.au>
Organization: CSIRO Exploration & Mining
X-Mailer: Mozilla 4.73 [en] (X11; U; OSF1 V4.0 alpha)
X-Accept-Language: en
MIME-Version: 1.0
To: Trent Mick <trentm@ActiveState.com>
Subject: Re: segfault in sre on 64-bit plats
References: <20000815104723.A27306@ActiveState.com>
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Trent Mick wrote:
>
> Fredrik,
>
> The sre module currently segfaults on one of the tests suite tests on both
> Win64 and 64-bit linux:
>
> [trentm@nickel src]$ ./python -c "import sre; sre.match('(x)*', 50000*'x')" > srefail.out
> Segmentation fault (core dumped)
>
> I know that I can't expect you to debug this completely, as you don't have to
> hardware, but I was hoping you might be able to shed some light on the
> subject for me.
>
> 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.
>
> Do you have any idea why the segfault may be occuring on 64-bit platforms?
>
> Mark (Favas), have you been having any problems with sre on your 64-bit plats?
>
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
stack size limit you're using on Linux64 is smaller than that for
Linux32 - what are they? I certainly agree that it'd be better to solve
this in a way other than selecting a sufficiently low recursion limit (I
won't mention stackless here... <grin>.) - getrlimit(2), getrusage(2),
or other???
--
Mark
--------------53A0211FF1B8BFA142994B9A--