[py-dev] execnet: shutdown issues in a heavily threaded environment

Gordon Wrigley py-dev at tolomea.com
Mon Jul 13 03:40:10 CEST 2009


> One issue that can pop up is tearing down the whole
> machinery cleanly - that can sometimes be more
> involved and i believe execnet still might need
> some more work there.

On that note can you shed any light on this message:

Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel._del_ of <Channel id=7
open>> ignored

Currently I'm only seeing them on my test machine, but they are
occurring very frequently, they drop out at the end of the py.test
invocation, I will paste the tail end of the py.test output below.

I'm not sure exactly what is causing this, naively it seems to
indicate a circular chain of references involving one or more
channels. However immediately prior to the conclusion of each test
exit gc.garbage is empty and there are none of my objects in
gc.get_objects.

Also this only started when I reworked our remote invocation system
recently, the most notable change in the new system is that it makes
more use of threads and particularly it has daemon threads waiting on
channel receive calls.


lab at okum:~$ uname -a
Linux okum 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:57:59 UTC
2009 i686 GNU/Linux
lab at okum:~$ python
Python 2.6.2 (release26-maint, Apr 19 2009, 01:56:41)
[GCC 4.3.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import py
>>> py.version
'1.0.0b1'


============================================== 35 passed in 231.71
seconds ===============================================
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in Unhandled exception in thread started by <bound
method Thread.__bootstrap of <Thread(receiver, stopped daemon
1177635728)>>
<bound method Channel.__del__ of <Channel id=7 open>>Error in sys.excepthook:
Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/apport_python_hook.py", line
38, in apport_excepthook
    from apport.packaging_impl import impl as packaging
ImportError: No module named apport.packaging_impl

Original exception was:
Traceback (most recent call last):
  File "/usr/lib/python2.6/threading.py", line 497, in __bootstrap
    self.__bootstrap_inner()
  File "/usr/lib/python2.6/threading.py", line 538, in __bootstrap_inner
    (self.name, _format_exc()))
TypeError: 'NoneType' object is not callable
 ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored
Exception AttributeError: "'NoneType' object has no attribute
'CHANNEL_CLOSE'" in <bound method Channel.__del__ of <Channel id=7
open>> ignored



More information about the Pytest-dev mailing list