Jump to content
OpenSplice DDS Forum


  • Content count

  • Joined

  • Last visited

About Bill

  • Rank

Profile Information

  • Company
    Pyramid Technical Consultants, Inc.
  1. Running P637-OpenSpliceDDSV6.3.2p2-HDE-x86.win-vs2010 We have an application using DDS between multiple computers. After approximately 24 hours (happens reliably), we see the following error in the log after the application crashes: "writer reached maximum heartbeat-frag sequence number" Examination of the source code shows: q_transmit.c :: create_HeartbeatFrag() if (wr->hbfragcount == DDSI_COUNT_MAX) NN_FATAL0 ("writer reached maximum heartbeat-frag sequence number"); hbf->count = ++wr->hbfragcount; #define NN_FATAL0(fmt) do { \ nn_log (LC_FATAL, (fmt)); \ os_report (OS_FATAL, config.servicename, __FILE__, __LINE__, 0, (fmt)); \ abort (); \ } while (0) So it appears on the surface that each time a heartbeat fragment is created, a counter is incremented, and if the counter exceeds the maximum (32 bit max value), an abort() is executed and the entire program exits. The counter does not appear to every be reset except in the case of creating the initial connection. There is similar behavior in q_xevent.c :: add_AckNack(). This would correspond to roughly 20us traffic, which is approximately what we see using wireshark. Can someone please describe the expected behavior in these cases, and what possible fixes can be applied? I have looked at version notes all the way through V6.8 and there appears to be no mention of this issue. Cannot find any mention in the forum either. Thanks.