|
From: | Paul Eggert |
Subject: | Re: recent master core dumps building on FreeBSD i386 |
Date: | Thu, 18 Oct 2018 10:53:20 -0700 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 |
On 10/18/18 9:02 AM, Eli Zaretskii wrote:
Can you please repeat this experiment, and then, when it crashes, do this: (gdb) source ./.gdbinit (gdb) frame 2 (gdb) p/x a (gdb) xtype and show us the results?
Also, please try these GDB commands when debugging ./temacs: b syms_of_threads r -Q p &main_thread disas syms_of_threads p &Vmain_threadI'm attaching the output of these commands on Fedora 28 x86-64 compiled with 'gcc -m32 -march=native -g3 -O2' (AMD Phenom II X4 910e). Evidently your compiler (clang?) is not inlining make_lisp_ptr, but it's still useful to know what it's up to. I see that GCC optimizes away not only the call to make_lisp_ptr, but also the runtime check 'TAGGEDP (a, type) && XUNTAG (a, type, char) == ptr', I guess because GCC knows that main_thread is properly aligned so TAGGEDP must succeed here. clang isn't smart enough to do this sort of optimization (at least on Fedora) so if you're using clang that might partly explain the problem.
Also, please investigate what the macro GCALIGNED_STRUCT expands to. You can use 'gcc -E' to do that.
gdb.txt
Description: Text document
[Prev in Thread] | Current Thread | [Next in Thread] |