Package: src:emacs24
Version: 24.5+1-8
Severity: normal
Tags: patch

Ahoy there,

We noticed in Ubuntu (zesty) that emacs24 was failing to build, like:

> Memory exhausted--use M-x save-some-buffers then exit and restart
> Emacs

...I checked in Debian, and the same happens for us here on ppc64 (be).

  
https://buildd.debian.org/status/fetch.php?pkg=emacs24&arch=ppc64&ver=24.5+1-8&stamp=1485124019&raw=0

Some brief googling led me to

  https://bugzilla.redhat.com/show_bug.cgi?id=1356919

and then onto

  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24033#11

Which I backported to 24 (25 is fixed), and it made emacs24 build for
us.

The patch is attached if you want it.

Cheers!

-- 
Iain Lane                                  [ [email protected] ]
Debian Developer                                   [ [email protected] ]
Ubuntu Developer                                   [ [email protected] ]
>From ff3fc21e24edffccce0d42065833e852a6792bd2 Mon Sep 17 00:00:00 2001
From: Paul Eggert <[email protected]>
Date: Tue, 19 Jul 2016 15:23:14 +0200
Subject: Port to glibc 2.24 (pre-release) + ppc64

Backported to Debian/Ubuntu by Iain Lane <[email protected]> to fix
memory exhaustion failures on ppc64el.

Backport from master (Bug#24033).
Inspired by a suggestion by Florian Weimer in:
https://sourceware.org/ml/libc-alpha/2016-07/msg00425.html
* src/emacs.c (main) [__PPC64__]:
Special case for __PPC64__, which needs ASLR disabled in
dumped Emacs too.
---
 src/emacs.c | 24 ++++++++++++++++++++++--
 1 file changed, 22 insertions(+), 2 deletions(-)

Index: emacs24-24.5+1/src/emacs.c
===================================================================
--- emacs24-24.5+1.orig/src/emacs.c
+++ emacs24-24.5+1/src/emacs.c
@@ -723,6 +723,27 @@ main (int argc, char **argv)
   stack_base = &dummy;
 #endif
 
+#if defined HAVE_PERSONALITY_ADDR_NO_RANDOMIZE && defined __PPC64__
+  /* This code partly duplicates the HAVE_PERSONALITY_LINUX32 code
+     below.  This duplication is planned to be fixed in a later
+     Emacs release.  */
+# define ADD_NO_RANDOMIZE 0x0040000
+  int pers = personality (0xffffffff);
+  if (! (pers & ADD_NO_RANDOMIZE)
+      && 0 <= personality (pers | ADD_NO_RANDOMIZE))
+    {
+      /* Address randomization was enabled, but is now disabled.
+        Re-execute Emacs to get a clean slate.  */
+      execvp (argv[0], argv);
+
+      /* If the exec fails, warn the user and then try without a
+        clean slate.  */
+      perror (argv[0]);
+    }
+# undef ADD_NO_RANDOMIZE
+#endif
+
+
 #ifdef G_SLICE_ALWAYS_MALLOC
   /* This is used by the Cygwin build.  It's not needed starting with
      cygwin-1.7.24, but it doesn't do any harm.  */

Reply via email to