homepage

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 ossman
Recipients ossman
Date 2012年04月02日.12:08:19
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1333368500.29.0.652267156106.issue14474@psf.upfronthosting.co.za>
In-reply-to
Content
These three things do not mix:
 - AttributeError
 - Threads
 - Object methods
An unhandled AttributeError thrown in a thread will not call sys.excepthook if the thread's start function is a class/object method.
Test case:
import sys
import thread
class Dummy:
	def worker(self):
		raise AttributeError
thread.start_new_thread(Dummy().worker, ())
sys.stdin.readline()
Note that you do not get a traceback here. Throwing any other exception type works fine, as does having worker() be a simple function.
I think I've traced the issue to Objects/classobject.c:instance_repr(). It tries to look up the method, making sure to handle any AttributeError this might cause. But it fails to save and restore and Exception currently already active, effectively clearing out the current exception.
History
Date User Action Args
2012年04月02日 12:08:20ossmansetrecipients: + ossman
2012年04月02日 12:08:20ossmansetmessageid: <1333368500.29.0.652267156106.issue14474@psf.upfronthosting.co.za>
2012年04月02日 12:08:19ossmanlinkissue14474 messages
2012年04月02日 12:08:19ossmancreate

AltStyle によって変換されたページ (->オリジナル) /