Skip to content

TClass::Init() does two lookups where one is enough #7123

Closed

Description

@Axel-Naumann

Explain what you would like to see improved

TCling::CheckClassInfo() should return (by parameter) the found decl, such that TClass::Init() can use it to construct the TClingClassInfo and that doesn't need to repeat the lookup.

To Reproduce

One:

#0  cling::LookupHelper::findScope (this=0x5555555f7be0, className=..., diagOnOff=cling::LookupHelper::NoDiagnostics, 
    resultType=0x7fffffffaae0, instantiateTemplate=false)
    at /home/axel/build/root/master/src/interpreter/cling/lib/Interpreter/LookupHelper.cpp:525
#1  0x00007ffff2d8cc59 in TCling::CheckClassInfo (this=0x5555555f1e00, name=0x555555f70749 "TSysEvtHandler", autoload=true, 
    isClassOrNamespaceOnly=false) at /home/axel/build/root/master/src/core/metacling/src/TCling.cxx:4136
#2  0x00007ffff7d0e211 in TClass::Init (this=0x555555f70730, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, 
    typeinfo=0x7ffff7f38f38 <typeinfo for TSysEvtHandler>, isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22, givenInfo=0x0, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:1494
#3  0x00007ffff7d0d5b7 in TClass::TClass (this=0x555555f70730, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, info=..., 
    isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:1318
#4  0x00007ffff7fa9dee in TQClass::TQClass (this=0x555555f70710, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, info=..., 
    isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22) at include/TQClass.h:47
#5  0x00007ffff7fa9eaa in ROOT::Internal::TQObjectInitBehavior::CreateClass (this=0x5555555bff80, 
    cname=0x7ffff7af4b40 "TSysEvtHandler", id=0, info=..., isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22) at include/TQClass.h:70
#6  0x00007ffff7d3c467 in ROOT::TGenericClassInfo::GetClass (
    this=0x7ffff7f7ce60 <ROOT::GenerateInitInstanceLocal(TSysEvtHandler const*)::instance>)
    at /home/axel/build/root/master/src/core/meta/src/TGenericClassInfo.cxx:250
#7  0x00007ffff7dcf596 in TSysEvtHandler::Dictionary () at core/G__Core.cxx:14387
#8  0x00007ffff7d1db76 in TClass::LoadClassDefault (requestedname=0x7fffffffb399 "TSysEvtHandler")
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:5769
#9  0x00007ffff7d1da90 in TClass::LoadClass (requestedname=0x7fffffffb399 "TSysEvtHandler", silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:5740
#10 0x00007ffff7bdd915 in TROOT::LoadClass (this=0x7ffff7f53460 <ROOT::Internal::GetROOT1()::alloc>, 
    requestedname=0x7fffffffb399 "TSysEvtHandler", silent=false) at /home/axel/build/root/master/src/core/base/src/TROOT.cxx:2119
#11 0x00007ffff7d14d58 in TClass::GetClass (info=0x555556980ba0, load=true, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:3323
#12 0x00007ffff7d07144 in TBaseClass::GetClassPointer (this=0x555556980c70, load=true)
    at /home/axel/build/root/master/src/core/meta/src/TBaseClass.cxx:66
#13 0x00007ffff7c4b6eb in TQObject::CollectClassSignalLists (this=0x555555d8eac0, list=..., cls=0x55555608c200)
    at /home/axel/build/root/master/src/core/base/src/TQObject.cxx:461
#14 0x00007ffff7faf3ef in TQObject::EmitVA<>(char const*, int) (this=0x555555d8eac0, signal_name=0x7ffff7fa0db3 "Added()")
    at /home/axel/build/root/master/src/core/base/inc/TQObject.h:109
#15 0x00007ffff7fae61a in TQObject::Emit (this=0x555555d8eac0, signal=0x7ffff7fa0db3 "Added()")
    at /home/axel/build/root/master/src/core/base/inc/TQObject.h:173
#16 0x00007ffff7faec35 in TSysEvtHandler::Added (this=0x555555d8eab0)
    at /home/axel/build/root/master/src/core/base/inc/TSysEvtHandler.h:50
#17 0x00007ffff7c680da in TSignalHandler::Add (this=0x555555d8eab0)
    at /home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx:172
#18 0x00007ffff7faadb5 in TRint::TRint (this=0x5555555d5780, appClassName=0x5555555549b8 "Rint", argc=0x7fffffffd75c, 
    argv=0x7fffffffd878, options=0x0, numOptions=0, noLogo=false) at /home/axel/build/root/master/src/core/rint/src/TRint.cxx:211
#19 0x0000555555555cab in main (argc=1, argv=0x7fffffffd878) at /home/axel/build/root/master/src/main/src/rmain.cxx:27

Two:

#0  cling::LookupHelper::findScope (this=0x5555555f7be0, className=..., diagOnOff=cling::LookupHelper::NoDiagnostics, 
    resultType=0x7fffffffad88, instantiateTemplate=false)
    at /home/axel/build/root/master/src/interpreter/cling/lib/Interpreter/LookupHelper.cpp:525
#1  0x00007ffff2eef9e9 in TClingClassInfo::TClingClassInfo (this=0x5555569808f0, interp=0x5555555802a0, 
    name=0x7fffffffae70 "TSysEvtHandler", intantiateTemplate=false)
    at /home/axel/build/root/master/src/core/metacling/src/TClingClassInfo.cxx:88
#2  0x00007ffff2d8c4a3 in TCling::SetClassInfo (this=0x5555555f1e00, cl=0x555555f70730, reload=false)
    at /home/axel/build/root/master/src/core/metacling/src/TCling.cxx:3984
#3  0x00007ffff7d0e250 in TClass::Init (this=0x555555f70730, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, 
    typeinfo=0x7ffff7f38f38 <typeinfo for TSysEvtHandler>, isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22, givenInfo=0x0, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:1495
#4  0x00007ffff7d0d5b7 in TClass::TClass (this=0x555555f70730, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, info=..., 
    isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:1318
#5  0x00007ffff7fa9dee in TQClass::TQClass (this=0x555555f70710, name=0x7ffff7af4b40 "TSysEvtHandler", cversion=0, info=..., 
    isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22) at include/TQClass.h:47
#6  0x00007ffff7fa9eaa in ROOT::Internal::TQObjectInitBehavior::CreateClass (this=0x5555555bff80, 
    cname=0x7ffff7af4b40 "TSysEvtHandler", id=0, info=..., isa=0x5555555bff60, dfil=0x7ffff7af6f65 "TSysEvtHandler.h", 
    ifil=0x7ffff7adf928 "/home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx", dl=28, il=22) at include/TQClass.h:70
#7  0x00007ffff7d3c467 in ROOT::TGenericClassInfo::GetClass (
    this=0x7ffff7f7ce60 <ROOT::GenerateInitInstanceLocal(TSysEvtHandler const*)::instance>)
    at /home/axel/build/root/master/src/core/meta/src/TGenericClassInfo.cxx:250
#8  0x00007ffff7dcf596 in TSysEvtHandler::Dictionary () at core/G__Core.cxx:14387
#9  0x00007ffff7d1db76 in TClass::LoadClassDefault (requestedname=0x7fffffffb399 "TSysEvtHandler")
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:5769
#10 0x00007ffff7d1da90 in TClass::LoadClass (requestedname=0x7fffffffb399 "TSysEvtHandler", silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:5740
#11 0x00007ffff7bdd915 in TROOT::LoadClass (this=0x7ffff7f53460 <ROOT::Internal::GetROOT1()::alloc>, 
    requestedname=0x7fffffffb399 "TSysEvtHandler", silent=false) at /home/axel/build/root/master/src/core/base/src/TROOT.cxx:2119
#12 0x00007ffff7d14d58 in TClass::GetClass (info=0x555556980ba0, load=true, silent=false)
    at /home/axel/build/root/master/src/core/meta/src/TClass.cxx:3323
#13 0x00007ffff7d07144 in TBaseClass::GetClassPointer (this=0x555556980c70, load=true)
    at /home/axel/build/root/master/src/core/meta/src/TBaseClass.cxx:66
#14 0x00007ffff7c4b6eb in TQObject::CollectClassSignalLists (this=0x555555d8eac0, list=..., cls=0x55555608c200)
    at /home/axel/build/root/master/src/core/base/src/TQObject.cxx:461
#15 0x00007ffff7faf3ef in TQObject::EmitVA<>(char const*, int) (this=0x555555d8eac0, signal_name=0x7ffff7fa0db3 "Added()")
    at /home/axel/build/root/master/src/core/base/inc/TQObject.h:109
#16 0x00007ffff7fae61a in TQObject::Emit (this=0x555555d8eac0, signal=0x7ffff7fa0db3 "Added()")
    at /home/axel/build/root/master/src/core/base/inc/TQObject.h:173
#17 0x00007ffff7faec35 in TSysEvtHandler::Added (this=0x555555d8eab0)
    at /home/axel/build/root/master/src/core/base/inc/TSysEvtHandler.h:50
#18 0x00007ffff7c680da in TSignalHandler::Add (this=0x555555d8eab0)
    at /home/axel/build/root/master/src/core/base/src/TSysEvtHandler.cxx:172
#19 0x00007ffff7faadb5 in TRint::TRint (this=0x5555555d5780, appClassName=0x5555555549b8 "Rint", argc=0x7fffffffd75c, 
    argv=0x7fffffffd878, options=0x0, numOptions=0, noLogo=false) at /home/axel/build/root/master/src/core/rint/src/TRint.cxx:211
#20 0x0000555555555cab in main (argc=1, argv=0x7fffffffd878) at /home/axel/build/root/master/src/main/src/rmain.cxx:27

Activity

  1. self-assigned this
    on Feb 2, 2021
  2. moved this to Backlog in Fixathonon Feb 6, 2024
  3. moved this from Backlog to In progress in Fixathonon Feb 13, 2024
  4. 2 remaining items

  5. moved this from In progress to PR is open in Fixathonon Feb 19, 2024
  6. moved this from PR is open to Stuck - need help in Fixathonon Mar 4, 2024
  7. ferdymercury commented on Sep 19, 2025

    @ferdymercury
    Collaborator
  8. added a commit that references this issue on Sep 3, 2026
    a04ff4c
  9. added a commit that references this issue on Sep 4, 2026
    a0b2caa
  10. moved this from Stuck - need help to Done in Fixathonon Sep 4, 2026
  11. added a commit that references this issue on Oct 16, 2026
    dca5400
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions