https://bugzilla.redhat.com/show_bug.cgi?id=1240487
--- Comment #14 from Peter Lemenkov <lemenkov(a)gmail.com> ---
Found a way to see actual stacktrace.
Run erl in GDB as shown above. Then when you got a SIGSEGV you will have a
corrupted stack. First we need to recover it by adding/removing random values
to/from $esp register (stack pointer). I believe those who know Intel assembly
already know what values one should try first. I tried stepping by 4 in each
direction until I realized that I have to add 32. So, please, do:
(gdb) set $pc = *(void **)$esp
(gdb) set $esp = $esp + 32
(gdb) bt
#0 0x568688f0 in erts_proc ()
#1 0x566103ce in ethr_dw_atomic_cmpxchg_nob (xchg=0xf461609c, new=0xf46160a4,
var=0x568688f0 <erts_proc+48>) at beam/erl_threads.h:1456
#2 erts_atomic64_inc_read_nob (var=0x568688f0 <erts_proc+48>) at
beam/erl_threads.h:1646
#3 step_interval_nob (icp=0x568688f0 <erts_proc+48>) at beam/utils.c:4954
#4 erts_smp_step_interval_nob (icp=icp@entry=0x568688f0 <erts_proc+48>) at
beam/utils.c:5004
#5 0x5671572b in ptab_list_bif_engine (c_p=c_p@entry=0xf6d80218,
res_accp=res_accp@entry=0xf4616178, mbp=mbp@entry=0xf1f816a0) at
beam/erl_ptab.c:927
#6 0x56716a5d in erts_ptab_list (c_p=c_p@entry=0xf6d80218, ptab=0x568688c0
<erts_proc>) at beam/erl_ptab.c:766
#7 0x5661be76 in processes_0 (A__p=0xf6d80218, BIF__ARGS=0xf74861c0) at
beam/bif.c:3841
#8 0x5659978b in process_main () at beam/beam_emu.c:3690
#9 0x56638784 in sched_thread_func (vesdp=0xf608e000) at
beam/erl_process.c:8021
#10 0x567a19cc in thr_wrapper (vtwd=0xffffd184) at pthread/ethread.c:114
#11 0xf7f184be in start_thread (arg=0xf4616b40) at pthread_create.c:333
#12 0xf7e2c3fe in clone () at ../sysdeps/unix/sysv/linux/i386/clone.S:114
(gdb)
See - a cool nice stacktrace!
erts_proc is a bogus value. It's a stack corruption after calling
ethr_dw_atomic_cmpxchg_nob.
That's all I've got for today.
--
You are receiving this mail because:
You are on the CC list for the bug.