Message176081
| Author |
alexis.d |
| Recipients |
alexis.d |
| Date |
2012年11月21日.23:41:01 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1353541261.75.0.656206042402.issue16527@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
Hi,
It looks like using a very long list of elif makes CPython segfault. You can try it with the attached file, which looks like this:
if False:
pass
elif False:
pass
# thousands of elifs
elif False:
pass
$ python elif_segfault.py
Segmentation fault.
CPython versions tested:
3.x (all segfaults):
3.1 on Debian
3.2 on Arch Linux
3.3 on Windows
2.6 on Debian: segfaults with a longer list of elifs than the one in the attached file.
The PyPy behaviour seems better: it raises 'RuntimeError: maximum recursion depth exceeded'.
A possible cause (if I understood <http://greentreesnakes.readthedocs.org/en/latest/nodes.html#If> well) is that there are no elif nodes in the AST, elif are just plain ifs which are stored recursively in the else part of the previous if.
(I'm not sure if that's an issue as it's not a real use case, but it makes CPython segfault and I was advised on #python-fr to report it anyway.) |
|
History
|
|---|
| Date |
User |
Action |
Args |
| 2012年11月21日 23:41:01 | alexis.d | set | recipients:
+ alexis.d |
| 2012年11月21日 23:41:01 | alexis.d | set | messageid: <1353541261.75.0.656206042402.issue16527@psf.upfronthosting.co.za> |
| 2012年11月21日 23:41:01 | alexis.d | link | issue16527 messages |
| 2012年11月21日 23:41:01 | alexis.d | create |
|