Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8358003

KlassTrainingData initializer reads garbage holder

XMLWordPrintable

    • b26

      (change synopsis as you see fit)

      SonarCloud reports a problem since JDK-8355003 integration.

      Seems to unfold like this:

      KlassTrainingData* KlassTrainingData::make(InstanceKlass* holder, bool null_if_not_found) {
        ...
      }

      ...eventually calls:

        static KlassTrainingData* allocate(InstanceKlass* holder) {
          return TrainingData::allocate<KlassTrainingData>(holder);
        }

      ...which eventually calls:

      KlassTrainingData::KlassTrainingData(InstanceKlass* klass) : TrainingData(klass) {
        if (holder() == klass) {
          return; // no change to make
        }

      ...which accesses:

        InstanceKlass* holder() const { return _holder; }

      ...but _holder is not yet initialized! So the check in KlassTrainingData::KlassTrainingData accesses garbage data.

            iveresov Igor Veresov
            shade Aleksey Shipilev
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: