-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Prevent tainting native code loading from propagating #53457
Conversation
When we use options like code coverage, we can't use the native code present in the cache file since it is not instrumented. PR #52123 introduced the capability of skipping the native code during loading, but created the issue that subsequent packages could have an explicit or implicit dependency on the native code. PR #53439 tainted the current process by setting `use_sysimage_native_code`, but this flag is propagated to subprocesses and lead to a regression in test time. Move this to a process local flag to avoid the regression. In the future we might be able to change the calling convention for cross-image calls to `invoke(ci::CodeInstance, args...)` instead of `ci.fptr(args...)` to handle native code not being present.
Ohoho, you've done me one better than just fixing it, you've seemingly improved CI times too! Before the regression:
https://github.com/Seelengrab/Supposition.jl/actions/runs/8023184836/job/21919147557#step:6:103 With the regression:
https://github.com/Seelengrab/Supposition.jl/actions/runs/8023184836/job/21919147557#step:6:103 After the fix:
https://github.com/Seelengrab/Supposition.jl/actions/runs/8042782840/job/21963899204#step:6:119 Much ❤️ for the quick turnaround on this! |
When we use options like code coverage, we can't use the native code present in the cache file since it is not instrumented. PR #52123 introduced the capability of skipping the native code during loading, but created the issue that subsequent packages could have an explicit or implicit dependency on the native code. PR #53439 tainted the current process by setting `use_sysimage_native_code`, but this flag is propagated to subprocesses and lead to a regression in test time. Move this to a process local flag to avoid the regression. In the future we might be able to change the calling convention for cross-image calls to `invoke(ci::CodeInstance, args...)` instead of `ci.fptr(args...)` to handle native code not being present. --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com> (cherry picked from commit b8a0a39)
Being faster is suspicious. Are coverage results as expected? |
For what is worth, also the sequential total time of PkgEval is sensibly lower on b8a0a39 than on previous runs:
I don't know what's the variability of these times, maybe @maleadt has more insights about this. |
Not 100% sure whether I'm looking at the right thing, but the coverage report seems fine to me. Might be that codecov is mixing it between nightly and 1.10 though, not sure 🤔 |
This may also be caused by precompilation of the test environment failing before #53387, which is only part of the latest evaluation. However, it still looks better than before that bug started happening, at which point PkgEval took around 30 days. |
When we use options like code coverage, we can't use the native code present in the cache file since it is not instrumented. PR JuliaLang#52123 introduced the capability of skipping the native code during loading, but created the issue that subsequent packages could have an explicit or implicit dependency on the native code. PR JuliaLang#53439 tainted the current process by setting `use_sysimage_native_code`, but this flag is propagated to subprocesses and lead to a regression in test time. Move this to a process local flag to avoid the regression. In the future we might be able to change the calling convention for cross-image calls to `invoke(ci::CodeInstance, args...)` instead of `ci.fptr(args...)` to handle native code not being present. --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com>
When we use options like code coverage, we can't use the native code present in the cache file since it is not instrumented. PR JuliaLang#52123 introduced the capability of skipping the native code during loading, but created the issue that subsequent packages could have an explicit or implicit dependency on the native code. PR JuliaLang#53439 tainted the current process by setting `use_sysimage_native_code`, but this flag is propagated to subprocesses and lead to a regression in test time. Move this to a process local flag to avoid the regression. In the future we might be able to change the calling convention for cross-image calls to `invoke(ci::CodeInstance, args...)` instead of `ci.fptr(args...)` to handle native code not being present. --------- Co-authored-by: Jameson Nash <vtjnash@gmail.com>
When we use options like code coverage, we can't use the native code
present in the cache file since it is not instrumented.
PR #52123 introduced the capability of skipping the native
code during loading, but created the issue that subsequent packages
could have an explicit or implicit dependency on the native code.
PR #53439 tainted the current process by setting
use_sysimage_native_code
, but this flag is propagated to subprocessesand lead to a regression in test time.
Move this to a process local flag to avoid the regression.
In the future we might be able to change the calling convention for
cross-image calls to
invoke(ci::CodeInstance, args...)
instead ofci.fptr(args...)
to handle native code not being present.