valgrind or compiler bug (pretty sure) - Conditional jump or move depends on uninitialised value(s_ with Float2String_OptimizedForCLocaleAndNoStreamFlags_

Description

{
<insert_a_suppression_name_here>
Memcheck:Cond
fun:ZN12_GLOBAL_N_149Float2String_OptimizedForCLocaleAndNoStreamFlags_IeEEN7Stroika10Foundation10Characters6StringET_ib
fun:ZN12_GLOBAL_N_113Float2String_IeEEN7Stroika10Foundation10Characters6StringET_RKNS3_19Float2StringOptionsE
fun:_ZN7Stroika10Foundation10Characters12Float2StringEfRKNS1_19Float2StringOptionsE
fun:ZN12_GLOBALN_129Test21_StringToIntEtc_Helper_40Verify_FloatStringRoundtripNearlyEquals_IfEEvT
fun:ZN12_GLOBAL_N_122Test21_StringToIntEtc_Ev
fun:ZN12_GLOBAL_N_118DoRegressionTests_Ev
fun:_ZN7Stroika11TestHarness15PrintPassOrFailEPFvvE
funbelow main)
}
==20== Conditional jump or move depends on uninitialised value(s)
==20== at 0x15AFAB: Stroika::Foundation::Characters::String (anonymous namespace)::Float2String_OptimizedForCLocaleAndNoStreamFlags_<long double>(long double, int, bool) (FloatConversion.cpp:114)
==20== by 0x15B9FC: Stroika::Foundation::Characters::String (anonymous namespace)::Float2String_<long double>(long double, Stroika::Foundation::Characters::Float2StringOptions const&) (FloatConversion.cpp:218)
==20== by 0x15C8C9: Stroika::Foundation::Characters::Float2String(double, Stroika::Foundation::Characters::Float2StringOptions const&) (FloatConversion.cpp:233)
==20== by 0x1326F6: void (anonymous namespace)::Test21_StringToIntEtc_Helper_::Verify_FloatStringRoundtripNearlyEquals_<double>(double) (Test.cpp:903)
==20== by 0x136CF6: (anonymous namespace)::Test21_StringToIntEtc_() (Test.cpp:959)
==20== by 0x141510: (anonymous namespace):oRegressionTests_() (Test.cpp:1442)
==20== by 0x152E59: Stroika::TestHarness:rintPassOrFail(void ()) (TestHarness.cpp:75)
==20== by 0x4A4109A: (below main) (libc-start.c:308)
==20== Uninitialised value was created by a stack allocation
==20== at 0x1326A0: void (anonymous namespace)::Test21_StringToIntEtc_Helper_::Verify_FloatStringRoundtripNearlyEquals_<double>(double) (Test.cpp:901)
==20==
==20==

I reviewed C++ code and couldnt see any way this could be a bug so added suppression and marked low priority to revisit. ONLY happens on g++8 on Ubuntu 1810 .

Environment

None

Status

Assignee

Lewis Pringle

Reporter

Lewis Pringle

Labels

None

Components

Priority

Lowest
Configure