-
Notifications
You must be signed in to change notification settings - Fork 1.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[ntuple] RRecordField
creation crashes when TStreamerInfo
has insufficient information
#14084
Comments
nortcxxmod
enabledruntime_cxxmodules
So we see that the list of data member is empty but the So technically the issue is that the test is too stringent and need to be changed ... However the code that follow may actually rely on the data member information, if it does then it also needs to be updated to use the |
And indeed, it is the code at
to (possibly conditionally) use something like:
|
The difference is likely due to the fact that we provide the dictionary for a small subset of STL collection of numerical type through |
Thanks for the pointers, that makes sense! There are two things that still confuse me, however:
In any case, I will add the above suggestion to make sure that at least we can fail more gracefully (I have not checked with |
runtime_cxxmodules
RRecordField
creation crashes when TStreamerInfo
has insufficient information
N.B: This issue is a continuation of the discussion started in #13904 (comment)
It seems like additional dictionary entries are required for ROOT builds with runtime C++ modules disabled (i.e. builds with
-Druntime_cxxmodules=off
). This is observed in thentuple_types.cxx
tests forstd::map
fields. These fields have an inner field of typestd::pair
representing the key and value of each item. For this specific build configuration, it is required to explicitly add the dictionary entry for thisstd::pair
type. In other words, for astd::map<char, long>
, we need to define the following two dictionary entries:instead of only the first one. This does not only pertain to
std::map
. For example, the same error is observed for astd::set<std::pair<int, CustomStruct>>
field (but not forstd::set<std::pair<int, int>>
, for example).Steps to reproduce
-Druntime_cxxmodules=off
.root/tree/ntuple/v7/test/ProxiedSTLContainerLinkDef.h
Lines 28 to 34 in 1dbb353
RPairField
, after this line:root/tree/ntuple/v7/src/RField.cxx
Line 2935 in 1dbb353
Observed output
From the snippet added above:
Stack trace from GDB
(When the above snippet is not included)
The text was updated successfully, but these errors were encountered: