[erlang-bugs] erl_interface and threads
Mon Apr 11 09:34:20 CEST 2011
Am 07.04.2011 20:15, schrieb Andrew Thompson:
> On Thu, Apr 07, 2011 at 01:08:37PM -0400, Michael Santos wrote:
>> On Thu, Apr 07, 2011 at 09:53:05AM +0200, Benjamin Winkler wrote:
>>> We are using Erlang and specifically the erl_interface for C (Visual
>>> Studio C++ 2008, Windows 7) to connect to our Erlang servers. We have
>>> noticed weird errors when creating (and freeing) terms in different
>>> threads. It seems to me that the memory allocation module is not
>> This isn't helpful with solving your problem with erl_interface but
>> have you looked at the newer ei interface? It lets you manage the memory
>> yourself (or allocates memory for you if you use the ei_x_* functions).
> I'm pretty sure that the whole point of ei is to be a thread-safe
> replacement for erl_interface.
Yes, that is what I ultimately did to solve the problem. Plus using a
mutex to lock every single call to ETERM-allocation functions such as
erl_mk_atom() and erl_free_term(). Tedious.
However, I did not find any notice of that behaviour in the
erl_interface documentation. Also, ei provides a function
ei_decode_term() which references the erl_interface library, and I'm
pretty sure that this is not thread-safe as well as the whole problem
seems to be the memory allocation for erlang terms. So all in all the
conclusion would be: stay away from ETERM?
More information about the erlang-bugs