Subject: ASLR Issue?

From: Bob Halley <[email-masked]>
Date: Tue, 5 Jul 2011 15:45:49 +0100

I too see this problem trying to build Aquamacs' emacs-24-based branch on Lion GM with Xcode 4.1 preview 7.  The problem is *not* an unknown section name.  I added some debugging printfs, and this is what I see.  Basically things seem to be going OK until we try to write __data, where we get EFAULT when we try to write() it.  I don't know why sectp->addr is giving EFAULT; perhaps ASLR?

If I discover more, I will add to the ticket.

As an aside, could emacs switch to an external core image like other lisps use instead of continuing to use the fragile unexec mechanism?

--- Load Commands written to Output File ---
Writing segment __PAGEZERO       @        0 (       0/0x100000000 @          0)
write 72
sz = 72
Writing segment __TEXT           @        0 (0x1ed000/0x1ed000 @ 0x100000000)
write 712
sz = 712
Writing segment __DATA           @ 0x1ed000 (0x458000/0x458000 @ 0x1001ed000)
write 80
sz = 80
        section __program_vars   at 0x1ed000 - 0x1ed028 (sz:     0x28)
write 80
sz = 80
        section __nl_symbol_ptr  at 0x1ed028 - 0x1ed038 (sz:     0x10)
write 80
sz = 80
        section __got            at 0x1ed038 - 0x1ed208 (sz:    0x1d0)
write 80
sz = 80
        section __la_symbol_ptr  at 0x1ed208 - 0x1eda90 (sz:    0x888)
write 80
sz = 80
        section __objc_classlist at 0x1eda90 - 0x1edb00 (sz:     0x70)
write 80
sz = 80
        section __objc_protolist at 0x1edb00 - 0x1edb10 (sz:     0x10)
write 80
sz = 80
        section __objc_imageinfo at 0x1edb10 - 0x1edb18 (sz:      0x8)
write 80
sz = 80
        section __objc_const     at 0x1edb18 - 0x1efef8 (sz:   0x23e0)
write 80
sz = 80
        section __objc_selrefs   at 0x1efef8 - 0x1f1030 (sz:   0x1138)
write 80
sz = 80
        section __objc_msgrefs   at 0x1f1030 - 0x1f1120 (sz:     0xf0)
write 80
sz = 80
        section __objc_classrefs at 0x1f1120 - 0x1f1338 (sz:    0x218)
write 80
sz = 80
        section __objc_superrefs at 0x1f1338 - 0x1f13a0 (sz:     0x68)
write 80
sz = 80
        section __objc_data      at 0x1f13a0 - 0x1f1800 (sz:    0x460)
sectp->addr = 1001f1800
write 4019480
sz = -1
errno = 14 Bad address
unexec: cannot write 1 section __data