Subject: bug#51688: ELC+ELN international/emoji.elc crashes

From: Robert Pluim <[email-masked]>
Date: Tue, 23 Nov 2021 17:00:27 +0100

>>>>> On Tue, 23 Nov 2021 15:29:40 +0000, Andrea Corallo <[email-masked]> said:

    Andrea> It's really important we make sure the reproducer is produced when Emacs
    Andrea> crashes.  Could you clean-up the old repro before each test so we make
    Andrea> sure we get a new repro that we know is correlated with the crashy run?

As I suspected, my reproduction was faulty. The first crash produces
these files only (and linking and running them doesnʼt crash):

~/.emacs.d/eln-cache/29.0.50-04b8e366> ls
subr--trampoline-746f702d6c6576656c_top_level_0_libgccjit_repro.c
subr--trampoline-61626f72742d7265637572736976652d65646974_abort_recursive_edit_0.eln
subr--trampoline-746f702d6c6576656c_top_level_0vRK8HA.eln.tmp
subr--trampoline-61626f72742d7265637572736976652d65646974_abort_recursive_edit_0_libgccjit_repro.c

    >> But I have a live emacs process thatʼs just crashed (the first time)
    >> trapped in gdb if you want me to poke at it.

    Andrea> I think without libgccjit with debug symbols there's not much that can be
    Andrea> easily inferred here.

Well why didnʼt you say so in the first place. Itʼs a VM, I can
install whatever I like :-)

gdb) bt
#0  vec<gcc::jit::playback::block*, va_heap, vl_ptr>::space(int) const (nelems=1, this=0x7ffff06fe778) at ../../gcc/vec.h:1467
#1  vec<gcc::jit::playback::block*, va_heap, vl_ptr>::reserve(unsigned int, bool) (nelems=1, exact=false, this=0x7ffff06fe778) at ../../gcc/vec.h:1762
#2  vec<gcc::jit::playback::block*, va_heap, vl_ptr>::safe_push(gcc::jit::playback::block* const&) (obj=<synthetic pointer>: 0x7ffff0324870, this=0x7ffff06fe778) at ../../gcc/vec.h:1887
#3  gcc::jit::playback::function::new_block(char const*) (name=<optimized out>, this=0x7ffff06fe730) at ../../gcc/jit/jit-playback.c:1565
#4  gcc::jit::recording::block::replay_into(gcc::jit::playback::context*) (this=0x11eff50) at ../../gcc/jit/jit-recording.c:4452
#5  0x00007ffff4fc9809 in gcc::jit::recording::context::replay_into(gcc::jit::playback::context*) (this=0x115b370, r=0x7fffffff92f0) at ../../gcc/jit/jit-recording.c:688
#6  0x00007ffff4fea69f in gcc::jit::playback::context::replay() (this=<optimized out>) at ../../gcc/jit/jit-playback.c:2957
#7  jit_langhook_parse_file() () at ../../gcc/jit/dummy-frontend.c:615
#8  0x00007ffff4e7ba92 in compile_file() () at ../../gcc/toplev.c:457
#9  0x00007ffff500c1f2 in do_compile () at ../../gcc/toplev.c:2201
#10 toplev::main(int, char**) (argv=<optimized out>, argc=<optimized out>, this=0x7fffffff9222) at ../../gcc/toplev.c:2340
#11 gcc::jit::playback::context::compile() (this=0x7fffffff92f0) at ../../gcc/jit/jit-playback.c:2113
#12 0x00007ffff4fe7cd5 in gcc::jit::recording::context::compile_to_file(gcc_jit_output_kind, char const*) (output_path=<optimized out>, output_kind=<optimized out>, this=<optimized out>)
    at ../../gcc/jit/jit-recording.c:1429
#13 gcc_jit_context_compile_to_file(gcc_jit_context*, gcc_jit_output_kind, char const*) (ctxt=<optimized out>, output_kind=<optimized out>, output_path=<optimized out>)
    at ../../gcc/jit/libgccjit.c:2860
#14 0x0000000000692cd6 in Fcomp__compile_ctxt_to_file (filename=0x13c1874) at comp.c:4652

    Andrea> BTW which libgccjit version are you on? (looks farily recent)

Information for package libgccjit0:
-----------------------------------
Repository     : Main Repository (OSS)
Name           : libgccjit0
Version        : 11.2.1+git610-1.15
Arch           : x86_64
Vendor         : openSUSE
Installed Size : 23.8 MiB
Installed      : Yes (automatically)
Status         : up-to-date
Source package : gcc11-11.2.1+git610-1.15.src

Robert
--