Subject: bug#17184: 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:12 +0000

Your bug report

#17168: 24.3.50; crash while bootstrapping current trunk

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; crash while bootstrapping current trunk
From: Nicolas Richard <[email-masked]>
To: [email-masked]
Date: Fri, 04 Apr 2014 17:26:36 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

I tried making trunk and it crashes while bootstrapping. I guess it's
"normal" (because of bug#17168 and bug#17178) so please feel free to
close it.

It crashes while byte compiling lisp/tcover-ses.el:

> Wrote /home/youngfrog/sources/emacs-from-git/lisp/emacs-lisp/subr-x.elc
> Compiling emacs-lisp/tcover-ses.el
> 
> Backtrace:
> ../src/emacs[0x816ba30]
> ../src/emacs[0x814d236]
> ../src/emacs[0x816baaf]
> ../src/emacs[0x81b58cf]
> ../src/emacs[0x81b5a0e]
> ../src/emacs[0x81ce514]
> ../src/emacs[0x8205ad9]
> ../src/emacs[0x82051e0]
> ../src/emacs[0x81cd435]
> ../src/emacs[0x81f1f25]
> ../src/emacs[0x81f0f13]
> ../src/emacs[0x81d6ede]
> ../src/emacs[0x81cd435]
> ../src/emacs[0x81f1f25]
> ../src/emacs[0x81f219d]
> ../src/emacs[0x81ce591]
> ../src/emacs[0x8205ad9]
> ../src/emacs[0x81cee0c]
> ../src/emacs[0x81ce6f3]
> ../src/emacs[0x81ce0a2]
> ../src/emacs[0x81f0cf2]
> ../src/emacs[0x81d6ede]
> ../src/emacs[0x81ce514]
> ../src/emacs[0x81cd87d]
> ../src/emacs[0x81ce3b3]
> ../src/emacs[0x8205ad9]
> ../src/emacs[0x81ceb55]
> ../src/emacs[0x81ce6f3]
> ../src/emacs[0x8205ad9]
> ../src/emacs[0x81ceb55]
> ../src/emacs[0x81ce6f3]
> ../src/emacs[0x8205ad9]
> ../src/emacs[0x81ceb55]
> ../src/emacs[0x81ce6f3]
> ../src/emacs[0x8205ad9]
> ../src/emacs[0x81ceb55]
> ../src/emacs[0x81ce6f3]
> ../src/emacs[0x8205ad9]
> ../src/emacs[0x81ceb55]
> ../src/emacs[0x81ce6f3]
> ../src/emacs[0x81cd2d7]
> ...
> make[3]: *** [emacs-lisp/tcover-ses.elc] Abandon (core dump créé)
> make[3] : on quitte le répertoire « /home/youngfrog/sources/emacs-from-git/lisp »

So I tried this:
$ gdb --args emacs --batch  -f batch-byte-compile ../lisp/emacs-lisp/tcover-ses.el

and here's what happens:

Breakpoint 1, terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:355
355	  signal (sig, SIG_DFL);

it aborts because of this in data.c:
  /* Convert to eassert or remove after GC bug is found.  In the
     meantime, check unconditionally, at a slight perf hit.  */
  if (valid_lisp_object_p (definition) < 1)
    emacs_abort ();

Here's the backtrace:

(gdb) bt
#0  terminate_due_to_signal (sig=6, backtrace_limit=40) at emacs.c:355
#1  0x0816baaf in emacs_abort () at sysdep.c:2130
#2  0x081b58cf in Ffset (symbol=144231458, definition=137959093) at data.c:733
#3  0x081b5a0e in Fdefalias (symbol=144231458, definition=137959093, docstring=139331522) at data.c:777
#4  0x081ce514 in Ffuncall (nargs=3, args=0xbfffac84) at eval.c:2822
#5  0x08205ad9 in exec_byte_code (bytestr=144102825, vector=142800693, maxdepth=12, args_template=139331522, nargs=0, args=0x0) at bytecode.c:919
#6  0x082051e0 in Fbyte_code (bytestr=144102825, vector=142800693, maxdepth=12) at bytecode.c:482
#7  0x081cd435 in eval_sub (form=144101550) at eval.c:2191
#8  0x081f1f25 in readevalloop (readcharfun=139400210, stream=0x8946b18, sourcename=143974441, printflag=false, unibyte=139331522, readfun=139331522, start=139331522, end=139331522) at lread.c:1934
#9  0x081f0f13 in Fload (file=137504521, noerror=139331522, nomessage=139331546, nosuffix=139331522, must_suffix=139331546) at lread.c:1363
#10 0x081d6ede in Frequire (feature=143167186, filename=139331522, noerror=139331522) at fns.c:2671
#11 0x081cd435 in eval_sub (form=142889614) at eval.c:2191
#12 0x081f1f25 in readevalloop (readcharfun=143919141, stream=0x0, sourcename=143946105, printflag=false, unibyte=139331522, readfun=139331522, start=139331522, end=139331522) at lread.c:1934
#13 0x081f219d in Feval_buffer (buffer=143919141, printflag=139331522, filename=143909873, unibyte=139331522, do_allow_print=139331546) at lread.c:1995
#14 0x081ce591 in Ffuncall (nargs=6, args=0xbfffb474) at eval.c:2831
#15 0x08205ad9 in exec_byte_code (bytestr=137274913, vector=137274933, maxdepth=24, args_template=139331522, nargs=0, args=0x0) at bytecode.c:919
#16 0x081cee0c in funcall_lambda (fun=137274853, nargs=4, arg_vector=0x82ea635 <pure+94869>) at eval.c:3049
#17 0x081ce6f3 in Ffuncall (nargs=5, args=0xbfffb7ac) at eval.c:2864
#18 0x081ce0a2 in call4 (fn=141003746, arg1=143909873, arg2=143909873, arg3=139331522, arg4=139331546) at eval.c:2663
#19 0x081f0cf2 in Fload (file=143904913, noerror=139331522, nomessage=139331546, nosuffix=139331522, must_suffix=139331546) at lread.c:1305
#20 0x081d6ede in Frequire (feature=143907898, filename=139331522, noerror=139331522) at fns.c:2671
#21 0x081ce514 in Ffuncall (nargs=2, args=0xbfffbba8) at eval.c:2822
#22 0x081cd87d in Fapply (nargs=2, args=0xbfffbba8) at eval.c:2301
#23 0x081ce3b3 in Ffuncall (nargs=3, args=0xbfffbba4) at eval.c:2796
#24 0x08205ad9 in exec_byte_code (bytestr=143527569, vector=142390349, maxdepth=28, args_template=1028, nargs=1, args=0xbfffbed4) at bytecode.c:919
#25 0x081ceb55 in funcall_lambda (fun=142390421, nargs=1, arg_vector=0xbfffbed0) at eval.c:2983
#26 0x081ce6f3 in Ffuncall (nargs=2, args=0xbfffbecc) at eval.c:2864
#27 0x08205ad9 in exec_byte_code (bytestr=143526009, vector=142386277, maxdepth=16, args_template=1028, nargs=1, args=0xbfffc200) at bytecode.c:919
#28 0x081ceb55 in funcall_lambda (fun=142386301, nargs=1, arg_vector=0xbfffc1fc) at eval.c:2983
#29 0x081ce6f3 in Ffuncall (nargs=2, args=0xbfffc1f8) at eval.c:2864
#30 0x08205ad9 in exec_byte_code (bytestr=143524777, vector=142386229, maxdepth=20, args_template=1028, nargs=1, args=0xbfffc530) at bytecode.c:919
#31 0x081ceb55 in funcall_lambda (fun=142386253, nargs=1, arg_vector=0xbfffc52c) at eval.c:2983
#32 0x081ce6f3 in Ffuncall (nargs=2, args=0xbfffc528) at eval.c:2864
#33 0x08205ad9 in exec_byte_code (bytestr=143512849, vector=142949461, maxdepth=16, args_template=0, nargs=0, args=0xbfffc858) at bytecode.c:919
#34 0x081ceb55 in funcall_lambda (fun=142949549, nargs=0, arg_vector=0xbfffc858) at eval.c:2983
#35 0x081ce6f3 in Ffuncall (nargs=1, args=0xbfffc854) at eval.c:2864
#36 0x08205ad9 in exec_byte_code (bytestr=143513329, vector=141028941, maxdepth=4, args_template=0, nargs=0, args=0xbfffcb84) at bytecode.c:919
#37 0x081ceb55 in funcall_lambda (fun=142949573, nargs=0, arg_vector=0xbfffcb84) at eval.c:2983
#38 0x081ce6f3 in Ffuncall (nargs=1, args=0xbfffcb80) at eval.c:2864
#39 0x081cd2d7 in eval_sub (form=142890566) at eval.c:2157
#40 0x081cbbd4 in internal_lisp_condition_case (var=143495690, bodyform=142890566, handlers=142890614) at eval.c:1323
#41 0x08206a1b in exec_byte_code (bytestr=143512577, vector=142345157, maxdepth=64, args_template=1028, nargs=1, args=0xbfffd08c) at bytecode.c:1169
#42 0x081ceb55 in funcall_lambda (fun=142558517, nargs=1, arg_vector=0xbfffd088) at eval.c:2983
#43 0x081ce6f3 in Ffuncall (nargs=2, args=0xbfffd084) at eval.c:2864
#44 0x08205ad9 in exec_byte_code (bytestr=143509785, vector=142287813, maxdepth=68, args_template=2052, nargs=1, args=0xbfffd3cc) at bytecode.c:919
#45 0x081ceb55 in funcall_lambda (fun=142554317, nargs=1, arg_vector=0xbfffd3c8) at eval.c:2983
#46 0x081ce6f3 in Ffuncall (nargs=2, args=0xbfffd3c4) at eval.c:2864
#47 0x08205ad9 in exec_byte_code (bytestr=143628761, vector=142937357, maxdepth=8, args_template=0, nargs=0, args=0xbfffd6f4) at bytecode.c:919
#48 0x081ceb55 in funcall_lambda (fun=142937373, nargs=0, arg_vector=0xbfffd6f4) at eval.c:2983
#49 0x081ce6f3 in Ffuncall (nargs=1, args=0xbfffd6f0) at eval.c:2864
#50 0x081cd2d7 in eval_sub (form=142898206) at eval.c:2157
#51 0x081cbbd4 in internal_lisp_condition_case (var=143603770, bodyform=142898206, handlers=142902174) at eval.c:1323
#52 0x08206a1b in exec_byte_code (bytestr=143628633, vector=142933037, maxdepth=48, args_template=1028, nargs=1, args=0xbfffdbd4) at bytecode.c:1169
#53 0x081ceb55 in funcall_lambda (fun=142933133, nargs=1, arg_vector=0xbfffdbd0) at eval.c:2983
#54 0x081ce6f3 in Ffuncall (nargs=2, args=0xbfffdbcc) at eval.c:2864
#55 0x08205ad9 in exec_byte_code (bytestr=143628313, vector=142925061, maxdepth=40, args_template=1024, nargs=0, args=0xbfffdf40) at bytecode.c:919
#56 0x081ceb55 in funcall_lambda (fun=142932941, nargs=0, arg_vector=0xbfffdf40) at eval.c:2983
#57 0x081ce6f3 in Ffuncall (nargs=1, args=0xbfffdf3c) at eval.c:2864
#58 0x08205ad9 in exec_byte_code (bytestr=137480961, vector=137480981, maxdepth=92, args_template=1028, nargs=1, args=0xbfffe27c) at bytecode.c:919
#59 0x081ceb55 in funcall_lambda (fun=137480941, nargs=1, arg_vector=0xbfffe278) at eval.c:2983
#60 0x081ce6f3 in Ffuncall (nargs=2, args=0xbfffe274) at eval.c:2864
#61 0x08205ad9 in exec_byte_code (bytestr=137468033, vector=137468053, maxdepth=68, args_template=0, nargs=0, args=0xbfffe5dc) at bytecode.c:919
#62 0x081ceb55 in funcall_lambda (fun=137468013, nargs=0, arg_vector=0xbfffe5dc) at eval.c:2983
#63 0x081ce6f3 in Ffuncall (nargs=1, args=0xbfffe5d8) at eval.c:2864
#64 0x08205ad9 in exec_byte_code (bytestr=137466281, vector=137466301, maxdepth=48, args_template=0, nargs=0, args=0xbfffe890) at bytecode.c:919
#65 0x081ceb55 in funcall_lambda (fun=137466261, nargs=0, arg_vector=0xbfffe890) at eval.c:2983
#66 0x081ce97c in apply_lambda (fun=137466261, args=139331522) at eval.c:2924
#67 0x081cd63c in eval_sub (form=140992662) at eval.c:2230
#68 0x081ccd91 in Feval (form=140992662, lexical=139331522) at eval.c:2003
#69 0x08150d62 in top_level_2 () at keyboard.c:1183
#70 0x081cbcee in internal_condition_case (bfun=0x8150d45 <top_level_2>, handlers=139364602, hfun=0x8150969 <cmd_error>) at eval.c:1354
#71 0x08150d96 in top_level_1 (ignore=139331522) at keyboard.c:1191
#72 0x081cb676 in internal_catch (tag=139362650, func=0x8150d64 <top_level_1>, arg=139331522) at eval.c:1118
#73 0x08150cca in command_loop () at keyboard.c:1152
#74 0x08150605 in recursive_edit_1 () at keyboard.c:777
#75 0x08150741 in Frecursive_edit () at keyboard.c:845
#76 0x0814eaff in main (argc=5, argv=0xbfffec94) at emacs.c:1654

Lisp Backtrace:
"defalias" (0xbfffac88)
"byte-code" (0xbfffaf10)
"require" (0xbfffb270)
"eval-buffer" (0xbfffb478)
"load-with-code-conversion" (0xbfffb7b0)
"require" (0xbfffbbac)
"apply" (0xbfffbba8)
"byte-compile-file-form-require" (0xbfffbed0)
"byte-compile-file-form" (0xbfffc1fc)
"byte-compile-toplevel-file-form" (0xbfffc52c)
0x8853ca8 PVEC_COMPILED
0x8853cc0 PVEC_COMPILED
"funcall" (0xbfffcb80)
"byte-compile-from-buffer" (0xbfffd088)
"byte-compile-file" (0xbfffd3c8)
0x8850d18 PVEC_COMPILED
"funcall" (0xbfffd6f0)
"batch-byte-compile-file" (0xbfffdbd0)
"batch-byte-compile" (0xbfffdf40)
"command-line-1" (0xbfffe278)
"command-line" (0xbfffe5dc)
"normal-top-level" (0xbfffe890)
(gdb) p definition
No symbol "definition" in current context.
(gdb) f 3
#3  0x081b5a0e in Fdefalias (symbol=144231458, definition=137959093, docstring=139331522) at data.c:777
777	      Ffset (symbol, definition);
(gdb) p definition
$1 = 137959093
(gdb) x
Argument required (starting display address).
(gdb) x $1
0x83916b5 <pure+779029>:	0xd1000004
(gdb) 

In GNU Emacs 24.3.50.8 (i686-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2014-04-03 on geodiff-mac3
Windowing system distributor `The X.Org Foundation', version 11.0.11304000
System Description:	Gentoo Base System release 2.2

Configured using:
 `configure --with-x-toolkit=lucid 'CFLAGS= -O0 -g3''

Important settings:
  value of $LANG: fr_FR.UTF-8
  locale-coding-system: utf-8-unix

-- 
Nico.