FX7400 random DISCONNECTION_EVENT & memory leak

R Rok Lenardic 3 years 7 months ago
49 1 0

Hi,
 
we have an installation of 6 FX7400 readers where one of them keeps disconnecting at random times (sometimes 4 times in an hour, sometimes once a day). We are monitoring the network and there do not seem to be any issues there.
 
Regardless, what is really odd is the way the EMDK library handles such disconnection events on our system:

using ASP.NET application, .NET v4.5
using 32-bit libs: RFIDAPI32PC.dll and Symbol.RFID3.Host.dll
64 bit Windows Server 2012 (64 bit EMDK libs do not work on Windows Server 2012, Motorola confirmed that a few months ago)
We tried EMDK version 2.7, 2.8 and 2.9 of the above libraries, all with the same problem

 
What happens is the following:

the StatusNotify event is triggered of type DISCONNECTION_EVENT
we attempt a Reconnect which fails in various ways

System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTimeSee stacktrace[1] below
Symbol.RFID3.OperationFailureException: ReconnectSee stacktrace[2] below

Then, trying to Dispose this object, we get the following exception, see [3]
OK, so we suppress the above exceptions and simply assign a new RFIDReaedr object to the old variable:_rfidRdr = new RFIDReader(_rfidRdrIP, 5084, 0);
However, when calling the connect method on _rfidRdr.Connect();we get the [4] error. Trying to programatically connect over LLRP management console to force disconnection also fails (we were suggested this method in the past by Motorola support), see [5]
It seems that the disconnected reader object that was also disposed, actually still holds the connection to the reader and does not want to let go.
UNLESS, we force garbae collection between steps 3 and 4 above:                        GC.Collect();
In such a case, the new reader object can actually establish the connection again to that same reader.

Any advice would be highly appreciated.
Thanks
Rok
 
 
[1]
   at System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day)
   at System.DateTime..ctor(Int32 year, Int32 month, Int32 day, Int32 hour, Int32 minute, Int32 second, Int32 millisecond)
   at Symbol.RFID3.OperationFailureException..ctor(IntPtr readerHandle, String sMessage, RFIDResults resResults, Boolean getLastError)
   at Symbol.RFID3.ProcessErrorCode.ThrowException(IntPtr readerHandle, String sMessage, RFIDResults results, Boolean getLastError)
   at Symbol.RFID3.RFIDReader.Reconnect()
   at Lynx.Utils.RfidReader.RFID_StatusNotify(Object sender, StatusEventArgs e)

[2]
   at Symbol.RFID3.ProcessErrorCode.ThrowException(IntPtr readerHandle, String sMessage, RFIDResults results, Boolean getLastError)
   at Symbol.RFID3.RFIDReader.Reconnect()
   at Lynx.Utils.RfidReader.RFID_StatusNotify(Object sender, StatusEventArgs e)
Status: Invalid parameter given
Vendor Message: tagCount is 0
Time stamp: 3/17/2015 6:25:02 AM
 
[3]
System.Exception: Dispose : Trying to access a disposed object
   at Symbol.RFID3.RFIDReader.Dispose()
   at Lynx.Utils.RfidReader.DestroyReader()
 
[4]
Symbol.RFID3.OperationFailureException: Connect
   at Symbol.RFID3.ProcessErrorCode.ThrowException(IntPtr readerHandle, String sMessage, RFIDResults results, Boolean getLastError)
   at Symbol.RFID3.RFIDReader.Connect()
   at Lynx.Utils.RfidReader.ConnectReader(RFIDReader reader)
Status: Connection Already exists
Vendor Message: None
 
[5]
Symbol.RFID3.OperationFailureException: LLRPConnection.InitiateFromReader
   at Symbol.RFID3.ProcessErrorCode.ThrowException(IntPtr readerHandle, String sMessage, RFIDResults results, Boolean getLastError)
   at Symbol.RFID3.LLRPConnection.DisconnectFromReader()
   at Lynx.Utils.RfidReader.DisconnectLLRP()
Status: RM command processing failed
Vendor Message: Error Code: 65535, Error Description: LLRP Disconnect Request Failed.
Time stamp: 12.3.2015 8:03:25

Please Register or Login to post a reply

1 Replies

R Rok Lenardic

I would like to include the actual reader's System Log around that exact moment when this disconnect occurs:
Thu Mar 26 11:52:19 2015: I-LLRP: establishConnectToPartner: connected to fd:355
Thu Mar 26 11:52:19 2015: I-LLRP: lrSocketConnect: Accepted connection on fd:355
Thu Mar 26 11:52:17 2015: E-LLRP: lrTxSend: Disconnect fd:0 on send.
Thu Mar 26 11:52:17 2015: E-LLRP: sendMessage:  READER_EVENT_NOTIFICATION sendMessage failed, send IO error
Thu Mar 26 11:52:17 2015: I-LLRP: lrRxClose: Closing connection on fd:351
Thu Mar 26 11:52:17 2015: E-LLRP: lrRxSocketThread: Recv Msg Tattled
Thu Mar 26 11:52:17 2015: E-LLRP: recvMessage: recvMessage failed, recv IO error
Thu Mar 26 11:52:17 2015: I-LLRP: establishConnectToPartner: connected to fd:353
Thu Mar 26 11:52:17 2015: I-LLRP: lrSocketConnect: Accepted connection on fd:353

CONTACT
Can’t find what you’re looking for?