Uploaded image for project: 'ROOT'
  1. ROOT
  2. ROOT-7276

[Regression 6.03.03] Clangs errors on dictionary load (class forward declaration incl. typedefs)

    Details

    • Type: Story
    • Status: In Progress (View Workflow)
    • Priority: Medium
    • Resolution: Unresolved
    • Affects Version/s: 6.04.00
    • Fix Version/s: None
    • Component/s: Dictionaries
    • Labels:
    • Environment:

      CMSSW with 975682415c95a06516cf866cf2c53c7e20195004 (trunk version few hours ago) version of ROOT6. GCC 4.9.1. CMS architecture: slc6_amd64_gcc491.

    • Customer:
    • Bug / Feature:
      Bug report
    • Severity:
      5 - Blocker
    • Development:

      Description

      After moving from 6.02.05 to 6.03.03 (trunk) we get 1254 errors from this single issue. All errors happen during load of dictionary.

      input_line_22:54:28: error: use of undeclared identifier 'ParameterSetType'
      namespace edm{typedef Hash<ParameterSetType> ParameterSetID __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/BranchDescription.h"))) ;}
                                 ^
      input_line_22:55:28: error: use of undeclared identifier 'ParentageType'
      namespace edm{typedef Hash<ParentageType> ParentageID __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/BranchDescription.h"))) ;}
                                 ^
      input_line_22:56:28: error: use of undeclared identifier 'ProcessHistoryType'
      namespace edm{typedef Hash<ProcessHistoryType> ProcessHistoryID __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/BranchDescription.h"))) ;}
                                 ^
      input_line_22:57:28: error: use of undeclared identifier 'ProcessConfigurationType'
      namespace edm{typedef Hash<ProcessConfigurationType> ProcessConfigurationID __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/BranchDescription.h"))) ;}
                                 ^
      input_line_22:58:28: error: use of undeclared identifier 'EntryDescriptionType'
      namespace edm{typedef Hash<EntryDescriptionType> EntryDescriptionID __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/EventEntryInfo.h"))) ;}
                                 ^
      input_line_22:59:28: error: use of undeclared identifier 'ModuleDescriptionType'
      namespace edm{typedef Hash<ModuleDescriptionType> ModuleDescriptionID;}
                                 ^
      TInterpreter::TCling::RegisterModule:0: RuntimeWarning: Problems in compiling forward declarations for module DataFormatsProvenance_xr: '
      #pragma clang diagnostic ignored "-Wkeyword-compat"
      #pragma clang diagnostic ignored "-Wignored-attributes"
      #pragma clang diagnostic ignored "-Wreturn-type-c-linkage"
      extern int __Cling_Autoloading_Map;

      Dictionary change between 6.02.05 and current trunk. The problem seems to be typedef related.

      @@ -6151,6 +6151,12 @@
       class __attribute__((annotate("$clingAutoload$TFormula.h")))  TFormula;
       namespace edm{class __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/ThinnedAssociationsHelper.h")))  ThinnedAssociationBranches;}
       namespace edm{class __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/ThinnedAssociationsHelper.h")))  ThinnedAssociationsHelper;}
      +namespace edm{typedef Hash<ParameterSetType> ParameterSetID __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/BranchDescription.h"))) ;}
      +namespace edm{typedef Hash<ParentageType> ParentageID __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/BranchDescription.h"))) ;}
      +namespace edm{typedef Hash<ProcessHistoryType> ProcessHistoryID __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/BranchDescription.h"))) ;}
      +namespace edm{typedef Hash<ProcessConfigurationType> ProcessConfigurationID __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/BranchDescription.h"))) ;}
      +namespace edm{typedef Hash<EntryDescriptionType> EntryDescriptionID __attribute__((annotate("$clingAutoload$DataFormats/Provenance/interface/EventEntryInfo.h"))) ;}
      +namespace edm{typedef Hash<ModuleDescriptionType> ModuleDescriptionID;}
       )DICTFWDDCLS";
           static const char* payloadCode = R"DICTPAYLOAD(

      The failing package from CMSSW is DataFormats/Provenance.

      If one would rebuild ROOT6 with debug options, it would assert on run-time (tested with older ROOT6 version from master brunch):

      core/meta/src/TCling.cxx:1558: virtual void TCling::RegisterModule(const char*, const char**, const char**, const char*, const char*, void (*)(), const FwdDeclArgsToKeepCollection_t&, const char**): Assertion `cling::Interpreter::kSuccess == compRes && "The forward declarations could not be compiled"' failed.

      You can find CMSSW files on GitHub, e.g.
      https://github.com/cms-sw/cmssw/blob/CMSSW_7_5_X/DataFormats/Provenance/interface/BranchDescription.h

        Attachments

          Activity

            People

            • Assignee:
              axel Axel Naumann
              Reporter:
              davidlt David Abdurachmanov (Inactive)
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:
                PlannedStart: