On 5/26/20 8:17 AM, Eli Zaretskii wrote: >> static bool >> maybe_lisp_pointer (void *p) >> { >> - return (uintptr_t) p % LISP_ALIGNMENT == 0; >> + return (uintptr_t) p % GCALIGNMENT == 0; >> } > On non-USE_LSB_TAG systems, GCALIGNMENT is 1, so this doesn't look > right (or maybe I'm missing something). Good point; I'd neglected that. I.e., on !USE_LSB_TAG systems the proposed emacs-27 patch is overly-conservative, as it causes maybe_lisp_pointer to always return true. Although this hurts GC performance it doesn't affect correctness and the patch does fix a crash on USE_LSB_TAG systems, so it (or something like it) is needed for emacs-27. I installed the attached patch into master to fix the !USE_LSB_TAG performance issue you raised. This patch does not fix crashes; it's merely a performance tweak. I am planning on looking into related crashes for Lisp_Symbol next. Perhaps we should wait on that before worrying about what exact patch should go into emacs-27.