Skip to content

Fix out-of-bounds error in pyroot #17551

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

Merged
merged 1 commit into from
Jan 31, 2025

Conversation

ellert
Copy link
Contributor

@ellert ellert commented Jan 28, 2025

 526/1416 Test   #63: pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-tf-pycallables ..........................***Failed   75.51 sec
test_callable (tf_pycallables.TF1.test_callable)
Test function provided as callable ... /usr/include/c++/15/bits/stl_bvector.h:1134: std::vector<bool, _Alloc>::reference std::vector<bool, _Alloc>::operator[](size_type) [with _Alloc = std::allocator<bool>; reference = std::vector<bool>::reference; size_type = long unsigned int]: Assertion '__n < this->size()' failed.
 *** Break *** abort

=========================================================== The lines below might hint at the cause of the crash. If you see question marks as part of the stack trace, try to recompile with debugging information enabled and export CLING_DEBUG=1 environment variable before running. You may get help by asking at the ROOT forum https://root.cern/forum preferably using the command (.forum bug) in the ROOT prompt. Only if you are really convinced it is a bug in ROOT then please submit a report at https://root.cern/bugs or (preferably) using the command (.gh bug) in the ROOT prompt. Please post the ENTIRE stack trace from above as an attachment in addition to anything else that might help us fixing this issue.
===========================================================
 #10 0x00007f6bcac7fea4 in __pthread_kill_implementation () from /lib64/libc.so.6
 #11 0x00007f6bcac264de in raise () from /lib64/libc.so.6
 #12 0x00007f6bcac0e350 in abort () from /lib64/libc.so.6
 #13 0x00007f6bc9a0be02 in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) () from /lib64/libstdc++.so.6
 #14 0x00007f6bb9b15257 in std::vector<bool, std::allocator<bool> >::operator[](unsigned long) [clone .part.0] [clone .lto_priv.0] (__n=<optimized out>, this=<optimized out>) at /usr/include/c++/15/bits/stl_bvector.h:1134
 #15 0x00007f6bb9bab976 in std::vector<bool, std::allocator<bool> >::operator[] (this=<synthetic pointer>, __n=0) at /usr/include/c++/15/bits/stl_bvector.h:201
 #16 CPyCppyy::Utility::ConstructCallbackPreamble (retType="Double_t", argtypes=..., code=Python Exception <class 'IndexError'>: list index out of range
 #17 0x00007f6bb9b389e0 in PyFunction_AsCPointer (pyobject=<optimized out>, pyobject
entry=0x7f6bb8f838c0, rettype="Double_t", signature="(Double_t*,Double_t*)") at /builddir/build/BUILD/root-6.34.02-build/root-6.34.02/bindings/pyroot/cppyy/CPyCppyy/src/Converters.cxx:2713
 #18 0x00007f6bb9b39851 in CPyCppyy::(anonymous namespace)::FunctionPointerConverter::SetArg (this=0x55eb25d61d40, pyobject=0x7f6bb8f838c0, para=..., ctxt=0x7ffc484855c0) at /builddir/build/BUILD/root-6.34.02-build/root-6.34.02/bindings/pyroot/cppyy/CPyCppyy/src/Converters.cxx:2768

 526/1416 Test   root-project#63: pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-tf-pycallables ..........................***Failed   75.51 sec
test_callable (tf_pycallables.TF1.test_callable)
Test function provided as callable ... /usr/include/c++/15/bits/stl_bvector.h:1134: std::vector<bool, _Alloc>::reference std::vector<bool, _Alloc>::operator[](size_type) [with _Alloc = std::allocator<bool>; reference = std::vector<bool>::reference; size_type = long unsigned int]: Assertion '__n < this->size()' failed.
 *** Break *** abort

===========================================================
The lines below might hint at the cause of the crash. If you see question
marks as part of the stack trace, try to recompile with debugging information
enabled and export CLING_DEBUG=1 environment variable before running.
You may get help by asking at the ROOT forum https://root.cern/forum
preferably using the command (.forum bug) in the ROOT prompt.
Only if you are really convinced it is a bug in ROOT then please submit a
report at https://root.cern/bugs or (preferably) using the command (.gh bug) in
the ROOT prompt. Please post the ENTIRE stack trace
from above as an attachment in addition to anything else
that might help us fixing this issue.
===========================================================
 root-project#10 0x00007f6bcac7fea4 in __pthread_kill_implementation () from /lib64/libc.so.6
 root-project#11 0x00007f6bcac264de in raise () from /lib64/libc.so.6
 root-project#12 0x00007f6bcac0e350 in abort () from /lib64/libc.so.6
 root-project#13 0x00007f6bc9a0be02 in std::__glibcxx_assert_fail(char const*, int, char const*, char const*) () from /lib64/libstdc++.so.6
 root-project#14 0x00007f6bb9b15257 in std::vector<bool, std::allocator<bool> >::operator[](unsigned long) [clone .part.0] [clone .lto_priv.0] (__n=<optimized out>, this=<optimized out>) at /usr/include/c++/15/bits/stl_bvector.h:1134
 root-project#15 0x00007f6bb9bab976 in std::vector<bool, std::allocator<bool> >::operator[] (this=<synthetic pointer>, __n=0) at /usr/include/c++/15/bits/stl_bvector.h:201
 root-project#16 CPyCppyy::Utility::ConstructCallbackPreamble (retType="Double_t", argtypes=..., code=Python Exception <class 'IndexError'>: list index out of range
 root-project#17 0x00007f6bb9b389e0 in PyFunction_AsCPointer (pyobject=<optimized out>, pyobject
entry=0x7f6bb8f838c0, rettype="Double_t", signature="(Double_t*,Double_t*)") at /builddir/build/BUILD/root-6.34.02-build/root-6.34.02/bindings/pyroot/cppyy/CPyCppyy/src/Converters.cxx:2713
 root-project#18 0x00007f6bb9b39851 in CPyCppyy::(anonymous namespace)::FunctionPointerConverter::SetArg (this=0x55eb25d61d40, pyobject=0x7f6bb8f838c0, para=..., ctxt=0x7ffc484855c0) at /builddir/build/BUILD/root-6.34.02-build/root-6.34.02/bindings/pyroot/cppyy/CPyCppyy/src/Converters.cxx:2768
@ellert
Copy link
Contributor Author

ellert commented Jan 28, 2025

Fixes the following test failures when compiling root 6.34.02 with gcc 15 on Fedora 42:

 63 - pyunittests-bindings-pyroot-pythonizations-pyroot-pyz-tf-pycallables (Failed)
1248 - tutorial-fit-NumericalMinimization-py (Failed)    tutorial
1249 - tutorial-fit-combinedFit-py (Failed)              python_runtime_deps tutorial
1250 - tutorial-fit-fitConvolution-py (Failed)           tutorial
1251 - tutorial-fit-fitNormSum-py (Failed)               tutorial
1268 - tutorial-math-exampleFunction-py (Failed)         tutorial

@vepadulano
Copy link
Member

Thank you @ellert for catching this! Before merging this into ROOT I believe we need to sync the patch with https://github.com/wlav/CPyCppyy, @guitargeek right?

Copy link

Test Results

    18 files      18 suites   4d 13h 51m 34s ⏱️
 2 683 tests  2 679 ✅ 0 💤 4 ❌
46 598 runs  46 591 ✅ 0 💤 7 ❌

For more details on these failures, see this check.

Results for commit 4bece82.

@guitargeek
Copy link
Contributor

Thank you @ellert for catching this! Before merging this into ROOT I believe we need to sync the patch with https://github.com/wlav/CPyCppyy, @guitargeek right?

This can also be done after. I don't want to bother @ellert with this, who already helps us so much 👍

Copy link
Contributor

@guitargeek guitargeek left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you very much for the fix!

@guitargeek guitargeek merged commit a87b474 into root-project:master Jan 31, 2025
16 of 21 checks passed
guitargeek added a commit to guitargeek/CPyCppyy that referenced this pull request Jan 31, 2025
@ellert ellert deleted the pyroot-out-of-bounds branch January 31, 2025 11:55
aaronj0 pushed a commit to aaronj0/CPyCppyy that referenced this pull request Mar 18, 2025
aaronj0 pushed a commit to aaronj0/CPyCppyy that referenced this pull request Mar 18, 2025
aaronj0 pushed a commit to compiler-research/CPyCppyy that referenced this pull request Mar 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants