The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
From: downing.nick@gmail.com (Nick Downing)
Subject: [TUHS] Emacs and undump
Date: Mon, 27 Feb 2017 19:12:09 +1100	[thread overview]
Message-ID: <CAH1jEzbRbAOWkZz8+DR7zRLpUUR4f0UcJZfV8fS=DMYCYDgQvw@mail.gmail.com> (raw)
In-Reply-To: <CANCZdfoW0a+VQaABaCfNTO2QAN95hqcY=QXv3rC7oukCcUXk=A@mail.gmail.com>

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 2617 bytes --]

I've been having a bit of trouble with /bin/sh (Bourne's original one)
for the same reason. I described my projects in more detail earlier,
but in a nutshell I have intercepted open() and other syscalls, and I
have implemented replacements so that old code like /bin/sh doesn't
have to change, it sees a pretty BSD-like system. So one thing I had
to do was check if the thing being opened is a directory, and if so I
vacuum up the contents using the modern readdir() supplied in glibc or
whatever, and then write a tempfile in a format which the old style
readdir() understands. Then I return a handle to the tempfile instead
of the directory. Trouble is, this makes a non-stdio-using program be
stdio-using, in the worst case it's a non-stdio-using program that has
its own malloc() based on sbrk()... so we get another malloc()
happening in the middle, I temporarily fixed this by redirecting the
modern system's malloc() into the ancient system's malloc() but this
is a very non desirable solution. As another possibility I was
thinking of changing the ancient system's sbrk() into realloc() and
implementing a routine to relocate the heap, it obviously would have
to understand everything on the heap and everything that can point
into it. It's a real mess. But ultimately if I could get this right, I
could implement a lightweight system with no memory manager where all
processes share the malloc().
cheers, Nick

On Mon, Feb 27, 2017 at 6:26 PM, Warner Losh <imp at bsdimp.com> wrote:
> On Mon, Feb 27, 2017 at 12:19 AM, Lars Brinkhoff <lars at nocrew.org> wrote:
>> Tim Bradshaw wrote:
>>>> David wrote:
>>>> I remember that GNU Emacs launched the first time and then dumped
>>>> itself out as a core file. Each subsequent launch would then ‘undump’
>>>> itself back into memory. All this because launching emacs the first
>>>> time required compiling all that lisp code.
>>> It still works like that.  Indeed that's the conventional way that
>>> Lisp systems tend to work for delivering applications
>>
>> Emacs came from ITS, and many Lisps derive from Maclisp which also came
>> from ITS.  In ITS, it was common for applications to be dumped into a
>> loadable core image, even if they were written in assembly language.
>
> Unix systems are retiring sbrk(2), so emacs is breaking on those
> systems. Trouble is, sbrk is kinda hard to implement on systems that
> allocate memory for processes from multiple pools and other crazy
> things. So now Emacs has no way of knowing where the upper limit was
> so it can't start allocating with its own custom allocator...
>
> At least GNU Emacs...
>
> Warner


  reply	other threads:[~2017-02-27  8:12 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <mailman.334.1488132096.3779.tuhs@minnie.tuhs.org>
2017-02-26 19:16 ` David
2017-02-26 19:28   ` Mantas Mikulėnas
2017-02-27  6:41   ` Tim Bradshaw
2017-02-27  7:19     ` Lars Brinkhoff
2017-02-27  7:26       ` Warner Losh
2017-02-27  8:12         ` Nick Downing [this message]
2017-02-27 14:33           ` Derek Fawcus
2017-02-27 14:50             ` Nick Downing
2017-02-27 15:43               ` Derek Fawcus
2017-02-27 16:43             ` Joerg Schilling
     [not found]               ` <CAH1jEzZjvOhHnbvsWcw8gbx9d_W47DbBidYd_tteCr5dC6H2ng@mail.gmail.com>
2017-02-28  0:02                 ` Nick Downing
2017-02-27 12:59       ` tfb
2017-02-27 10:35   ` Joerg Schilling
2017-02-27 15:13     ` Tony Finch
     [not found] <mailman.342.1488180370.3779.tuhs@minnie.tuhs.org>
2017-02-27 10:24 ` Johnny Billquist
2017-02-27 10:30   ` Lars Brinkhoff
2017-02-27 10:47     ` Johnny Billquist
2017-02-27 14:04       ` Arthur Krewat
2017-02-28 11:55         ` Ronald Natalie
     [not found] <mailman.346.1488208394.3779.tuhs@minnie.tuhs.org>
2017-02-27 20:09 ` Johnny Billquist
2017-02-27 20:26   ` Lars Brinkhoff
2017-02-27 21:06     ` Johnny Billquist

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAH1jEzbRbAOWkZz8+DR7zRLpUUR4f0UcJZfV8fS=DMYCYDgQvw@mail.gmail.com' \
    --to=downing.nick@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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 NNTP newsgroup(s).