[erlang-questions] beam[8449]: segfault at 0 ip 0000000000437e10 sp 00007fffce250948 error 4 in beam[400000+174000]
Mikael Pettersson
mikpe@REDACTED
Mon May 24 15:14:53 CEST 2010
Liang Yupeng wrote:
> Thanks for your reply, Mikael. Yes, it is beam.smp and 64-bit one.
I have some doubts about that, see below.
> > 3. what tools (esp. gcc version) was this built with?
> >
> I install erlang by the command apt-get:
...
> Is this OK? Should I install a new beam-vm by source to get some debug info?
Run `strings -a /path/to/beam | fgrep GCC | sort -u'
(where /path/to/beam is the path to the beam executable).
> > 4. using gdb or objdump on the `beam' executable, can you
> > provide a disassembly of the procedure surrounding 0x437e10?
>
> sunny@REDACTED:~$ objdump -D /usr/lib/erlang/erts-5.7.2/bin/beam.smp >
> beam.smp.objdump
> sunny@REDACTED:~$ cat beam.smp.objdump | grep -C 10 437e1
> 437deb: 48 83 c4 38 add $0x38,%rsp
> 437def: e9 8c fa ff ff jmpq 437880
> <erts_alcu_realloc_thr_spec>
> 437df4: be 36 7e 55 00 mov $0x557e36,%esi
> 437df9: 89 c7 mov %eax,%edi
> 437dfb: e8 70 50 00 00 callq 43ce70
> <erts_thr_fatal_error>
>
> 0000000000437e00 <erts_alcu_realloc_ts>:
> 437e00: 4c 89 6c 24 e8 mov %r13,-0x18(%rsp)
> 437e05: 4c 8d ae 28 01 00 00 lea 0x128(%rsi),%r13
> 437e0c: 48 89 5c 24 d0 mov %rbx,-0x30(%rsp)
> 437e11: 48 89 6c 24 d8 mov %rbp,-0x28(%rsp)
> 437e16: 4c 89 64 24 e0 mov %r12,-0x20(%rsp)
> 437e1b: 48 89 f3 mov %rsi,%rbx
> 437e1e: 4c 89 74 24 f0 mov %r14,-0x10(%rsp)
> 437e23: 4c 89 7c 24 f8 mov %r15,-0x8(%rsp)
> 437e28: 41 89 fe mov %edi,%r14d
> 437e2b: 48 83 ec 38 sub $0x38,%rsp
> 437e2f: 4c 89 ef mov %r13,%rdi
> 437e32: 48 89 d5 mov %rdx,%rbp
> 437e35: 49 89 cc mov %rcx,%r12
> 437e38: e8 e3 f1 fe ff callq 427020
> <pthread_mutex_lock@REDACTED>
> 437e3d: 85 c0 test %eax,%eax
> 437e3f: 0f 85 ae 02 00 00 jne 4380f3
> <erts_alcu_realloc_ts+0x2f3>
> 437e45: 48 85 ed test %rbp,%rbp
>
> Is these lines enough?
This makes me suspect even more that the crash is in an instance of
the uni-processor beam executable, not the beam.smp executable.
There are two signs for that:
1. The kernel message refers to the executable as `beam' not `beam.smp'.
2. The above disassembly from beam.smp doesn't HAVE any instruction starting
at 0x437e10.
So please do the objdump and grep thing again but on the plain `beam' executable.
More information about the erlang-questions
mailing list