Message217155
| Author |
gvanrossum |
| Recipients |
Jack.Murray, giampaolo.rodola, gvanrossum, pitrou, vstinner, yselivanov |
| Date |
2014年04月25日.06:45:16 |
| SpamBayes Score |
-1.0 |
| Marked as misclassified |
Yes |
| Message-id |
<1398408316.52.0.79628619584.issue21340@psf.upfronthosting.co.za> |
| In-reply-to |
| Content |
Oh wait, it looks like the assert failed because KeyboardInterrupt hit right at that point. I ran the program a few times and when I hit ^C I get a traceback at a different point in the code each time. This is as expected. You must have hit the rare case where it hit right at the assert -- then the behavior I described can happen.
Anyway, I think this would fix it:
--- a/asyncio/tasks.py Fri Apr 18 09:51:35 2014 -0700
+++ b/asyncio/tasks.py Thu Apr 24 23:44:57 2014 -0700
@@ -76,7 +76,8 @@
return self.gen.gi_code
def __del__(self):
- frame = self.gen.gi_frame
+ gen = getattr(self, 'gen', None)
+ frame = getattr(gen, 'gi_frame', None)
if frame is not None and frame.f_lasti == -1:
func = self.func
code = func.__code__ |
|