ERROR vsmagent: Unhandled XMLRPC exception:

Hello,
I downloaded the demo version of Thinlinc 4.14.0 and installed it on a Redhat 7 server for evaluation purposes. The machine is the only master/agent.

$> sb_release -a
LSB Version:    :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: RedHatEnterpriseWorkstation
Description:    Red Hat Enterprise Linux Workstation release 7.9 (Maipo)
Release:        7.9
Codename:       Maipo

The installation was successful however, users are not able to connect to the machine.
The connection attempts (both with the native client and the web interface) are terminated with the message “No agent server was available”.
The administration web page shows that everything is up and running (see the attached screenshot).
Looking into the logs, I do see an Unhandled XMLRPC exception error reported. I am not sure what this means.
Here is the content of /var/log/vsmserver.log

2022-05-18 10:03:27 INFO vsmserver: VSM Server version 4.14.0 build 2408 started
2022-05-18 10:03:27 INFO vsmserver.license: Updating license data from disk to memory
2022-05-18 10:03:27 INFO vsmserver.license: License summary: 10 concurrent users. Hard limit of 10 concurrent users. 
2022-05-18 10:10:42 INFO vsmserver.session: User with uid 1002 (gkamendje) requested a new session
2022-05-18 10:10:43 WARNING vsmserver.session: Connection to 127.0.0.1:904 closed before receiving response in request for new session. 
2022-05-18 10:10:43 WARNING vsmserver.loadinfo: Agent 127.0.0.1 failed to start session, Increasing penalty points by 5 to 5
2022-05-18 10:10:43 WARNING vsmserver: No working agents found trying to start new session for gkamendje
2022-05-18 10:11:07 INFO vsmserver.session: User with uid 1002 (gkamendje) requested a new session
2022-05-18 10:11:08 WARNING vsmserver.session: Connection to 127.0.0.1:904 closed before receiving response in request for new session. 
2022-05-18 10:11:08 WARNING vsmserver.loadinfo: Agent 127.0.0.1 failed to start session, Increasing penalty points by 5 to 10
2022-05-18 10:11:08 WARNING vsmserver: No working agents found trying to start new session for gkamendje
2022-05-18 10:11:47 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 10 penalty points, decreasing to 9 after successful periodic load update
2022-05-18 10:12:27 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 9 penalty points, decreasing to 8 after successful periodic load update
2022-05-18 10:13:08 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 8 penalty points, decreasing to 7 after successful periodic load update
2022-05-18 10:13:48 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 7 penalty points, decreasing to 6 after successful periodic load update
2022-05-18 10:14:28 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 6 penalty points, decreasing to 5 after successful periodic load update
2022-05-18 10:15:08 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 5 penalty points, decreasing to 4 after successful periodic load update
2022-05-18 10:15:48 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 4 penalty points, decreasing to 3 after successful periodic load update
2022-05-18 10:16:28 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 3 penalty points, decreasing to 2 after successful periodic load update
2022-05-18 10:17:08 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 2 penalty points, decreasing to 1 after successful periodic load update
2022-05-18 10:17:48 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 1 penalty points, decreasing to 0 after successful periodic load update
2022-05-18 10:21:39 INFO vsmserver.session: User with uid 1002 (gkamendje) requested a new session
2022-05-18 10:21:39 WARNING vsmserver.session: Connection to 127.0.0.1:904 closed before receiving response in request for new session. 
2022-05-18 10:21:39 WARNING vsmserver.loadinfo: Agent 127.0.0.1 failed to start session, Increasing penalty points by 5 to 5
2022-05-18 10:21:39 WARNING vsmserver: No working agents found trying to start new session for gkamendje
2022-05-18 10:22:19 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 5 penalty points, decreasing to 4 after successful periodic load update
2022-05-18 10:22:59 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 4 penalty points, decreasing to 3 after successful periodic load update
2022-05-18 10:23:39 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 3 penalty points, decreasing to 2 after successful periodic load update
2022-05-18 10:24:19 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 2 penalty points, decreasing to 1 after successful periodic load update
2022-05-18 10:24:30 INFO vsmserver.session: User with uid 1002 (gkamendje) requested a new session
2022-05-18 10:24:30 WARNING vsmserver.session: Connection to 127.0.0.1:904 closed before receiving response in request for new session. 
2022-05-18 10:24:30 WARNING vsmserver.loadinfo: Agent 127.0.0.1 failed to start session, Increasing penalty points by 5 to 6
2022-05-18 10:24:30 WARNING vsmserver: No working agents found trying to start new session for gkamendje
2022-05-18 10:25:10 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 6 penalty points, decreasing to 5 after successful periodic load update
2022-05-18 10:25:50 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 5 penalty points, decreasing to 4 after successful periodic load update
2022-05-18 10:26:30 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 4 penalty points, decreasing to 3 after successful periodic load update
2022-05-18 10:27:10 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 3 penalty points, decreasing to 2 after successful periodic load update
2022-05-18 10:27:50 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 2 penalty points, decreasing to 1 after successful periodic load update
2022-05-18 10:28:30 INFO vsmserver.loadinfo: VSM Agent 127.0.0.1 had 1 penalty points, decreasing to 0 after successful periodic load update

Here is the content of /var/log/vsmagent.log

2022-05-18 10:03:25 INFO vsmagent: VSM Agent version 4.14.0 build 2408 started
2022-05-18 10:03:25 INFO vsmagent: My public hostname is 192.168.83.37
2022-05-18 10:10:43 ERROR vsmagent: Unhandled XMLRPC exception: <class 'RecursionError'> maximum recursion depth exceeded while calling a Python object Traceback (most recent call last):
  File "/opt/thinlinc/modules/thinlinc/vsm/asyncbase.py", line 104, in ooOOOoOO0
    obj . handle_read_event ( )
  File "/usr/lib64/python3.6/asyncore.py", line 423, in handle_read_event
    self.handle_read()
  File "/usr/lib64/python3.6/asynchat.py", line 151, in handle_read
    self.found_terminator()
  File "/opt/thinlinc/modules/thinlinc/vsm/xmlrpc.py", line 555, in found_terminator
    self . handle_request ( )
  File "/opt/thinlinc/modules/thinlinc/vsm/xmlrpc.py", line 569, in handle_request
    self . handle_method ( )
  File "/opt/thinlinc/modules/thinlinc/vsm/vsmagentchannel.py", line 120, in handle_method
    self . params )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 50, in handle
    self . check_old_client ( )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 62, in check_old_client
    self . check_valid_user ( )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 69, in check_valid_user
    self . setup_session_info ( )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 95, in setup_session_info
    self . find_free_display ( )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )
  File "/usr/lib64/python3.6/asyncore.py", line 341, in connect
    self.handle_connect_event()
  File "/usr/lib64/python3.6/asyncore.py", line 429, in handle_connect_event
    self.handle_connect()
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 54, in handle_connect
    self . callback ( oOooo0OOO )
  File "/opt/thinlinc/modules/thinlinc/vsm/handler_reqsession.py", line 185, in find_free_display
    self . find_free_display , 2 )
  File "/opt/thinlinc/modules/thinlinc/vsm/portopencheck.py", line 39, in __init__
    self . connect ( addr )

I have truncated it since it was too long

Thanks for your help.

I’ve had a look here, and it looks like this might occur if there is a conflict with a local X server. That should not normally happen, though, as ThinLinc starts at display 10, and local servers at display 0.

Has ThinLinc been reconfigured from the defaults on this system?

And could you check what local X servers are running when this happens?

ThinLinc was configured from the defaults on this system.

There were Xrdp and Xvnc servers running on the system.

Stopping the Xrdp server and restarting the ThinLinc agent allowed me to connect to the machine using ThinLinc. Is there a way to specify which display number ThinLinc should use?

Yes, you can change the setting /vsmagent/display_min to control the lowest display number ThinLinc will try to use:

https://www.cendio.com/resources/docs/tag/config_vsmagent.html#server-config-vsmagent-display_min