FX7400 random DISCONNECTION_EVENT & memory leak

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:

  1. using ASP.NET application, .NET v4.5
  2. using 32-bit libs: RFIDAPI32PC.dll and Symbol.RFID3.Host.dll
  3. 64 bit Windows Server 2012 (64 bit EMDK libs do not work on Windows Server 2012, Motorola confirmed that a few months ago)
  4. 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:

  1. the StatusNotify event is triggered of type DISCONNECTION_EVENT
  2. we attempt a Reconnect which fails in various ways
    1. System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime
      See stacktrace[1] below
    2. Symbol.RFID3.OperationFailureException: Reconnect
      See stacktrace[2] below
  3. Then, trying to Dispose this object, we get the following exception, see [3]
  4. OK, so we suppress the above exceptions and simply assign a new RFIDReaedr object to the old variable:
    _rfidRdr = new RFIDReader(_rfidRdrIP, 5084, 0);
  5. 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]
  6. 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.
  7. UNLESS, we force garbae collection between steps 3 and 4 above:
                            GC.Collect();
  8. 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