Skip to content

meta: Allow global disabling of AutoParsing during TClass::GetClass#222

Closed
smuzaffar wants to merge 2587 commits into
cms-sw:cms/master/6a7f6cbbc3from
pcanal:master-18363-TClass
Closed

meta: Allow global disabling of AutoParsing during TClass::GetClass#222
smuzaffar wants to merge 2587 commits into
cms-sw:cms/master/6a7f6cbbc3from
pcanal:master-18363-TClass

Conversation

@smuzaffar
Copy link
Copy Markdown

CMSSW tests for root-project#18402

@cmsbuild
Copy link
Copy Markdown

A new Pull Request was created by @smuzaffar for branch cms/master/96292fedbc.

@cmsbuild, @iarspider, @smuzaffar can you please review it and eventually sign? Thanks.
@antoniovilela, @mandrenguyen, @rappoccio, @sextonkennedy you are the release manager for this.
cms-bot commands are listed here

@cmsbuild
Copy link
Copy Markdown

cmsbuild commented Apr 17, 2025

cms-bot internal usage

@smuzaffar
Copy link
Copy Markdown
Author

smuzaffar commented Apr 17, 2025

test parameters:

@smuzaffar
Copy link
Copy Markdown
Author

please test for CMSSW_15_1_ROOT6_X

@smuzaffar smuzaffar changed the title Master 18363 t class meta: Allow global disabling of AutoParsing during TClass::GetClass Apr 17, 2025
@cmsbuild
Copy link
Copy Markdown

-1

Failed Tests: UnitTests RelVals
Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-b6454d/45598/summary.html
COMMIT: 143831c
CMSSW: CMSSW_15_1_ROOT6_X_2025-04-16-2300/el8_amd64_gcc12
User test area: For local testing, you can use /cvmfs/cms-ci.cern.ch/week1/cms-sw/root/222/45598/install.sh to create a dev area with all the needed externals and cmssw changes.

The following merge commits were also included on top of IB + this PR after doing git cms-merge-topic:

You can see more details here:
https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-b6454d/45598/git-recent-commits.json
https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-b6454d/45598/git-merge-result

Unit Tests

I found 2 errors in the following unit tests:

---> test TestFWCoreFramework had ERRORS
---> test testHeterogeneousCoreAlpakaTestWriteReadSerialSync had ERRORS

RelVals

----- Begin Fatal Exception 17-Apr-2025 12:17:31 CEST-----------------------
An exception of category 'FatalRootError' occurred while
   [0] Calling EventProcessor::runToCompletion (which does almost everything after beginJob and before endJob)
   Additional Info:
      [a] Fatal Root Error: @SUB=TGenCollectionProxy::InitializeEx
The TClass for pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > used as the value type of the compiled collection proxy vector<pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > > is not loaded.

----- End Fatal Exception -------------------------------------------------
----- Begin Fatal Exception 17-Apr-2025 12:17:36 CEST-----------------------
An exception of category 'FatalRootError' occurred while
   [0] Calling EventProcessor::runToCompletion (which does almost everything after beginJob and before endJob)
   Additional Info:
      [a] Fatal Root Error: @SUB=TGenCollectionProxy::InitializeEx
The TClass for pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > used as the value type of the compiled collection proxy vector<pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > > is not loaded.

----- End Fatal Exception -------------------------------------------------
----- Begin Fatal Exception 17-Apr-2025 12:11:55 CEST-----------------------
An exception of category 'FatalRootError' occurred while
   [0] Calling EventProcessor::runToCompletion (which does almost everything after beginJob and before endJob)
   Additional Info:
      [a] Fatal Root Error: @SUB=TGenCollectionProxy::InitializeEx
The TClass for pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > used as the value type of the compiled collection proxy vector<pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > > is not loaded.

----- End Fatal Exception -------------------------------------------------
Expand to see more relval errors ...

@cmsbuild
Copy link
Copy Markdown

Pull request #222 was updated.

@smuzaffar
Copy link
Copy Markdown
Author

please test for CMSSW_15_1_ROOT6_X

@cmsbuild
Copy link
Copy Markdown

-1

Failed Tests: UnitTests RelVals
Summary: https://cmssdt.cern.ch/SDT/jenkins-artifacts/pull-request-integration/PR-b6454d/45631/summary.html
COMMIT: 214f513
CMSSW: CMSSW_15_1_ROOT6_X_2025-04-17-2300/el8_amd64_gcc12
User test area: For local testing, you can use /cvmfs/cms-ci.cern.ch/week1/cms-sw/root/222/45631/install.sh to create a dev area with all the needed externals and cmssw changes.

Unit Tests

I found 4 errors in the following unit tests:

---> test test-das-selected-lumis had ERRORS
---> test test_edmPickEvents had ERRORS
---> test TestFWCoreFramework had ERRORS
and more ...

RelVals

----- Begin Fatal Exception 18-Apr-2025 14:26:38 CEST-----------------------
An exception of category 'FatalRootError' occurred while
   [0] Calling EventProcessor::runToCompletion (which does almost everything after beginJob and before endJob)
   Additional Info:
      [a] Fatal Root Error: @SUB=TGenCollectionProxy::InitializeEx
The TClass for pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > used as the value type of the compiled collection proxy vector<pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > > is not loaded.

----- End Fatal Exception -------------------------------------------------
----- Begin Fatal Exception 18-Apr-2025 14:26:46 CEST-----------------------
An exception of category 'FatalRootError' occurred while
   [0] Calling EventProcessor::runToCompletion (which does almost everything after beginJob and before endJob)
   Additional Info:
      [a] Fatal Root Error: @SUB=TGenCollectionProxy::InitializeEx
The TClass for pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > used as the value type of the compiled collection proxy vector<pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > > is not loaded.

----- End Fatal Exception -------------------------------------------------
----- Begin Fatal Exception 18-Apr-2025 14:21:07 CEST-----------------------
An exception of category 'FatalRootError' occurred while
   [0] Calling EventProcessor::runToCompletion (which does almost everything after beginJob and before endJob)
   Additional Info:
      [a] Fatal Root Error: @SUB=TGenCollectionProxy::InitializeEx
The TClass for pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > used as the value type of the compiled collection proxy vector<pair<edm::Ref<edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >,TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > >,edmNew::DetSetVector<TTStub<edm::Ref<edm::DetSetVector<Phase2TrackerDigi>,Phase2TrackerDigi,edm::refhelper::FindForDetSetVector<Phase2TrackerDigi> > > >::FindForDetSetVector>,bitset<64> > > is not loaded.

----- End Fatal Exception -------------------------------------------------
Expand to see more relval errors ...

@smuzaffar smuzaffar closed this Jun 12, 2025
@smuzaffar smuzaffar reopened this Jul 29, 2025
@smuzaffar smuzaffar changed the base branch from cms/master/96292fedbc to cms/master/a9a81f1271 July 29, 2025 21:44
@smuzaffar
Copy link
Copy Markdown
Author

please test for CMSSW_15_1_ROOT6_X

linev and others added 27 commits March 18, 2026 15:28
Idea to have exactly same interface as TPadPainter,
but perform drawing on the TVirtualPS device.

Add extra OnPad(pad) virtual method which
specifies current pad which used for next commands
It replace pad painter by TPadPainterPS instance if
gVirtualPS is detected.
So PS painting can be done with pad painter API.
At the end of Paint/PaintModified methods previous instance will be reset
Do not use gVirtualPS directly
Speical handling of TVirtualX in TPad::PaintBox.
This method used for pad background painting and there
difference between gVirtualX and gVirtualPS is significant.
So keep two different handling of "native" (gVirtualX) and
not-native kind of TPadPainter.
Excludes duplication of box boundary painting when
fillstyle already 0. Appears in gmuiltierrors
So for both TVirtualX and TVirtualPS same code is used
Slight difference in borders width calculation while
before absolute pixel size was implemented in TVirtualPS
Create TSVG only after main canavas pad is selected with C->cd();
This important for size of created SVG image which ratio should
correspond to ratio of pad pixel size
All four signature are changed
Need to provide special virtual method.
Also supply default implementation
On the long run gVirtualPS should disappear
Similar to line, fill and text attributes while
markers also used in pad painting
It is now not really necessary while attributes
should be applied directly to pad painter
Now these methods act directly with actual pad painter to set attributes on device (gVirtualX or gVirtualPS) which is used.
ModifyOn allows to work with pad pointer from user code
While new methods add to TAttLine and TAttFill
`NewPage()` used only PS to start page

`IsCocoa()` let check if cocoa backend is used,
invoved in several places

`ResizeDrawable()` to change gVirtualX created pixmap

Provide `TGLPadPainter::ClearDrawable()` while now
pad painter API used in painting

Now gVirtualPS usage in TPad minimized only to
Print() method.
Only make sense when pad painter exists and has native funcitonality
Previously the output of ACLiC dependency generation stage was use the same name (in different directory)
in all case on Windows to suppress the output of 'rmkdepend'.  This commit changes the behavior by using
the null device also on Windows (which fall backs if we can't determine the shell - but the fall back
is now using a unique name).:

Determine the null device based on the shell in use.
   COMSPEC unset or pointing to cmd.exe -> NUL
   COMSPEC pointing to powershell       -> $null
   Anything else (e.g. bash/sh on Windows) -> `depfilename`.stderr.tmp
If TClass.cxx is build with the cpp macro:

   ROOT_DISABLE_TCLASS_GET_CLASS_AUTOPARSING

defined, it will no longer do any auto-parsing during the
execution of `TClass::GetClass`.  This will result in not
being able to find TClass-es when the name requires not-already
loaded interpreted information (eg. a typedef to be resolved).

Comments include additional possible interfaces to turn on this
feature.
Use `gInterpreter->Print("autoparsed");` to print a list
of the class names that directly lead to auto-parsing.

Use `gCling->GetAutoParseClasses()` to programatically get a set
of the class names that directly lead to auto-parsing.
This allows to disable auto-parsing during `TClass::GetClass` for debugging purposes.
Use `gInterpreter->Print(autoloaded);` to print a list
of the libraries that have been automaticaly loaded during
TClass::GetClass and due to a symbol requested during code
interpretation.
Add support for disabling the auto-parsing during TClass::GetClass by setting the
environment variable:
    ROOT_DISABLE_TCLASS_GET_CLASS_AUTOPARSING
to any value.
@pcanal pcanal force-pushed the master-18363-TClass branch from 214f513 to 9f38e06 Compare March 20, 2026 16:40
@cmsbuild
Copy link
Copy Markdown

This PR contains too many commits (2587 >= 240) and will not be processed.
Please ensure you have selected the correct target branch and consider squashing unnecessary commits.
The processing of this PR will resume once the commit count drops below the limit.

@smuzaffar smuzaffar closed this Mar 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.