[Top][All Lists]

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

Re: Preview: portable dumper

From: Daniel Colascione
Subject: Re: Preview: portable dumper
Date: Thu, 15 Feb 2018 18:36:11 -0800
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0

On 02/15/2018 05:56 PM, Ken Brown wrote:
On 2/15/2018 6:36 PM, Daniel Colascione wrote:
On Feb 15, 2018 3:31 PM, Ken Brown <address@hidden> wrote:

    On 2/13/2018 11:37 AM, Eli Zaretskii wrote:
     >> From: Daniel Colascione <address@hidden>
     >> Date: Mon, 12 Feb 2018 12:18:36 -0800
     >> I've pushed the portable dumper to the pdumper Savannah branch. It
     >> should support a fully PIC Emacs.
     > Thanks.  I'd urge people to try this branch and report any issues
     > see.

    I just tried to build on 64-bit Cygwin, and the build fails as follows:

    Dumping under the name bootstrap-emacs.pdmp
    dumping fingerprint:
    Dump complete
    Byte counts: header=80 hot=13187392 discardable=119424 cold=9086640
    Reloc counts: hot=919268 discardable=5790
    make -C ../lisp compile-first EMACS="../src/bootstrap-emacs.exe"
    make[2]: Entering directory
        ELC      ../../pdumper/lisp/emacs-lisp/macroexp.elc
        ELC      ../../pdumper/lisp/emacs-lisp/cconv.elc
        ELC      ../../pdumper/lisp/emacs-lisp/byte-opt.elc
        ELC      ../../pdumper/lisp/emacs-lisp/bytecomp.elc
    emacs: could not load dump file "../src/bootstrap-emacs.pdmp": out
    of memory

    There's probably some obvious explanation, but I don't see it at the

I'm not entirely surprised to see Cygwin fall over here. We could just use the Windows memory mapping functions directly, but I'd prefer to stick with the POSIX API if we can make it work.

I agree.

Any idea where in the mmap sequence we fail?

I haven't looked at the code yet, so I don't understand the question. If you give me some guidance, I'll try to investigate.

Thanks. I think the trouble must be in dump_mmap_contiguous. We report all errors from this function as "out of memory". dump_mmap_contiguous takes an array of mapping descriptors (think ELF segments or something) and maps them all into a single contiguous region of virtual memory. On POSIX systems, we reserve a chunk of address space with a big PROT_NONE anonymous mapping, then carve it up into the separate mappings that we really want. Windows doesn't support atomic mmap replacement, so Cygwin has to emulate it, and I wouldn't be surprised if something's going wrong in this emulation.

That you're able to compile a few elisp files before bootstrap starts failing makes me wonder whether we're dealing with Cygwin's perennial problem with address space collisions and some kind of dynamic-base DLL.

reply via email to

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