emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: MPS: assertion failed: header_type (h) != IGC_OBJ_FWD


From: Pip Cet
Subject: Re: MPS: assertion failed: header_type (h) != IGC_OBJ_FWD
Date: Thu, 18 Jul 2024 16:05:43 +0000

On Thursday, July 18th, 2024 at 15:08, Gerd Möllmann <gerd.moellmann@gmail.com> 
wrote:
> Gerd Möllmann gerd.moellmann@gmail.com writes:
> 
> > Gerd Möllmann gerd.moellmann@gmail.com writes:
> > 
> > > Let's see if it continues crashing.
> > 
> > It does :-(.
> 
> Next idea.
> 
> I wonder if __builtin_unwind_init changes things. The different
> behaviour when compiled -O0 and -O, the fact that problems happen in
> "random" places which lets me suspect indicates a basic problem, and so
> on - that would fit, when MPS doesn't see something in a register.
> Maybe.

I believe MPS relies (or used to rely) on setjmp() (or _setjmp()) to save 
registers, and there was a comment in the source code about how that mechanism 
might be unreliable with implementations which attempt to encrypt the jump 
buffer to avoid some forms of data injection attacks. I don't know whether 
macOS does that.

https://opensource.apple.com/source/libplatform/libplatform-254.80.2/src/setjmp/arm64/
 appears to suggest some kind of "munging" happens, but it doesn't appear to 
affect x19-x28...

Also, LLVM apparently implements __builtin_setjmp(), and I'm not sure whether 
we might end up using that one. Can you run the compiler with -E to see what 
the preprocessor produces?

> If somone observes similar strange phenomena like I do on macOS/arm64,
> maybe also give it a try.
> 
> Let's see how long igc survives this time :-).

Fingers crossed!

Pip



reply via email to

[Prev in Thread] Current Thread [Next in Thread]