Skip to content

[Python] Make the regression test for #23728 work effectively - #23894

Merged
guitargeek merged 1 commit into
root-project:masterfrom
guitargeek:issue-23728-fixup
Oct 30, 2026
Merged

guitargeek merged 1 commit into
root-project:masterfrom
guitargeek:issue-23728-fixup

Conversation

@guitargeek

Copy link
Copy Markdown
Contributor

The test left the destructor of the branch class uncompiled until exit, so that cling had to JIT-compile it from TROOT::EndOfProcessCleanups(). On Windows, that cleanup runs from libCore's DLL_PROCESS_DETACH, after libCling's statics have already been torn down, so compiling anything there crashes with or without the fix (the no-fix run in #23850 fails identically). Pre-compile the exact destructor instead: the exit-time call is then a pure cache lookup, which is the regular exit path on Windows. The bug was in that lookup on the destroyed function-local static, so the test still fails without the fix.

Write the branch through the overload taking the class name and the address. The templated Branch() that the pythonization on master calls refuses collections without a compiled CollectionProxy, which silently left the tree without the branch and the test without its purpose.

Also give the child process a timeout: without the fix, ROOT's crash handler can hang instead of terminating the process.

Assisted-by: claude-code:claude-fable-5-1

@github-actions

github-actions Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

Test Results

    23 files      23 suites   3d 18h 20m 24s ⏱️
 3 902 tests  3 901 ✅ 0 💤 1 ❌
79 787 runs  79 786 ✅ 0 💤 1 ❌

For more details on these failures, see this check.

Results for commit 854d901.

♻️ This comment has been updated with latest results.

…vely

The test left the destructor of the branch class uncompiled until exit,
so that cling had to JIT-compile it from TROOT::EndOfProcessCleanups().
On Windows, that cleanup runs from libCore's DLL_PROCESS_DETACH, after
libCling's statics have already been torn down, so compiling anything
there crashes with or without the fix (the no-fix run in root-project#23850 fails
identically). Pre-compile the exact destructor instead: the exit-time
call is then a pure cache lookup, which is the regular exit path on
Windows. The bug was in that lookup on the destroyed function-local
static, so the test still fails without the fix.

Write the branch through the overload taking the class name and the
address. The templated Branch() that the pythonization on master calls
refuses collections without a compiled CollectionProxy, which silently
left the tree without the branch and the test without its purpose.

Also give the child process a timeout: without the fix, ROOT's crash
handler can hang instead of terminating the process.

Assisted-by: claude-code:claude-fable-5-1
@guitargeek
guitargeek merged commit 98526e5 into root-project:master Oct 30, 2026
32 of 33 checks passed
@guitargeek
guitargeek deleted the issue-23728-fixup branch October 30, 2026 19:00
@guitargeek

Copy link
Copy Markdown
Contributor Author

/backport to 6.42

@root-project-bot

Copy link
Copy Markdown

Preparing to backport PR #23894 to branch 6.42 requested by guitargeek

@root-project-bot

Copy link
Copy Markdown

This PR has been backported to branch 6.42: #23925

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.

3 participants