[erlang-questions] Segmentation fault with lcnt compiled beam and +A
Gleb Peregud
gleber.p@REDACTED
Thu Aug 30 11:41:11 CEST 2012
Hello folks
I have encountered the following segmentation fault. It happens when I
combine lock-counter-compiled binary and "+A N" where N >= 64. But it
works with up to 63 async threads. Erlang compiled without lcnt works
on the same machine without a problem. The stacktrace is the
following:
$ gdb /opt/erlang/r15b01_lcnt/erts-5.9.1/bin/beam.smp core
Copyright stuff ... snip...
This GDB was configured as "x86_64-linux-gnu".
For bug reporting instructions, please see:
<http://bugs.launchpad.net/gdb-linaro/>...
Reading symbols from /opt/erlang/r15b01_lcnt/erts-5.9.1/bin/beam.smp...done.
[New LWP 25517]
[New LWP 25483]
...snip...
[New LWP 25463]
[New LWP 25466]
warning: Can't read pathname for load map: Input/output error.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Core was generated by `/opt/erlang/r15b01_lcnt/erts-5.9.1/bin/beam.smp
-A 64 -- -root /opt/erlang/r15b'.
Program terminated with signal 11, Segmentation fault.
#0 erts_lcnt_lock (lock=<optimized out>) at beam/erl_lock_count.c:445
445 eltd->lock_in_conflict = 0;
(gdb) bt
#0 erts_lcnt_lock (lock=<optimized out>) at beam/erl_lock_count.c:445
#1 0x0000000000454096 in erts_mtx_lock_x (line=3480, mtx=0x87b9d8,
file=<optimized out>)
at beam/erl_threads.h:1342
#2 erts_alcu_alloc_thr_pref (type=92, extra=<optimized out>,
size=1664) at beam/erl_alloc_util.c:3480
#3 0x00000000005c81f4 in ts_event_pool (size=25,
endpp=0x7f00217f9e88) at common/ethr_aux.c:351
#4 0x00000000005c8306 in ts_event_alloc () at common/ethr_aux.c:394
#5 0x00000000005c86a5 in ethr_make_ts_event__ (tsepp=0x7f00217f9ec0)
at common/ethr_aux.c:421
#6 0x00000000005cd9ce in thr_wrapper (vtwd=<optimized out>) at
pthread/ethread.c:91
#7 0x00007f01f69c7e9a in start_thread () from
/lib/x86_64-linux-gnu/libpthread.so.0
#8 0x00007f01f64ed4bd in clone () from /lib/x86_64-linux-gnu/libc.so.6
#9 0x0000000000000000 in ?? ()
(gdb)
$ uname -a
Linux lb4 3.2.0-24-generic #37-Ubuntu SMP Wed Apr 25 08:43:22 UTC 2012
x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04 LTS
Release: 12.04
Codename: precise
Erlang was configured via Kerl using the following configure options:
"--enable-hipe --enable-smp-support --enable-threads
--enable-kernel-poll --enable-lock-counter".
I can reproduce this bug on 2-core a 32 bit machine with the same
Ubuntu, but on it it fails if there are more than 93 async threads:
gleber@REDACTED:~$ erl -lcnt +A 94
Segmentation fault
gleber@REDACTED:~$ erl -lcnt +A 93
Erlang R15B01 (erts-5.9.1) [source] [smp:2:2] [async-threads:93]
[hipe] [kernel-poll:false] [lock-counting]
Eshell V5.9.1 (abort with ^G)
1>
Have anyone encountered similar problem? Can I provide any more
information helpful for pinpointing the issue?
Best regards,
Gleb Peregud
More information about the erlang-questions
mailing list