Re: [Sbcl-commits] master: Add defensive GC validation for concurrent hash table operations on ARM64
Stas Boukarev <[email protected]> Sat, 14 Feb 2026 02:06:26 +0300
| Newsgroups | gmane.lisp.steel-bank.devel |
|---|---|
| Message-ID | <CAF63=12zMonA-eFWUciQJBrfB4FwTFqKabSZzg7FU2gr6bjNgQ@mail.gmail.com> |
I see a number of test failures on linux-arm64-sb-safepoint. But I've never been too trusting of sb-safepoint to bother with them, especially since now there's :nonstop-foreign-call (I can't proclaim it to be fully stable) I've also seen a number of very rare failures without any additional features (one of which I just fixed, that one goes back to cmucl). mark-region-gc seems to reliably crash when running concurrent compilations, but I haven't bothered debugging that. The point I'm making—nothing's really stable. On Sat, Feb 14, 2026 at 1:54 AM Charles Zhang <[email protected]> wrote: > > For the switch port, we had to solve many of the same issues with safepoints and arm64 in an even more restricted environment. For scanning the register context, I had a different solution where hitting a safepoint called a trampoline to spill all its registers to avoid relying on signals and interrupt contexts. (basically, I got gc working reliably with no hardware interrupts on arm64). > > The code is on my fork of sbcl on github under the name elfinate-arm64 under the feature flag #+no-os-protect, which also has some cas code to do the software foreign safepoint implementation. It works rather robustly and may be of some interest for the Windows port. > > I don’t think we passed the concurrent hash table test either, but in practice it didn’t seem to cause issues in real code and I don’t think it’s really a show stopper for merging a port for sure. It’d be nice to have a proper fix. > > The explanations seem like they could have been AI-hallucinated, so I’d like to have a disclaimer from Masatoshi if that’s the case to save on some confusion. I know the code is already disclaimed to be co-authored by an LLM, but it’s helpful to know what is a human-confident diagnosis vs an LLM-confident diagnoses. > > On Friday, February 13, 2026, 6:32 PM, Stas Boukarev <[email protected]> wrote: > > But yeah, some of these explanations do not make sense. > There can be no stale pointers on the stack. There should be no > concurrent rehash. > > On Fri, Feb 13, 2026 at 6:11 PM Stas Boukarev <[email protected]> wrote: > > > > It builds. The test suite doesn't run (finish). > > The loongarch port also has a lot of test failures (some of which I > > can't explain and it's probably due to an old kernel). > > risc-v is crashing left and right and has a lot of test failures. > > > > On Fri, Feb 13, 2026 at 4:57 PM Christophe Rhodes via Sbcl-devel > > <[email protected]> wrote: > > > > > > stassats via Sbcl-commits <[email protected]> writes: > > > > > > > - Log ----------------------------------------------------------------- > > > > commit 66e8662c13f8a06856222efd7c3159ec6a390a26 > > > > Author: SANO,Masatoshi <[email protected]> > > > > Date: Thu Feb 12 13:32:11 2026 +0900 > > > > > > > > Add defensive GC validation for concurrent hash table operations > > > > on ARM64 > > > > > > I appreciate that this is helpful in getting this platform combination > > > to a point where it might be useful to some users, but. > > > > > > > Root cause: ARM64 weak memory ordering creates a race between mutator > > > > threads writing kv-vector entries and updating the high-water-mark > > > > (HWM), and the GC thread reading HWM to determine scan range. The GC > > > > may see an old HWM while new entries are already visible, leaving > > > > from-space pointers beyond HWM unscavenged. > > > > > > If this is the case, then all the defensive validation in the world > > > doesn't give me the confidence in writing (say) a NEWS entry or an > > > e-mail saying that this port is worth trying. I would like to see > > > investigation into: what is the difference between this configuration > > > and others that exposes the weak memory ordering, and what barriers > > > might be necessary to make this closer to 100% correct or at least 100% > > > reliable (rather than 80% as reported in this change). > > > > > > (This is not a call for a revert, but it would be nice to know whether > > > this is something that you think you can take on in the near future.) > > > > > > Thanks, > > > > > > Christophe > > > > > > > > > _______________________________________________ > > > Sbcl-devel mailing list > > > [email protected] > > > https://lists.sourceforge.net/lists/listinfo/sbcl-devel > > > _______________________________________________ > Sbcl-devel mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/sbcl-devel _______________________________________________ Sbcl-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/sbcl-devel