1 Reply Latest reply on Mar 26, 2015 4:47 AM by Rok Lenardic

    FX7400 random DISCONNECTION_EVENT & memory leak

    Rok Lenardic

      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

        • Re: FX7400 random DISCONNECTION_EVENT & memory leak
          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