[erlang-bugs] otp --with-libatomic_ops compile hangs
Wed Sep 15 16:37:15 CEST 2010
> Feng Yu wrote:
>> Build Options: --with-libatomic_ops=/usr
>> Linux yufeng-laptop 2.6.32-25-generic #43-Ubuntu SMP Wed Sep 1 09:46:13
>> UTC 2010 x86_64 GNU/Linux
>> apt-get -y install libatomic-ops-dev
>> Symptom: beam.smp hangs/doesn't terminate
>> Steps to reproduce:
>> There are two known ways to reproduce the issue and the simplest is:
>> $ git clone git://github.com/erlang/otp.git
>> $ cd otp
>> $ ./otp_build autoconf
>> $ ./configure --with-libatomic_ops=/usr
>> $ make
>> make:=D5=FD=D4=DA=C0=EB=BF=AA=C4=BF=C2=BC `/usr/src/otp/lib/hipe/main'
>> erlc -W +debug_info +inline -o../ebin hipe_rtl.erl
>> make hang here.
> Configuring with libatomic_ops seems to be a new option since
> post-R14A. Since you're on x86_64 Linux you shouldn't need it.
> Does it work without that option?
I was able to reproduce the hang using libatomic_ops-1.2 and
libatomic_ops-7.2alpha4 on an Ubuntu 9.10, x86_64, gcc 4.4.1. However,
using the atomic implementation part of OTP every things works fine.
On SLES 10.1, x86_64, gcc 4.1.2, libatomic_ops-7.2alpha4 worked fine.
We have added support for use of libatomic_ops since it makes it
possible to utilize optimized native atomic operations on more platforms
than before. On x86_64 there is however no need to use libatomic_ops. If
configure doesn't complain, there is no need for libatomic_ops.
Cut from release the note:
The ethread library contains native atomic implementations for, x86
(32 and 64 bit), powerpc (32 bit), sparc V9 (32 and 64 bit), and
tilera (32 bit). On other hardware gcc's builtin support for atomic
memory access will be used if such exists. If no such support is
found, configure will warn about no atomic implementation available.
The ethread library can now also use the libatomic_ops library for
atomic memory accesses. This makes it possible for the Erlang runtime
system to utilize optimized native atomic operations on more
platforms than before. If configure warns about no atomic
implementation available, try using the libatomic_ops library. Use
the --with-libatomic_ops=PATH configure command line argument when
specifying where the libatomic_ops installation is located. The
libatomic_ops library can be downloaded from:
It looks like a bug outside of OTP, and we currently don't have the time
to look closer into this, but we will do that when time allows us some
time in the future.
Rickard Green, Erlang/OTP, Ericsson AB.
More information about the erlang-bugs