I did not follow the discussion a while back regarding the implementation and use of PyOS_CheckStack on Windows. In any case, its use (USE_STACKCHECK) instead of recursion limit checking (USE_RECURSION_LIMIT) in _sre.c results in this test: test(r"""sre.match(r'(x)*', 50000*'x').span()""", (0, 50000), RuntimeError) in test_sre.py failing on Win64. This is because PyOS_CheckStack seem to *never* fail on Win64. Three possibilites: (1) I don't understand the PyOS_CheckStack code or I am misintepreting the problem. (2) The semantics of _alloca() has changed for Win64 such that a stack overflow exception is no longer thrown if space cannot be allocated. NOTE: I changed the number of pointers allocated in PyOS_CheckStack from 2048 to over 1 *Tera*byte and it *still* did not fail. (3) I am stoopid. In any case, I would like to *not* define USE_STACKCHECK on Win64 for the time being (and for 2.0, unless a Win64 angel comes to me in the next couple of days). Does anybody have a problem with me checking this in? *** Include\pythonrun.h~ Wed Oct 04 14:18:00 2000 --- Include\pythonrun.h Wed Oct 04 13:17:17 2000 *************** *** 88,94 **** to a 8k margin. */ #define PYOS_STACK_MARGIN 2048 ! #if defined(WIN32) && defined(_MSC_VER) /* Enable stack checking under Microsoft C */ #define USE_STACKCHECK #endif --- 88,94 ---- to a 8k margin. */ #define PYOS_STACK_MARGIN 2048 ! #if defined(WIN32) && !defined(MS_WIN64) && defined(_MSC_VER) /* Enable stack checking under Microsoft C */ #define USE_STACKCHECK #endif Thanks, Trent -- Trent Mick TrentM@ActiveState.com
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4