New submission from Pablo Galindo Salgado <[email protected]>:
Minimal reproducer:
./python -m test test__xxsubinterpreters -m test_custom___reduce__ -R :
0:00:00 load avg: 3.20 Run tests sequentially
0:00:00 load avg: 3.20 [1/1] test__xxsubinterpreters
beginning 9 repetitions
123456789
.........
test__xxsubinterpreters leaked [1486, 1484, 1484, 1484] references, sum=5938
test__xxsubinterpreters leaked [399, 398, 398, 398] memory blocks, sum=1593
test__xxsubinterpreters failed
== Tests result: FAILURE ==
1 test failed:
test__xxsubinterpreters
Total duration: 2.2 sec
Bisecting points to:
commit a1d9e0accd33af1d8e90fc48b34c13d7b07dcf57
Author: Eric Snow <[email protected]>
Date: Thu May 7 08:56:01 2020 -0600
bpo-32604: [_xxsubinterpreters] Propagate exceptions. (GH-19768)
(Note: PEP 554 is not accepted and the implementation in the code base is a
private one for use in the test suite.)
If code running in a subinterpreter raises an uncaught exception then the
"run" call in the calling interpreter fails. A RunFailedError is raised there
that summarizes the original exception as a string. The actual exception type,
__cause__, __context__, state, etc. are all discarded. This turned out to be
functionally insufficient in practice. There is a more helpful solution (and
PEP 554 has been updated appropriately).
This change adds the exception propagation behavior described in PEP 554 to
the _xxsubinterpreters module. With this change a copy of the original
exception is set to __cause__ on the RunFailedError. For now we are using
"pickle", which preserves the exception's state. We also preserve the original
__cause__, __context__, and __traceback__ (since "pickle" does not preserve
those).
https://bugs.python.org/issue32604
Lib/test/test__xxsubinterpreters.py | 301 ++++++++-
Modules/_xxsubinterpretersmodule.c | 1139 +++++++++++++++++++++++++++++++----
2 files changed, 1317 insertions(+), 123 deletions(-)
bisect run success
----------
components: Interpreter Core
messages: 368411
nosy: eric.snow, pablogsal, vstinner
priority: normal
severity: normal
status: open
title: test__xxsubinterpreters leaked [1486, 1484, 1484, 1484] references
type: behavior
versions: Python 3.9
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue40556>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com