Message 391186 - Python tracker

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.

Content
There is a race condition. The main thread closes a file descriptor which is part of the asyncore loop "map", a thread polls on the asyncore "map" file descriptors.

-- Main thread --

Close a socket:

  File "/usr/home/vstinner/python/master/Lib/test/test_logging.py", line 1072, in test_basic                                                                   
    server.stop()                                                              
  File "/usr/home/vstinner/python/master/Lib/test/test_logging.py", line 870, in stop                                                                          
    self.close()                                                               

-- TestSMTPServer thread --

Wait in asyncore.loop():
                      
Exception in thread Thread-1 (serve_forever):                                                                                                                  
Traceback (most recent call last):                                             
  File "/usr/home/vstinner/python/master/Lib/threading.py", line 990, in _bootstrap_inner                                                                      
    self.run()                                                                 
  File "/usr/home/vstinner/python/master/Lib/threading.py", line 928, in run                                                                                   
    self._target(*self._args, **self._kwargs)                                  
  File "/usr/home/vstinner/python/master/Lib/test/test_logging.py", line 863, in serve_forever                                                                 
    asyncore.loop(poll_interval, map=self._map)                                
  File "/usr/home/vstinner/python/master/Lib/asyncore.py", line 211, in loop                                                                                   
    poll_fun(timeout, map)                                                     
  File "/usr/home/vstinner/python/master/Lib/asyncore.py", line 145, in poll                                                                                   
    r, w, e = select.select(r, w, e, timeout)                                  
OSError: [Errno 9] Bad file descriptor