[Exp PyROOT] Port to experimental the new teardown introduced in old PyROOT#4753
[Exp PyROOT] Port to experimental the new teardown introduced in old PyROOT#4753etejedor merged 2 commits intoroot-project:masterfrom
Conversation
|
Starting build on |
They were previously introduced in old PyROOT by 7e47c42.
In the previous implementation, a new C++ object was created for the item being set and later registered together with the Python proxy of the original item, but the original C++ object was never destructed since the proxy was made non-owner. This fix assigns the new C++ object to the proxy and registers the new pair in the memory regulator, but it also unregisters the old pair and deletes the old C++ object.
35a4283 to
f0dd9be
Compare
|
Starting build on |
|
@phsft-bot build with-flags -Dpyroot_experimental=ON |
|
Starting build on |
|
@phsft-bot build with flags -Dpyroot_experimental=ON |
|
Starting build on |
|
Build failed on mac1014/cxx17. Errors:
And 62 more |
|
Build failed on ROOT-fedora30/cxx14. Warnings:
|
|
Build failed on ROOT-fedora29/python3. Warnings:
|
|
Build failed on ROOT-ubuntu18.04-i386/cxx14. Errors:
Warnings:
|
|
Build failed on windows10/cxx14. |
The old PyROOT (pre 2019) had a slightly different `atexit` handler than the new one. The hard shutdown mode is different: `ClearProxiedObjects()` is called before the final `gROOT->EndOfProcessCleanups()`. I had the impresstion that this is redundant, and indeed the old PyROOT didn't do it. This commit suggests to only call `ClearProxiedObjects()` in soft shutdown mode, in an attempt to avoid the frequent crashes seen at the end of PyROOT tutorials, especially on Ubuntu 24.10. See also the original PRs where this functionality was introduced: * root-project#4687 * root-project#4753
The old PyROOT (pre 2019) had a slightly different `atexit` handler than the new one. The hard shutdown mode is different: `ClearProxiedObjects()` is called before the final `gROOT->EndOfProcessCleanups()`. I had the impresstion that this is redundant, and indeed the old PyROOT didn't do it. This commit suggests to only call `ClearProxiedObjects()` in soft shutdown mode, in an attempt to avoid the frequent crashes seen at the end of PyROOT tutorials, especially on Ubuntu 24.10. See also the original PRs where this functionality was introduced: * root-project#4687 * root-project#4753
The old PyROOT (pre 2019) had a slightly different `atexit` handler than the new one. The hard shutdown mode is different: `ClearProxiedObjects()` is called before the final `gROOT->EndOfProcessCleanups()`. I had the impresstion that this is redundant, and indeed the old PyROOT didn't do it. This commit suggests to only call `ClearProxiedObjects()` in soft shutdown mode, in an attempt to avoid the frequent crashes seen at the end of PyROOT tutorials, especially on Ubuntu 24.10. See also the original PRs where this functionality was introduced: * root-project#4687 * root-project#4753
The old PyROOT (pre 2019) had a slightly different `atexit` handler than the new one. The hard shutdown mode is different: `ClearProxiedObjects()` is called before the final `gROOT->EndOfProcessCleanups()`. I had the impresstion that this is redundant, and indeed the old PyROOT didn't do it. This commit suggests to only call `ClearProxiedObjects()` in soft shutdown mode, in an attempt to avoid the frequent crashes seen at the end of PyROOT tutorials, especially on Ubuntu 24.10. See also the original PRs where this functionality was introduced: * root-project#4687 * root-project#4753
Port to PyROOT experimental the new teardown that was introduced in old PyROOT by:
#4687