Example: 2015-10-01 15:42:11 ERROR vsmserver.session: Unhandled exception trying to unbind ports for display 1 on VSM Agent 127.0.0.1:904: <type 'exceptions.TypeError'> 'NoneType' object has no attribute '__getitem__' Tr aceback (most recent call last): File "/opt/thinlinc/modules/thinlinc/vsm/async.py", line 112, in iii11 obj . handle_read_event ( ) File "/usr/lib64/python2.7/asyncore.py", line 449, in handle_read_event self.handle_read() File "/usr/lib64/python2.7/asynchat.py", line 147, in handle_read self.found_terminator() File "/opt/thinlinc/modules/thinlinc/vsm/xmlrpc.py", line 405, in found_terminator self . handle_response ( ) File "/opt/thinlinc/modules/thinlinc/vsm/xmlrpc.py", line 437, in handle_response self . handle_returnvalue ( ) File "/opt/thinlinc/modules/thinlinc/vsm/call_unbindports.py", line 41, in handle_returnvalue self . callback ( ) File "/opt/thinlinc/modules/thinlinc/vsm/loginhandler_common.py", line 71, in run_sessionscripts self . send_response ( ) File "/opt/thinlinc/modules/thinlinc/vsm/loginhandler_common.py", line 88, in send_response oOOoo ) [ 'sessionkey' ] TypeError: 'NoneType' object has no attribute '__getitem__' . Marking agent as down. The crash had nothing to do with unbinding ports, but is presented that way only because of the way we stack callbacks on top of each other. Not sure there's an easy fix for this. We would probably have to redesign things to avoid this nesting.
A very simple solution is to change the message to something more generic, like "Unhandled exception:".