Uploaded image for project: 'HPCC'
  1. HPCC
  2. HPCC-28285

Unittests for histogram reveal use of invalid memory

    XMLWordPrintable

Details

    • Regression
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • None
    • 8.10.0
    • JLib
    • None

    Description

      There is some code in jmetric:

       

      ScaledHistogramMetric::ScaledHistogramMetric(const char *name, const char *desc, StatisticMeasure units, const std::vector<__uint64> &bucketLimits, double limitsToMeasurementUnitsScaleFactor, const MetricMetaData &_metaData) :
          HistogramMetric{name, desc, units, bucketLimits, metaData}
      

      Note it is incorrectly passing metaData rather than _metaData to the base class constructor.
       
      It would be better if all the parameters to the constructors have leading underscores (so it is consistent with (most) of the rest of the platform) and help avoid potential problems like this.
       
      Found by running the test under valgrind which reported the following:

      .........==201723== Conditional jump or move depends on uninitialised value(s)
      ==201723==    at 0x3837A7: std::_Vector_base<hpccMetrics::MetricMetaDataItem, std::allocator<hpccMetrics::MetricMetaDataItem> >::_M_allocate(unsigned long) (stl_vector.h:343)
      ==201723==    by 0x382D7F: std::_Vector_base<hpccMetrics::MetricMetaDataItem, std::allocator<hpccMetrics::MetricMetaDataItem> >::_M_create_storage(unsigned long) (stl_vector.h:358)
      ==201723==    by 0x3809A3: std::_Vector_base<hpccMetrics::MetricMetaDataItem, std::allocator<hpccMetrics::MetricMetaDataItem> >::_Vector_base(unsigned long, std::allocator<hpccMetrics::MetricMetaDataItem> const&) (stl_vector.h:302)
      ==201723==    by 0x37E221: std::vector<hpccMetrics::MetricMetaDataItem, std::allocator<hpccMetrics::MetricMetaDataItem> >::vector(std::vector<hpccMetrics::MetricMetaDataItem, std::allocator<hpccMetrics::MetricMetaDataItem> > const&) (stl_vector.h:552)
      ==201723==    by 0x375659: hpccMetrics::MetricBase::MetricBase(char const*, char const*, hpccMetrics::MetricType, StatisticMeasure, std::vector<hpccMetrics::MetricMetaDataItem, std::allocator<hpccMetrics::MetricMetaDataItem> > const&) (jmetrics.hpp:136)
      ==201723==    by 0x8F09A37: hpccMetrics::HistogramMetric::HistogramMetric(char const*, char const*, StatisticMeasure, std::vector<unsigned long long, std::allocator<unsigned long long> > const&, std::vector<hpccMetrics::MetricMetaDataItem, std::allocator<hpccMetrics::MetricMetaDataItem> > const&) (jmetrics.cpp:32)
      ==201723==    by 0x8F0A3C6: hpccMetrics::ScaledHistogramMetric::ScaledHistogramMetric(char const*, char const*, StatisticMeasure, std::vector<unsigned long long, std::allocator<unsigned long long> > const&, double, std::vector<hpccMetrics::MetricMetaDataItem, std::allocator<hpccMetrics::MetricMetaDataItem> > const&) (jmetrics.cpp:90)
       

      Attachments

        Activity

          People

            kenrowland Kenneth A Rowland
            ghalliday Gavin Halliday
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: