[erlang-questions] ets gives badarg after recompile

Andrew Arrow oneone@REDACTED
Tue Nov 27 05:38:48 CET 2007


Well I tried to modify your example program to show what I'm seeing
but I can't reproduce the problem in a small example program.  I'm
doing something just like this:

-module(t).
-export([t/0]).

t()->
    process_flag(trap_exit, true),
    myname = ets:new(myname, [set, named_table]),
    true = ets:insert( myname, {a,1}),
    [{a,1}] = ets:lookup( myname, a ),
    Pid = self(),
    spawn_link(fun() -> another_func(Pid) end),
    receive
        {data} ->
            io:format("got it")
    end,
    true = ets:delete( myname ).

another_func(Pid) ->
    ets:lookup(myname, a),
    Pid ! {data}.

And for some reason I'll get a

Error in process <0.81.0> with exit value:
{badarg,[{ets,lookup,[myname,a]},{t,another_func,0}]}

after the 2nd compile.  It must mean that another_func is being run
AFTER the ets:delete( myname) already ran, but I don't see why this
could happen.




---------
Date: Mon, 26 Nov 2007 08:00:15 +0100
From: Bengt Kleberg <bengt.kleberg@REDACTED>
Subject: Re: [erlang-questions] ets gives badarg after recompile
To: erlang-questions@REDACTED
Message-ID: <474A6EFF.3060607@REDACTED>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed

greetings,

could you be a little more precise when describing the problem? given
this file:
-module(t).

-export([t/0]).

t()->
       myname = ets:new(myname, [set, named_table]),
       true = ets:insert( myname, {a,1}),
       [{a,1}] = ets:lookup( myname, a ),
       true = ets:delete( myname ).


i can do:
7> c(t).

{ok,t}
8> t:t().

true
9> t:t().

true
10> c(t).

{ok,t}
11> t:t().

true
12>



More information about the erlang-questions mailing list