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

GetMissingDictionaries in TClass does not find all missing dictionaries

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: High
    • Resolution: Fixed
    • Affects Version/s: 6.06/04, 6.06/06, 6.06/08, 6.10/00, 6.08/02, 6.08/04, 6.08/06, 6.09/02, 6.10/02, 6.10/04
    • Fix Version/s: 6.06/10, 6.08/08, 6.12/00, 6.10/06
    • Component/s: None
    • Labels:
      None
    • Environment:

      ROOT 6.06/05 (above I picked the closest choice, but 6.06/05 was not an option) compiled with g++ (GCC) 5.3.0 and using the version in the CMS environment on an SL6 linux machine

    • Development:

      Description

      When running the GetMissingDictionaries function in TClass, all missing dictionaries are not found. It seems to find missing dictionaries for data members OK, but not for base classes or constituents of elements of vectors. I created a minimal reproducer which includes no CMS specific code. The code is attached in the tarball which contains 5 small files. Put them in a directory and give the following commands.

       
      genreflex classes.h -I. -s classes_def.xml --rootmap products.rootmap --rootmap-lib products_dict.so -o products_rflx.cpp
      g++ -std=c++11 -I. -I`root-config --incdir` -fPIC -shared products_rflx.cpp MissingDictionaryTestObject.cc -o products_dict.so
      g++ -std=c++11 -I. -I`root-config  --incdir` `root-config --libs` test.cc -fPIC -o test
       
      ./test "MissingDictionaryTestA"
      ./test "Wrapper<MissingDictionaryTestA>"
      ./test "Wrapper<std::vector<MissingDictionaryTestA> >"
       

      The code includes a complicated class that contains or inherits from other types. Some are missing dictionary definitions because they are commented out in the selection file classes_def.xml

      The test executable takes a type name as an argument, then runs TClass::GetMissingDictionaries and prints out the results. I expect the three calls to it above to give similar results and report the following types as missing, but the the first 2 calls to the test executable report only 3 missing dictionaries and the last call misses all of them.

      MissingDictionaryTestD
      MissingDictionaryTestE
      MissingDictionaryTestG
      MissingDictionaryTestH
      MissingDictionaryTestJ
      MissingDictionaryTestK
      MissingDictionaryTestL
      std::vector<MissingDictionaryTestM>

        Attachments

          Activity

            People

            Assignee:
            pcanal Philippe Canal
            Reporter:
            wdd W.David Dagenhart
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: