[Python-Dev] Re: Another test_compiler mystery

Tim Peters tim.peters at gmail.com
Tue Aug 10 00:39:01 CEST 2004


Here's a cute one:

"""
import compiler, sys

f = open('../Lib/test/test_parser.py')
guts = f.read()
f.close()

def ouch(n):
    if n == 0:
        return compiler.compile(guts, "<string>", "exec")
    else:
        return ouch(n-1)

for n in range(100, 250):
    try:
        ouch(n)
        msg = 'ok'
    except Exception, msg:
        msg = str(sys.exc_info()[0]) + ' ' + str(msg)
    print n, msg
"""

Under 2.3.4, that works as expected:  when n hit a large enough value,
from then on it was all repetitions of recursion-depth exceptions:

,,,
147 ok
148 ok
149 ok
150 exceptions.RuntimeError maximum recursion depth exceeded
151 exceptions.RuntimeError maximum recursion depth exceeded
152 exceptions.RuntimeError maximum recursion depth exceeded
...

Under CVS, it's very different.  Under a debug build, I get no output
*at all*(!).  Not even if I change the loop to start at 0.  Under a
release build:

...
120 ok
121 ok
122 ok
123 exceptions.RuntimeError maximum recursion depth exceeded
124 exceptions.RuntimeError maximum recursion depth exceeded
125 exceptions.RuntimeError maximum recursion depth exceeded
126 exceptions.KeyError 307
127 exceptions.RuntimeError maximum recursion depth exceeded
128 exceptions.KeyError 306
129 exceptions.RuntimeError maximum recursion depth exceeded
130 exceptions.KeyError 305
131 exceptions.RuntimeError maximum recursion depth exceeded
132 exceptions.KeyError 304
133 exceptions.RuntimeError maximum recursion depth exceeded
134 exceptions.KeyError 303
135 exceptions.KeyError 302
136 exceptions.RuntimeError maximum recursion depth exceeded
137 exceptions.KeyError 301
138 exceptions.RuntimeError maximum recursion depth exceeded
139 exceptions.KeyError 300
140 exceptions.RuntimeError maximum recursion depth exceeded
141 exceptions.RuntimeError maximum recursion depth exceeded
142 exceptions.KeyError 299
143 exceptions.RuntimeError maximum recursion depth exceeded
144 exceptions.KeyError 297
145 exceptions.KeyError 296
146 exceptions.RuntimeError maximum recursion depth exceeded
147 exceptions.KeyError 295
148 exceptions.RuntimeError maximum recursion depth exceeded
149 exceptions.KeyError 294
150 exceptions.RuntimeError maximum recursion depth exceeded
151 exceptions.RuntimeError maximum recursion depth exceeded
152 exceptions.RuntimeError maximum recursion depth exceeded
153 exceptions.KeyError 309
154 exceptions.RuntimeError maximum recursion depth exceeded
155 exceptions.RuntimeError maximum recursion depth exceeded
156 exceptions.KeyError 307
157 exceptions.RuntimeError maximum recursion depth exceeded
158 exceptions.KeyError 306
159 exceptions.RuntimeError maximum recursion depth exceeded
160 exceptions.KeyError 305
161 exceptions.RuntimeError maximum recursion depth exceeded
162 exceptions.KeyError 304
163 exceptions.RuntimeError maximum recursion depth exceeded
164 exceptions.KeyError 303
165 exceptions.KeyError 302
166 exceptions.RuntimeError maximum recursion depth exceeded
...

and there's a seemingly non-random but hard-to-fathom jumble of
recursion-depth and KeyError exceptions thereafter too.

So something's really hosed in CVS, or in MSVC 7.1, or ...


More information about the Python-Dev mailing list