-
-
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
Backports for 0.6.4 #27621
Backports for 0.6.4 #27621
Conversation
This issue possibly fixes #24951 (or at least the test case by iamed2). We believe the original code here meant to say either: ((jl_typemap_entry_t*)v)->min_world = ((jl_typemap_entry_t*)v)->max_world + 1; or ((jl_typemap_entry_t*)v)->max_world = ((jl_typemap_entry_t*)v)->min_world - 1; i.e. set the range of applicable worlds to be empty. What happened instead was that the given typemap entry that was supposed to be deleted became valid for one particular world and that world only. Thus any code running in that particular world may try to access the deleted typemap entry (or add a backedge to it), causing either incorrect behavior or the assertion failure noted in the issue. One additional complication is that these world ages are being deserialized, i.e. they may be larger than the currently possible max world age. This makes this slightly more likely to happen, since the current process may work its way up to that world age and exectue some code. In any case, there's not much value to keeping around the deserialized max or min world, so just mark them as [1:0], as we do for other deleted entries. Co-authored-by: Jameson Nash <vtjnash@gmail.com> --- NOTE: This backported commit EXCLUDES additional assertions made by vtjnash. (Cherry-picked from commit d9b10f0)
by avoiding calling zero(T). Also a few minor performance improvements. (Cherry-picked from commit 3fa83f9)
f2b6961
to
93b0f7c
Compare
Currently we're putting build directories as well as GCC's directory directly into our libraries' RPATHs. This is fine for simple source builds that sit where they were built and aren't distributed, like on CI. However, this causes major issues for distributing. Ref #27396 (cherry picked from commit 5a426b0)
First of all, we need to add libgfortran, libgcc_s, and libquadmath to `JL_PRIVATE_LIBS-0` instead of `JL_LIBS`. This ensures that they get installed into `lib/julia`, where our dependencies are supposed to live, instead of `lib`, where only libjulia should live. Now we need to call `fixup-rpath.sh` on more directories. Currently we're only calling it on `lib`, but we also need to call it on `lib/julia` and even on `bin`, because FreeBSD seems to load libraries based on the executable's RPATH rather than libjulia's RPATH. AND, speaking of the executable's RPATH, we need to make sure we have `lib/julia` in there; currently we only have `lib`. So in an isolated environment outside of the build directory, Julia won't be able to load any of its dependencies, which is bad. This is accomplished with a simple adjustment in `Make.inc`. To make sure that our dependencies can find each other properly, we need to add `RPATH_ESCAPED_ORIGIN` to `LDFLAGS` in `CONFIGURE_COMMON`. That way, every dependency that uses `configure` will get its RPATH set appropriately. (cherry picked from commit 07edead)
4cd0ca5
to
96c075a
Compare
0ae20fc
to
df1c1c9
Compare
@nanosoldier |
Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. cc @ararslan |
Any chance this can be called |
Can you build and test the release-0.6 branch locally instead? Doing release candidates for point releases seems like a bit much. |
To be clear, I don't care whether it gets a special name, binaries, or even a tag; my only real suggestion is that there actually be some time for testing between when this is merged into |
Where do you see that? |
A person following the
I don't see another release on the 0.6 cycle where so many backports were merged right before tagging a final release. |
If I recall that's only because we were having issues with the buildbots. |
some lookup functions (most notably, jl_get_specialization1) were bypassing the initial cache lookup, resulting in repeatedly trying to re-cache them, and wasting a small amount memory also remove some fast-path code for threading race conditions: the benefit is too negligible to be worth the extra code maintenance (cherry-pick of e36ad5c, PR #26982)
I think it is ok to merge the commits, and announce a 3 day testing period before tagging - but RCs and such would be way too much for point releases. Going forward, we can try to have a week of testing between merging all the commits and tagging/releasing. |
This is a good idea. Merging all the commits all at once and then tagging really doesn't give any chance for feedback. |
Also, post-1.0, a Discourse post telling people to test the branch before publishing minor releases, with links to nightlies, would be useful. We really don't want to discover regressions a few days after the release. |
It will be very fine to have a testing period. Furthermore, is it too difficult to set a nightly build of |
Should be possible to set up nightlies whenever we have adequate time - post 1.0. For now, the easiest thing to do would be to merge this PR, trigger a build that prepares the binaries and if that works out ok, tag and create new binaries. Of course this adds much more effort on @ararslan 's part, so he should chime in if that would be onerous. |
We keep running into #27568. What is holding this up? |
Interesting idea. That's not difficult, per se, but it seems rather unnecessary to me. By design, the release branch should be entirely static with the exception of backports which happen right before the release. An easier solution would be to have testing binaries built from the release branch and available for developer testing just prior to the release, like a pseudo release candidate. The downside to that is that it's a bit of a pain in the neck for the sake of short-term, one-time, non-release testing.
In short, PackageEvaluator. Once I've verified that this is non-breaking, this can be merged. In long, PackageEvaluator seems to be running into mysterious errors with the virtual machines. PackageEvaluator separates the packages for each version into three VMs for testing and runs them simultaneously for a total of six VMs. When I initially ran it, I noticed that a huge number of packages hadn't been tested at all, and found that it was because a few of the VMs died. I thought, "Okay, maybe it's an issue with where I'm running it," so I switched to Nanosoldier node 1. But just now I saw that another VM has died. Once this run completes, I think I'll have to just finish testing for the remaining packages by hand. |
That would definitely make sense. Minor releases are not "non-release", they are even more sensitive than major releases since any bug can break a workflow when people don't expect it. They should be tested even more than major releases, and we should try to get as much user testing as we can before releasing them. |
I wonder if @Keno 's new Package evaluator is ready for a bit more usage. |
It is, and we're using it for 0.7, but it doesn't do 0.6 for a variety of reasons. |
Unfortunately that hasn't been backported because it doesn't have tests. If tests are added then we can. |
Oh fantastic, I hadn't seen that! I'll get that included here. |
when calling uv_shutdown on a handle being written to by another process we might never get the UV__POLLOUT notification but we also don't need to delay the uv_close call if we have nothing to write in the future, we should introduce a new `uv_drain` callback, instead of continuing to abuse uv_shutdown for this purpose fix #22832 Ref #22886 (cherry picked from commit 8949a95)
Good news!
I'll do one more Nanosoldier run for good measure, but I don't expect anything to change. So this should be good to go. @nanosoldier |
* Fix exp10 fallback and exp2 and exp10 for Float16 * Update docstring and test * Change float struct name * Update math.jl (cherry picked from commit 3ff6eac)
I really wanted this to be frozen, but I've backported one small, non-distruptive change that will fix a stack overflow for |
Your benchmark job has completed - possible performance regressions were detected. A full report can be found here. cc @ararslan |
Thanks for taking the late submission. I had no idea 0.6.4 was so close. |
Here we go, folks. I'll create the 0.6.4 tag on Monday, 9 July, and move forward with making binaries. In the meantime, please build the |
Should we hand over this commit to the buildbots and get nightlies? |
I assume that the test period has gone well, and that silence here is a good thing. |
Still to do:
update world age between packages in e.g.Not relevant to 0.6using A, B
#27549 @JeffBezanson