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.

Author JelleZijlstra
Recipients JelleZijlstra, nedbat, sdeibel, terry.reedy
Date 2016-06-02.17:06:41
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1464887201.88.0.64983255054.issue13548@psf.upfronthosting.co.za>
In-reply-to
Content
The reason for this behavior is that the trace function is called whenever execution in the bytecode jumps to a new source line. See ceval.c line 4440 or so:

    /* If the last instruction falls at the start of a line or if
       it represents a jump backwards, update the frame's line
       number and call the trace function. */

Running dis.dis on x in the example file shows that the bytecode for returning None is assigned to the "pass" line.

I think the bug here is really with the line number assignment in the bytecode, not with the tracing, but I don't see an obvious way to fix it.
History
Date User Action Args
2016-06-02 17:06:42JelleZijlstrasetrecipients: + JelleZijlstra, terry.reedy, sdeibel, nedbat
2016-06-02 17:06:41JelleZijlstrasetmessageid: <1464887201.88.0.64983255054.issue13548@psf.upfronthosting.co.za>
2016-06-02 17:06:41JelleZijlstralinkissue13548 messages
2016-06-02 17:06:41JelleZijlstracreate