This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2014年12月02日 21:15 by vstinner, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| test_endless_recursion.patch | vstinner, 2014年12月05日 01:01 | review | ||
| Messages (7) | |||
|---|---|---|---|
| msg232049 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2014年12月02日 21:15 | |
http://buildbot.python.org/all/builders/x86%20XP-4%203.x/builds/11271/steps/test/logs/stdio [116/390] test_json Fatal Python error: Cannot recover from stack overflow. Current thread 0x00000e84 (most recent call first): File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\json\encoder.py", line 250 in iterencode File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\json\encoder.py", line 192 in encode File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\test\test_json\test_recursion.py", line 96 in test_endless_recursion File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\case.py", line 577 in run File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\case.py", line 625 in __call__ File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\suite.py", line 125 in run File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\suite.py", line 87 in __call__ File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\suite.py", line 125 in run File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\suite.py", line 87 in __call__ File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\suite.py", line 125 in run File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\suite.py", line 87 in __call__ File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\suite.py", line 125 in run File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\suite.py", line 87 in __call__ File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\suite.py", line 125 in run File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\suite.py", line 87 in __call__ File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\unittest\runner.py", line 168 in run File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\test\support\__init__.py", line 1769 in _run_suite File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\lib\test\support\__init__.py", line 1803 in run_unittest File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\PCbuild\..\lib\test\regrtest.py", line 1279 in test_runner File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\PCbuild\..\lib\test\regrtest.py", line 1280 in runtest_inner File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\PCbuild\..\lib\test\regrtest.py", line 967 in runtest File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\PCbuild\..\lib\test\regrtest.py", line 763 in main File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\PCbuild\..\lib\test\regrtest.py", line 1564 in main_in_temp_cwd File "d:\cygwin\home\db3l\buildarea3円.x.bolen-windows\build\PCbuild\..\lib\test\regrtest.py", line 1589 in <module> |
|||
| msg232054 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2014年12月02日 21:58 | |
JSON encoder uses recursion calls guards but they don't save from an overflow of C stack. How to reproduce: import json sys.setrecursionlimit(1000000000) json.dumps(5j, check_circular=False, default=lambda o: [o]) |
|||
| msg232170 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2014年12月05日 01:01 | |
Here is a patch to use a lower recursion limit to no stress the C stack. |
|||
| msg232181 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2014年12月05日 08:41 | |
I think this patch will break the purpose of the test. We should fix the issue instead of hide it from tests. |
|||
| msg232187 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2014年12月05日 09:41 | |
> I think this patch will break the purpose of the test. We should fix the issue instead of hide it from tests. The test ensures that json calls Py_EnterRecursiveCall() which relies on sys.getrecursionlimit(), see the commit below. There is no generic fix for C stack overflow. The tes failed on Windows XP which is no more supported, I don't think that it's interesting to spend time on it. changeset: 70021:9557e4eeb291 branch: 3.1 parent: 69997:b7abf0590e1c user: Ezio Melotti <ezio.melotti@gmail.com> date: Wed May 11 01:02:56 2011 +0300 files: Lib/json/tests/test_recursion.py Misc/NEWS Modules/_json.c description: #12051: Fix segfault in json.dumps() while encoding highly-nested objects using the C accelerations. |
|||
| msg232202 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2014年12月05日 18:31 | |
> The tes failed on Windows XP which is no more supported, I don't think that > it's interesting to spend time on it. So may be just skip it on Windows XP? Or as far as this approach doesn't solve the problem and the test may crash on other platforms, may be run this test in a subprocess? |
|||
| msg238406 - (view) | Author: STINNER Victor (vstinner) * (Python committer) | Date: 2015年03月18日 10:52 | |
The buildbot is broken, it cannot compile anymore. So I just close the issue. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:10 | admin | set | github: 67173 |
| 2015年03月18日 10:52:20 | vstinner | set | status: open -> closed resolution: out of date messages: + msg238406 |
| 2014年12月05日 18:37:46 | serhiy.storchaka | set | nosy:
+ ezio.melotti |
| 2014年12月05日 18:31:53 | serhiy.storchaka | set | messages: + msg232202 |
| 2014年12月05日 09:41:16 | vstinner | set | messages: + msg232187 |
| 2014年12月05日 08:42:26 | serhiy.storchaka | set | nosy:
+ rhettinger |
| 2014年12月05日 08:41:30 | serhiy.storchaka | set | messages: + msg232181 |
| 2014年12月05日 01:01:50 | vstinner | set | files:
+ test_endless_recursion.patch keywords: + patch messages: + msg232170 |
| 2014年12月02日 21:58:07 | serhiy.storchaka | set | messages:
+ msg232054 components: + Extension Modules |
| 2014年12月02日 21:46:21 | serhiy.storchaka | set | nosy:
+ serhiy.storchaka |
| 2014年12月02日 21:15:19 | vstinner | create | |