Subject: bug#16278: closed (Re: bug#17168: 24.3.50; Segfault at mark_object)

From: [email-masked] (GNU bug Tracking System)
Date: Mon, 07 Apr 2014 18:41:09 +0000

Your bug report

#17168: 24.3.50; Crashes in GC continue

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
17168: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=17168
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#17168: 24.3.50; Segfault at mark_object
From: Stefan Monnier <[email-masked]>
To: Daniel Colascione <[email-masked]>
Cc: Dmitry Antipov <[email-masked]>, [email-masked]
Date: Mon, 07 Apr 2014 12:28:20 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

> Anyway, I'd like to get a fix into emacs-24 soon so we can make sure
> we've fixed the GC bug.

I installed a fix into emacs-24, which lets all symbols be uninterned.

> Are you vetoing the general approach used in this patch?

No: I think disallowing unintern is a good idea, but not for emacs-24.

Indeed, as it turns out, the only non-pure objects referenced from pure
space are symbols and distinguishing uninterned from interned reduces
the number of such "pinned" objects from about 10K to about 250.

Rather than scan all symbols to find the pinned ones, the code
I installed into emacs-24 keeps a pointer to the first symbol_block
that contains a pinned symbol.  This way we only scan about 15K symbols
at the beginning of every GC cycle to mark those 10K pinned symbols.
Compared to keeping a vector of 10K object, this seems like
a good tradeoff.

For trunk, we could disallow uninterning pinned symbols, at which point
it's worth the trouble to build a vector of those 250 remaining
pinned symbols.

        Stefan

Subject: 24.3.50; Crashes in GC continue
From: Richard Stallman <[email-masked]>
To: [email-masked]
Date: Sat, 28 Dec 2013 07:27:27 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

I still get crashes in GC from trying to mark
clear-temporary-overlay-map.

Why create that symbol?  Why not use an interned symbol?  A comment
says that nested temporary maps don't work anyway.  But nested maps
could be supported by using clear-temporary-overlay-map-1,
clear-temporary-overlay-map-2, and so on, all interned.

Of course, the real bug is in GC.  The Lisp code is correct and it
ought to work.  But I don't understand the GC bug, and no one else
is fixing it.

So I propose to install this change.

=== modified file 'lisp/subr.el'
*** lisp/subr.el	2013-12-20 19:55:56 +0000
--- lisp/subr.el	2013-12-27 21:19:34 +0000
***************
*** 4280,4286 ****
  
  Optional ON-EXIT argument is a function that is called after the
  deactivation of MAP."
!   (let ((clearfun (make-symbol "clear-temporary-overlay-map")))
      ;; Don't use letrec, because equal (in add/remove-hook) would get trapped
      ;; in a cycle.
      (fset clearfun
--- 4280,4286 ----
  
  Optional ON-EXIT argument is a function that is called after the
  deactivation of MAP."
!   (let ((clearfun 'clear-temporary-overlay-map))
      ;; Don't use letrec, because equal (in add/remove-hook) would get trapped
      ;; in a cycle.
      (fset clearfun

In GNU Emacs 24.3.50.18 (mips64el-unknown-linux-gnu, GTK+ Version 2.20.1)
 of 2013-12-14 on chiefs-gnewsense
Bzr revision: 115526 [email-masked]
System Description:	gNewSense GNU/Linux 3.0 (parkes)

Configured using:
 `configure 'CFLAGS=-g -O0''

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  diff-auto-refine-mode: t
  shell-dirtrack-mode: t
  gpm-mouse-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t
  abbrev-mode: t

Recent input:
l l SPC m e SPC t h e SPC n a m e SPC o f SPC O N E 
SPC s p e c i f i c SPC s o u r c e SPC f i l e SPC 
t h a t SPC h a s RET t h i s SPC k i n d SPC f SPC 
DEL DEL o f SPC n o t c i e ? C-b C-b C-b C-t C-e RET 
C-c C-c C-x b c a l l s RET C-p C-p C-@ C-n C-n C-n 
C-n C-w C-x C-s C-p C-p C-p C-@ C-e ESC w C-x 4 m C-x 
o C-p C-@ C-n C-n C-w C-x C-s C-x b R TAB RET C-x 1 
n n n n n n n n C-l C-x C-s C-x d e m a c s - b z r 
/ t r u n k / l s p DEL DEL i s p RET ESC x g r e p 
RET c l e a r - y e k p DEL DEL DEL DEL t e m p o r 
a r y - o v e r l a y - m a p SPC * / e l SPC * / * 
. e l RET ESC x g r e p RET ESC p ESC b ESC b DEL . 
ESC f C-k RET C-x o C-u C-n RET C-x 1 ESC v C-a C-u 
C-v C-u C-v C-u C-v C-u C-v C-a C-u C-v C-u C-v C-u 
C-v C-u C-v C-u C-p C-u C-v C-u C-v C-u C-v C-u C-v 
C-u C-v C-u C-v ESC x r e p o r t SPC e m a c s SPC 
b u g RET

Recent messages:
Mark set
Auto-saving...done
Mark set
Saving file /home/rms/calls...
Wrote /home/rms/calls
Saving file /home/rms/RMAIL...
Wrote /home/rms/RMAIL [2 times]
Grep exited abnormally with code 2
Grep finished (matches found)
Mark set

Load-path shadows:
/home/rms/emacs-bzr/trunk/lisp/leim/quail/lao hides /home/rms/emacs-bzr/trunk/lisp/language/lao
/home/rms/emacs-bzr/trunk/lisp/leim/quail/georgian hides /home/rms/emacs-bzr/trunk/lisp/language/georgian
/home/rms/emacs-bzr/trunk/lisp/leim/quail/thai hides /home/rms/emacs-bzr/trunk/lisp/language/thai
/home/rms/emacs-bzr/trunk/lisp/leim/quail/ethiopic hides /home/rms/emacs-bzr/trunk/lisp/language/ethiopic
/home/rms/emacs-bzr/trunk/lisp/leim/quail/japanese hides /home/rms/emacs-bzr/trunk/lisp/language/japanese
/home/rms/emacs-bzr/trunk/lisp/leim/quail/cyrillic hides /home/rms/emacs-bzr/trunk/lisp/language/cyrillic
/home/rms/emacs-bzr/trunk/lisp/leim/quail/indian hides /home/rms/emacs-bzr/trunk/lisp/language/indian
/home/rms/emacs-bzr/trunk/lisp/leim/quail/hebrew hides /home/rms/emacs-bzr/trunk/lisp/language/hebrew
/home/rms/emacs-bzr/trunk/lisp/leim/quail/greek hides /home/rms/emacs-bzr/trunk/lisp/language/greek
/home/rms/emacs-bzr/trunk/lisp/leim/quail/czech hides /home/rms/emacs-bzr/trunk/lisp/language/czech
/home/rms/emacs-bzr/trunk/lisp/leim/quail/slovak hides /home/rms/emacs-bzr/trunk/lisp/language/slovak
/home/rms/emacs-bzr/trunk/lisp/leim/quail/tibetan hides /home/rms/emacs-bzr/trunk/lisp/language/tibetan

Features:
(tabify man goto-addr sh-script smie executable apropos smerge-mode
cl-macs gv vc-sccs vc-svn vc-dir ewoc bug-reference whitespace vc-rcs
js json imenu cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles
cc-align cc-engine cc-vars cc-defs arc-mode archive-mode tex-mode
latexenc ox-latex ox-icalendar ox-html ox-ascii ox-publish ox novice
view wid-edit etags log-edit diff-mode org-element org-rmail org-mhe
org-irc org-info org-gnus org-docview doc-view image-mode cl-loaddefs
cl-lib org-bibtex bibtex org-bbdb org-w3m org org-macro org-footnote
org-pcomplete org-list org-faces org-entities noutline outline
org-version ob-emacs-lisp ob ob-tangle org-src ob-ref ob-lob ob-table
ob-keys ob-exp ob-comint ob-core ob-eval org-compat org-macs
org-loaddefs ispell ffap thingatpt url-parse auth-source eieio
byte-opt bytecomp byte-compile cconv eieio-core password-cache
url-vars parse-time vc-cvs jka-compr gnus-util mailcap cal-move
cal-menu calendar cal-loaddefs dired-aux mule-util quail rmailout
sgml-mode dabbrev rmailsum pp compare-w add-log log-view easy-mmode
pcvs-util vc vc-dispatcher vc-bzr find-func mail-extr shadow emacsbug
help-mode misearch multi-isearch epa-mail epa derived epg epg-config
shell pcomplete grep compile comint ansi-color ring mailalias qp
rmailmm message sendmail format-spec rfc822 mml easymenu mml-sec
mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader
mail-parse rfc2231 dired t-mouse package rmailedit rmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils time-date paren
cus-start cus-load advice help-fns tooltip electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd tool-bar dnd
fontset image regexp-opt fringe tabulated-list newcomment lisp-mode
prog-mode register page menu-bar rfn-eshadow timer select scroll-bar
mouse jit-lock font-lock syntax facemenu font-core frame cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)
[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

-- 
Dr Richard Stallman
President, Free Software Foundation
51 Franklin St
Boston MA 02110
USA
www.fsf.org  www.gnu.org
Skype: No way! That's nonfree (freedom-denying) software.
  Use Ekiga or an ordinary phone call.