Patches item #1733973, was opened at 2007-06-09 11:04
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1733973&group_id=5470

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Modules
Group: Python 2.6
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Eyal Lotem (peaker)
Assigned to: Nobody/Anonymous (nobody)
Summary: _lsprof.c:ptrace_enter_call assumes PyErr_* is clean

Initial Comment:
_lsprof.c:ptrace_enter_call assumes PyErr_* has no errors.
It assumes this by feeling free to call functions that PyErr_Clear and 
overwrite PyErr.

This assumption is broken when throwing into a generator. In that case 
gen_send_ex(.., 1) calls the ptrace_enter_call with an exception already set.

This assumption causes two bugs:
A. The exception thrown into the generator is overwritten and lost. Later it 
was also cleared.
B. gen_send_ex(..) still returns error-indication, but since the exception was 
cleared, you get a SystemError (error indication returned but no exception was 
set).

To fix this, ptrace_enter_call now saves/restores the current PyErr.

The attached patch was applied on the newest trunk svn. I guess it should be 
applicable without problems on the 2.5 bugfix branch as well.

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1733973&group_id=5470
_______________________________________________
Patches mailing list
Patches@python.org
http://mail.python.org/mailman/listinfo/patches

Reply via email to