Skip to content

Cling triggers a huge number of openat calls when loading libraries #14277

@vepadulano

Description

@vepadulano

Check duplicate issues.

  • Checked for duplicates

Description

This issue stems originally from cms-sw/cmssw#43077 and is a place to continue the discussions of #14261 and #14276 .

The symptoms

In seemingly innocent examples we end up opening a huge amount of files at ROOT startup time. See in particular cms-sw/cmssw#43077 (comment) or cms-sw/cmssw#43077 (comment) .

It turns out that the immediate cause of the large amount of open calls is that some symbol is missing and cling needs to traverse many files in order to find it. So far, offending symbols have been TString::kNPOS and k* variables from TError.h.

The way forward

While the two linked ROOT PRs solve (maybe hide?) the immediate problem, there is an underlying root cause which is highlighted by the fact that in ROOT 6.26 (LLVM9) none of this was an issue. Ideally, we need to find a way to avoid the eager search of symbols in all libraries in $LD_LIBRARY_PATH. In fact, the mere fact that we search for the symbol TString::kNPOS in such simple examples is a problem, that shouldn't be necessary.

Reproducer

cms-sw/cmssw#43077 (comment)

ROOT version

>=6.28

Installation method

build from source

Operating system

Any

Additional context

No response

Metadata

Metadata

Assignees

Labels

bugexperimentAffects an experiment / reported by its software & computimng experts

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions