This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Forerunner 955 abnormal cycling distance: 2.1474836E7 DistanceMeters v18.15

Hi 

It might not be connected with FW v 18.15, but recently I started seeing abnormally large distance reported on screen. It is happening with indoor trainer (Saris H3). Distances like 21.495 km. 

It is ok for some time and then suddenly without any reason distance is in thousands of kilometers 

I opened exported file and there it is  

<Trackpoint>
<Time>2024-02-13T13:02:50.000Z</Time>
<DistanceMeters>2429.4599609375</DistanceMeters>
<HeartRateBpm>
<Value>127</Value>
</HeartRateBpm>
<Cadence>90</Cadence>
<Extensions>
<ns3:TPX>
<ns3:Watts>164</ns3:Watts>
</ns3:TPX>
</Extensions>
</Trackpoint>
<Trackpoint>
<Time>2024-02-13T13:02:51.000Z</Time>
<DistanceMeters>2.1474836E7</DistanceMeters>
<HeartRateBpm>
<Value>128</Value>
</HeartRateBpm>
<Cadence>91</Cadence>
<Extensions>
<ns3:TPX>
<ns3:Watts>166</ns3:Watts>
</ns3:TPX>
</Extensions>
</Trackpoint>

Anyone noticed similar error?

  • The number 2147483647 is special. In binary it means the highest value of a signed 32 bit integer. In this case 21474836 is 100x smaller than that (probably to account for centemeters), so this is not a coincidence. I assume an internal error happened and an overflow value was added to the logs. This means Garmin does not sanitize calculated values before printing them to the log. Thousands of kilometers of position change in a second should be rejected by software, an error logged and possibly pushed to back end for analysis.

  • I was assuming it's kind of overflow error but I have no idea how to fix it. It's probably 955 problem. Will support guys take it from here or I should open an official ticket?

  • Not noticed it myself, but that's definitely 2³¹-1, which suggests computing the minimum of a set of values, where the set is unexpectedly empty.

    For example you might code:

    minimum := MAXINT;
    foreach value in set_of_values {
      if (value < minimum) {
        minimum := value;
      }
    }