Hi! Erlang comes with a JIT: asmjit.
The current version doesn't work with PaX MPROTECT. I filed a bug report and asmjit added code using mremap(). https://github.com/asmjit/asmjit/blob/master/src/asmjit/core/virtmem.cpp#L619 The asmjit self-tests work, but in erlang with the new version there are segfaults. https://github.com/erlang/otp/issues/6909#issuecomment-1446606936 An Erlang developer helped debugging and found weird behaviour: https://github.com/asmjit/asmjit/issues/399#issuecomment-1448640096 It seems the problem is that mmap() in the mremap(2) man page example (which was used to implement the asmjit version) is not using MAP_SHARED. - I'd like to add MAP_SHARED in the mmap() call in the mremap(2) man page example. Is that fine? - Reading mmap(2) it seems that one of MAP_SHARED or MAP_PRIVATE is required, but there is no error if none is provided. Should we change mmap() to return an error in that case? - Why does MAP_PRIVATE (instead of MAP_SHARED) not work? - Does anyone have an idea why the old asmjit code (shm_open() instead of mremap()) might still be working on NetBSD 9 but not on NetBSD 10.99.2? Both have PaX MPROTECT enabled by default, and the mremap() code. Thanks, Thomas