Paul Eggert writes: > 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_thread > I'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. Is it still helpful for me to investigate what GCALIGNED_STRUCT expands to? If so, could elaborate on how I can get this? Paul Eggert writes: > main_thread is not properly aligned; its address is a multiple of 4, but it should be a multiple of 8. That's the problem. Somehow GCALIGNED_STRUCT is not working on your platform. Is there anything else helpful for me to investigate or do you recommend that I report this problem elsewhere?