|  | @@ -39,9 +39,9 @@ class bgThread(Thread):
 | 
	
		
			
				|  |  |      def body(self):
 | 
	
		
			
				|  |  |          raise NotImplementedError("subclass responsibility")
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    def on_crash(self, msg, *fmt, **kwargs):
 | 
	
		
			
				|  |  | +    def on_crash(self, exc_info, msg, *fmt, **kwargs):
 | 
	
		
			
				|  |  |          sys.stderr.write((msg + "\n") % fmt)
 | 
	
		
			
				|  |  | -        traceback.print_stack(file=sys.stderr)
 | 
	
		
			
				|  |  | +        traceback.print_exception(*exc_info, file=sys.stderr)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      def run(self):
 | 
	
		
			
				|  |  |          shutdown = self._is_shutdown
 | 
	
	
		
			
				|  | @@ -49,7 +49,7 @@ class bgThread(Thread):
 | 
	
		
			
				|  |  |              try:
 | 
	
		
			
				|  |  |                  self.body()
 | 
	
		
			
				|  |  |              except Exception, exc:
 | 
	
		
			
				|  |  | -                self.on_crash("%r crashed: %r", self.name, exc, exc_info=True)
 | 
	
		
			
				|  |  | +                self.on_crash(sys.exc_info(), "%r crashed: %r", self.name, exc)
 | 
	
		
			
				|  |  |                  # exiting by normal means does not work here, so force exit.
 | 
	
		
			
				|  |  |                  os._exit(1)
 | 
	
		
			
				|  |  |          try:
 |