IronLanguages / IronLanguages/ironpython3
StackOverflowException with continue from try..except
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 2.8k
- Forks
- 316
- Avg merge
- 1d 9h
- Merged PRs (30d)
- 1
Description
When using continue in the except clause of a try/except a StackOverflowException may occur. This seems to occur more frequently when running in 64-bit. Here's a repro which causes the issue somewhat consistently:
def test_gh1628():
def error():
raise Exception()
for _ in range(100000):
try:
error()
except Exception:
continue
I believe the issue only occurs when the code is interpreted. To reproduce consistently the following change can be applied to the DLR:
LightCompiler.DefaultCompilationThreshold = int.MaxValue;
The issue has been reported a number of times:
https://github.com/IronLanguages/ironpython2/issues/40
https://github.com/IronLanguages/ironpython2/issues/42
https://github.com/IronLanguages/ironpython2/issues/182
As well as a proposed fix:
https://github.com/IronLanguages/main/pull/1167
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the provided test_gh1628 reproduction and the DLR setting LightCompiler.DefaultCompilationThreshold = int.MaxValue, then compare interpreted and compiled execution. Review the referenced DLR pull request and confirm that the repro no longer produces a StackOverflowException, including on 64-bit runs.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp, python
- Domain
- compilers
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100