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年09月22日 15:51 by Mark.Shannon, last changed 2022年04月11日 14:58 by admin. This issue is now closed.
| Files | ||||
|---|---|---|---|---|
| File name | Uploaded | Description | Edit | |
| expat.patch | Mark.Shannon, 2014年09月22日 15:51 | Patch | review | |
| expat_traceback.patch | pitrou, 2014年10月07日 21:15 | |||
| Messages (10) | |||
|---|---|---|---|
| msg227278 - (view) | Author: Mark Shannon (Mark.Shannon) * (Python committer) | Date: 2014年09月22日 15:51 | |
Modules/pyexpat.c includes some archaic code to create temporary frames so that, in even of an exception being raised, expat appears in the traceback. The way this is implemented is a problem for three reasons: 1. It violates PEP 384. 2. It is incorrect, see http://bugs.python.org/issue6359. 3. It is inefficient, as a frame is generated for each call, regardless of whether an exception is raised or not. The attached patch fixes these issues. |
|||
| msg228680 - (view) | Author: Georg Brandl (georg.brandl) * (Python committer) | Date: 2014年10月06日 13:08 | |
Not sure how this can violate PEP 384, as it doesn't make it mandatory for builtin extensions to use the stable ABI. The other concerns seem valid, although I don't like how the patch includes an unrelated change to ctypes. |
|||
| msg228738 - (view) | Author: Mark Shannon (Mark.Shannon) * (Python committer) | Date: 2014年10月06日 21:43 | |
W.r.t PEP 384: Every module, except pyexpat, in the stdlib library treats frames as opaque objects, as PEP 384 requires. (I'm exempting builtins and sys here) I think it is unreasonable to expect authors of 3rd party modules to respect PEP 384 if the standard library does not. W.r.t. the change to ctypes: I have simply moved a function from ctypes.c to traceback.c (and renamed it accordingly) so that pyexpat.c can access it. |
|||
| msg228739 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2014年10月06日 21:51 | |
FWIW, I think the patch's approach is ok. I just did a small comment on the review UI. |
|||
| msg228740 - (view) | Author: Georg Brandl (georg.brandl) * (Python committer) | Date: 2014年10月06日 22:01 | |
> I think it is unreasonable to expect authors of 3rd party modules to respect PEP 384 if the standard library does not. I don't understand why you think that. PEP 384 is intended to provide the means to maintain binary compatibility of extension modules so that they don't have to be recompiled for every minor version. Standard library extensions are recompiled for every Python release anyway. Also, we don't expect authors to respect PEP 384. Either they choose to do so, and get the benefits, or they don't. > I have simply moved a function from ctypes.c to traceback.c (and renamed it accordingly) so that pyexpat.c can access it. I can see that. It would be cleaner to do the change in two steps, first move the utility function out from ctypes, then use it from pyexpat. On the other hand we haven't been adamant about one-patch-one-change in the past. |
|||
| msg228774 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2014年10月07日 21:15 | |
Here is an updated patch with a test. |
|||
| msg228802 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2014年10月08日 18:03 | |
New changeset 5433ef907e4f by Antoine Pitrou in branch '3.4': Issue #22462: Fix pyexpat's creation of a dummy frame to make it appear in exception tracebacks. https://hg.python.org/cpython/rev/5433ef907e4f New changeset f2f13aeb590a by Antoine Pitrou in branch 'default': Issue #22462: Fix pyexpat's creation of a dummy frame to make it appear in exception tracebacks. https://hg.python.org/cpython/rev/f2f13aeb590a |
|||
| msg228805 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2014年10月08日 18:08 | |
Patch pushed. I've kept the changes together :) Hopefully there won't be any ctypes regression. |
|||
| msg231125 - (view) | Author: Matthias Klose (doko) * (Python committer) | Date: 2014年11月13日 17:39 | |
according to https://jenkins.qa.ubuntu.com/job/vivid-adt-python3.4/7/ test.test_pyexpat.HandlerExceptionTest now fails, but only when running in the installed location, not when running the tests from the builddir. any idea why? |
|||
| msg231863 - (view) | Author: Roundup Robot (python-dev) (Python triager) | Date: 2014年11月29日 14:56 | |
New changeset e4b986350feb by Antoine Pitrou in branch '3.4': Close issue #22895: fix test failure introduced by the fix for issue #22462. https://hg.python.org/cpython/rev/e4b986350feb New changeset 4990157343c6 by Antoine Pitrou in branch 'default': Close issue #22895: fix test failure introduced by the fix for issue #22462. https://hg.python.org/cpython/rev/4990157343c6 |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:58:08 | admin | set | github: 66652 |
| 2014年11月29日 14:56:49 | python-dev | set | messages: + msg231863 |
| 2014年11月18日 13:14:17 | jkloth | set | nosy:
+ jkloth |
| 2014年11月13日 17:39:24 | doko | set | nosy:
+ doko messages: + msg231125 |
| 2014年10月08日 18:08:38 | pitrou | set | status: open -> closed resolution: fixed messages: + msg228805 stage: patch review -> resolved |
| 2014年10月08日 18:03:10 | python-dev | set | nosy:
+ python-dev messages: + msg228802 |
| 2014年10月07日 21:15:11 | pitrou | set | files:
+ expat_traceback.patch messages: + msg228774 |
| 2014年10月06日 22:01:09 | georg.brandl | set | messages: + msg228740 |
| 2014年10月06日 21:51:58 | pitrou | set | messages: + msg228739 |
| 2014年10月06日 21:47:12 | pitrou | set | stage: patch review type: behavior versions: + Python 3.4 |
| 2014年10月06日 21:43:44 | Mark.Shannon | set | messages: + msg228738 |
| 2014年10月06日 13:08:45 | georg.brandl | set | nosy:
+ georg.brandl, pitrou messages: + msg228680 |
| 2014年10月06日 13:08:08 | georg.brandl | link | issue6359 superseder |
| 2014年09月22日 15:52:19 | Mark.Shannon | set | nosy:
+ nedbat |
| 2014年09月22日 15:51:23 | Mark.Shannon | create | |