I develop my device servers mostly on Windows. Recently, after switching to new VM with Tango 9.2.5a (previous was with 9.2.2), my DS started to print warnings, when I open “Monitor device” from Jive:
omniORB: (6) 2019-03-11 16:45:08.370000: Warning: method 'command_inout_4' raised an unexpected exception (not a CORBA exception).
omniORB: (6) 2019-03-11 16:45:08.833000: Warning: method 'read_attributes_5' raised an unexpected exception (not a CORBA exception).
I noticed that Status is not set, even after set_state or set_status at code - when I try to read it from “Test device” I get “lost connection” error (see attachment).
It’s strange, because the same code works well on Debian VM.
My environment: Win 10, Python 3.6, PyTango 9.2.3 (compiled by NexeyaSGara). On VM: Tango 9.2.5a, Jive 7.21, AtkPanel 5.8.
The server-side exception that you are getting is a CORBA UNKNOWN exception with OMG minor code 1, which seems to correspond to an error code indicating an UNKNOWN_UserException (I got this information from omniORB4/minorCode.h include file from omniORB).
I guess this means that you device server is throwing an unknown user exception when the attribute is read.
Do you have anything in the read method of this attribute in the device server which could throw an exception?
If yes, could you try to convert this exception to a Tango::DevFailed exception and throw this Tango::DevFailed exception instead?
As I mentioned - it only happens with “Status” attribute.
So the same situation happens with empty DS, that was just generated by Pogo (see attachment)
I encounter this same issue with a custom command. And I found out the reason is that the command name is too long (27 characters). Making it shorter to 21 characters works without the exception.