unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#36649: 27.0.50; pure space and pdumper
@ 2019-07-14 14:26 Pip Cet
  2019-07-21  7:28 ` Paul Eggert
                   ` (2 more replies)
  0 siblings, 3 replies; 125+ messages in thread
From: Pip Cet @ 2019-07-14 14:26 UTC (permalink / raw)
  To: 36649

This is a follow-up to bug #36447, which has been fixed and closed.

Currently, pure space is wasted when using pdumper, and CHECK_IMPURE
does nothing at run time.

The current situation when using pdumper is this:

- pure space is put into the initial emacs executable as an all-zero
area with a single 1 in it, which is used to prevent the area being
placed into BSS
- before dump, data is placed into the pure space by purecopy
- before dump, PURE_P returns true for pure data, and CHECK_IMPURE
dies for pure arguments
- when dumping, pure data is indiscriminately mixed with impure data
and placed in the pdumper file without special treatment of any kind
- when launching the real emacs, pure space is also initialized from
the executable, as an all-zero area
- all data from the pdumper file is restored to heap memory, without
distinguishing formerly-pure data from formerly-impure data
- PURE_P is never called with a pure space pointer, it essentially
always returns false
- CHECK_IMPURE does nothing except waste a few cycles

That situation is unsatisfactory. We fail to catch modification of
formerly-pure data after loading the dump, and we waste several
megabytes of executable image size on zeroed data.

I think we have the following options:

1. remove pure space entirely
2. remove pure space, but leave PURE_P and CHECK_IMPURE as reminders
to do something about it.
3. move pure space to BSS
4. xmalloc() pure space, only when needed
5. modify pdumper to mark and recognize pure objects
6. do nothing and accept the wastefulness


I prefer (2), for this reason:

CHECK_IMPURE is useful, and should be extended to something like
CHECK_MUTABLE, which checks for objects including:

1. pure data
2. data read with `read'
3. data explicitly marked as immutable

(That would mean code like

(defconst list-a (nconc '(a b c) list-b))

would cease to be valid, and that's one of the problems I'm running
into with code I'm playing around with.)





^ permalink raw reply	[flat|nested] 125+ messages in thread

end of thread, other threads:[~2022-07-03 10:01 UTC | newest]

Thread overview: 125+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-07-14 14:26 bug#36649: 27.0.50; pure space and pdumper Pip Cet
2019-07-21  7:28 ` Paul Eggert
2019-07-21 12:53   ` Pip Cet
2019-07-21 13:44     ` Robert Pluim
2019-07-21 14:36       ` Pip Cet
2019-07-21 15:06         ` Robert Pluim
2019-07-21 17:43           ` Pip Cet
2019-07-21 17:56             ` Robert Pluim
2019-07-21 18:07               ` Pip Cet
2019-07-21 19:12                 ` Robert Pluim
2019-07-21 19:35                   ` Pip Cet
2019-07-21 20:20                     ` Robert Pluim
2019-07-22  3:58                       ` Pip Cet
2019-07-22  8:14                         ` Robert Pluim
2019-07-22 14:30                           ` Eli Zaretskii
2019-07-22 15:46                             ` Robert Pluim
2019-07-22 15:03                           ` Pip Cet
2019-07-22 18:45                             ` Robert Pluim
2020-08-21 12:51                               ` Lars Ingebrigtsen
2020-08-21 13:04                                 ` Pip Cet
2020-08-21 13:47                                   ` Eli Zaretskii
2020-08-21 15:26                                     ` Andreas Schwab
2020-08-21 21:41                                     ` Paul Eggert
2020-08-22  3:51                                     ` Richard Stallman
2020-08-22  8:55                                     ` Pip Cet
2020-08-22  9:59                                       ` Andreas Schwab
2020-08-28 12:32                                         ` Pip Cet
2020-08-28 14:24                                           ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors
2020-11-15 15:19                                           ` Stefan Kangas
2021-03-03 15:34                                             ` Pip Cet
2021-03-04 12:55                                               ` Pip Cet
2021-03-04 14:56                                                 ` Robert Pluim
2021-03-04 15:49                                                   ` Eli Zaretskii
2021-03-04 16:42                                                     ` Robert Pluim
2021-03-04 17:07                                                       ` Eli Zaretskii
2021-03-04 17:18                                                         ` Robert Pluim
2021-03-04 16:53                                                     ` martin rudalics
2021-03-04 17:45                                                     ` Andy Moreton
2021-03-04 21:52                                                   ` Paul Eggert
2021-03-05  3:00                                                     ` Pip Cet
2021-03-05  7:20                                                       ` Eli Zaretskii
2021-03-14 22:19                                                       ` Stefan Monnier
2021-05-12 14:50                                                         ` Lars Ingebrigtsen
2021-05-12 15:01                                                           ` Eli Zaretskii
2021-05-12 17:03                                                             ` Lars Ingebrigtsen
2021-05-12 17:06                                                               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-05-12 17:11                                                                 ` Lars Ingebrigtsen
2021-05-12 17:28                                                                   ` Eli Zaretskii
2021-05-12 17:32                                                                     ` Lars Ingebrigtsen
2021-05-12 17:42                                                                       ` Eli Zaretskii
2021-05-12 17:58                                                                         ` Lars Ingebrigtsen
2021-05-12 18:25                                                                           ` Lars Ingebrigtsen
2021-05-12 18:37                                                                             ` Eli Zaretskii
2021-05-12 18:48                                                                               ` Lars Ingebrigtsen
2021-05-12 18:52                                                                                 ` Eli Zaretskii
2021-05-12 19:07                                                                                   ` Lars Ingebrigtsen
2021-05-12 19:12                                                                                     ` Eli Zaretskii
2021-05-12 19:44                                                                                       ` Lars Ingebrigtsen
2021-05-13 14:44                                                                                         ` Pip Cet
2021-05-13 21:23                                                                                           ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-05-14  6:26                                                                                             ` Eli Zaretskii
2021-05-14  6:35                                                                                               ` Andrea Corallo via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-05-14  7:07                                                                                                 ` Eli Zaretskii
2021-05-16 13:46                                                                                             ` Lars Ingebrigtsen
2021-05-13 14:08                                                                                   ` Eli Zaretskii
2021-05-16 13:38                                                                                     ` Lars Ingebrigtsen
2021-05-17  8:43                                                                                       ` Paul Eggert
2021-05-17 10:25                                                                                         ` Eli Zaretskii
2021-05-17 14:15                                                                                           ` Lars Ingebrigtsen
2021-05-17 14:23                                                                                             ` Eli Zaretskii
2021-05-19 15:11                                                                                               ` Eli Zaretskii
2021-05-19 17:29                                                                                                 ` Paul Eggert
2021-05-19 17:38                                                                                                   ` Eli Zaretskii
2021-05-19 17:43                                                                                                     ` Paul Eggert
2021-05-20  8:46                                                                                                       ` Eli Zaretskii
2021-05-19 18:55                                                                                                 ` Lars Ingebrigtsen
2021-05-17 14:32                                                                                             ` Andreas Schwab
2021-05-18 13:33                                                                                               ` Lars Ingebrigtsen
2021-10-20 17:41                                                                                           ` Stefan Kangas
2021-10-20 18:18                                                                                             ` Eli Zaretskii
2021-05-17 14:13                                                                                         ` Lars Ingebrigtsen
2021-05-12 19:12                                                                           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-05-12 18:02                                                                       ` Paul Eggert
2021-05-12 17:37                                                                     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-05-12 17:44                                                                       ` Eli Zaretskii
2021-05-12 19:07                                                                         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2021-05-12 19:17                                                                           ` Eli Zaretskii
2021-05-12 17:19                                                                 ` Eli Zaretskii
2021-05-12 17:10                                                               ` Eli Zaretskii
2021-05-12 17:24                                                                 ` Lars Ingebrigtsen
2020-08-22 17:36                                       ` Paul Eggert
2019-07-21 18:14               ` Eli Zaretskii
2022-07-01 13:46 ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-01 15:51   ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-01 16:03     ` Eli Zaretskii
2022-07-01 16:33       ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-01 18:12         ` Eli Zaretskii
2022-07-01 18:58           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-02  8:55             ` Pip Cet
2022-07-02  9:06               ` Eli Zaretskii
2022-07-02  9:16                 ` Lars Ingebrigtsen
2022-07-02  9:22                   ` Eli Zaretskii
2022-07-02 10:30                     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-02 10:41                       ` Eli Zaretskii
2022-07-02 10:51                         ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-02 12:07                           ` Lars Ingebrigtsen
2022-07-02 12:22                             ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-02 12:41                               ` Lars Ingebrigtsen
2022-07-02 12:45                                 ` Eli Zaretskii
2022-07-02 17:23                                   ` Lars Ingebrigtsen
2022-07-02 17:31                                     ` Eli Zaretskii
2022-07-02 16:57                     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-02 17:11                       ` Eli Zaretskii
2022-07-02 18:03                         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-02 18:32                           ` Eli Zaretskii
2022-07-02 10:28                   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-02 10:32                     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-02 10:40                     ` Eli Zaretskii
2022-07-02 10:55                       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-03  7:14 ` Gerd Möllmann
2022-07-03  7:42   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-03  8:21     ` Gerd Möllmann
2022-07-03  9:38       ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-03  9:42         ` Gerd Möllmann
2022-07-03 10:01           ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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).