* bug#29940: guile-2.2.3 does not work pax mprotect @ 2018-01-02 9:10 Thomas Klausner [not found] ` <sfid-+20180102-101108-+008.55-1@spamfilter.osbf.lua> 0 siblings, 1 reply; 3+ messages in thread From: Thomas Klausner @ 2018-01-02 9:10 UTC (permalink / raw) To: 29940 Hi! guile-2.2.3 does not compile on NetBSD 8 and NetBSD-current. During build, it writes stuff like this for basically every file: gmake[2]: Entering directory '/scratch/lang/guile22/work/guile-2.2.3/bootstrap' BOOTSTRAP GUILEC ice-9/eval.go ;;; WARNING: loading compiled file /scratch/lang/guile22/work/guile-2.2.3/prebuilt/64-bit-little-endian/ice-9/eval.go failed: ;;; Throw to key system-error with args ("load-thunk-from-memory" "~A" ("Permission denied") (13)) wrote `ice-9/eval.go' When I turn off PaX mprotect, the build succeeds. PaX mprotect is a security feature that forbids memory pages that are writable and executable, and some memory protection changes that would allow this. Other programs/libraries (e.g. libffi) needed to be fixed for this. Can you please fix this in guile-2.2.x? (guile-2.0.14 builds fine on such a system.) Thanks, Thomas ^ permalink raw reply [flat|nested] 3+ messages in thread
[parent not found: <sfid-+20180102-101108-+008.55-1@spamfilter.osbf.lua>]
[parent not found: <handler.29940.B.151488425022993.ack@debbugs.gnu.org>]
* bug#29940: Acknowledgement (guile-2.2.3 does not work pax mprotect) [not found] ` <handler.29940.B.151488425022993.ack@debbugs.gnu.org> @ 2018-01-08 10:42 ` Thomas Klausner 2018-01-08 22:52 ` Thomas Klausner 0 siblings, 1 reply; 3+ messages in thread From: Thomas Klausner @ 2018-01-08 10:42 UTC (permalink / raw) To: 29940 [-- Attachment #1: Type: text/plain, Size: 357 bytes --] The attached patch is a workaround: we can mark the guile binary to not use the PAX mprotect feature using paxctl +m. On Linux, paxctl has different flags, so I wrapped it in an "if", and it uses knowledge of libtool internals, so it is not a good idea to integrate this patch as-is. Better would be of course to make guile work with PAX mprotect. Thomas [-- Attachment #2: patch-libguile_Makefile.in --] [-- Type: text/plain, Size: 599 bytes --] $NetBSD: patch-libguile_Makefile.in,v 1.1 2018/01/08 10:39:45 wiz Exp $ Fix build on NetBSD>=8. --- libguile/Makefile.in.orig 2017-11-06 09:12:56.000000000 +0000 +++ libguile/Makefile.in @@ -2444,6 +2444,8 @@ clean-noinstPROGRAMS: guile$(EXEEXT): $(guile_OBJECTS) $(guile_DEPENDENCIES) $(EXTRA_guile_DEPENDENCIES) @rm -f guile$(EXEEXT) $(AM_V_CCLD)$(guile_LINK) $(guile_OBJECTS) $(guile_LDADD) $(LIBS) + if [ `uname -s` = "NetBSD" ]; then paxctl +m .libs/guile$(EXEEXT); fi + install-binSCRIPTS: $(bin_SCRIPTS) @$(NORMAL_INSTALL) @list='$(bin_SCRIPTS)'; test -n "$(bindir)" || list=; \ ^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#29940: Acknowledgement (guile-2.2.3 does not work pax mprotect) 2018-01-08 10:42 ` bug#29940: Acknowledgement (guile-2.2.3 does not work pax mprotect) Thomas Klausner @ 2018-01-08 22:52 ` Thomas Klausner 0 siblings, 0 replies; 3+ messages in thread From: Thomas Klausner @ 2018-01-08 22:52 UTC (permalink / raw) To: 29940 [-- Attachment #1: Type: text/plain, Size: 199 bytes --] Jörg Sonnenberger just committed the attached patch to pkgsrc, which fixes the problem for me as well, with the commit message: "Use correct mmap permissions for later PROT_WRITE mprotect." Thomas [-- Attachment #2: patch-libguile_loader.c --] [-- Type: text/plain, Size: 458 bytes --] $NetBSD: patch-libguile_loader.c,v 1.1 2018/01/08 22:37:08 joerg Exp $ --- libguile/loader.c.orig 2018-01-08 16:21:04.790894906 +0000 +++ libguile/loader.c @@ -484,7 +484,7 @@ map_file_contents (int fd, size_t len, i char *data; #ifdef HAVE_SYS_MMAN_H - data = mmap (NULL, len, PROT_READ, MAP_PRIVATE, fd, 0); + data = mmap (NULL, len, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); if (data == MAP_FAILED) SCM_SYSERROR; *is_read_only = 1; ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-01-08 22:52 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2018-01-02 9:10 bug#29940: guile-2.2.3 does not work pax mprotect Thomas Klausner [not found] ` <sfid-+20180102-101108-+008.55-1@spamfilter.osbf.lua> [not found] ` <handler.29940.B.151488425022993.ack@debbugs.gnu.org> 2018-01-08 10:42 ` bug#29940: Acknowledgement (guile-2.2.3 does not work pax mprotect) Thomas Klausner 2018-01-08 22:52 ` Thomas Klausner
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).