[erlang-bugs] dets hangs sometimes

John Hughes john.hughes@REDACTED
Tue May 17 15:02:46 CEST 2011


QuickCheck found another dets bug at Klarna. The following test makes dets hang:

run() ->
    dets:stop(),
    file:delete(dets_table),
    {ok,dets_table} = dets:open_file(dets_table,[{type,bag}]),
    ok = dets:insert(dets_table,[{0,21},{0,0},{1,0},{2,0},{2,1}]),
    ok = dets:insert(dets_table,[{1,21}]),
    true = dets:insert_new(dets_table,[{3,0}]),
    {[{1,21}],Cont} = dets:match_object(dets_table,{'$1',21},0),
    {[{0,21}],Cont2} = dets:match_object(Cont),
    ok = dets:match_delete(dets_table,{'$1','$2'}),
    true = dets:insert_new(dets_table,[{31,0}]), 
    ok = dets:insert(dets_table,[{2,1},{18,0},{31,1}]),
    ok = dets:insert(dets_table,[{1,0},{1,1},{2,0}]),
    [] = dets:match_object(dets_table,{0,0}),
    io:format("Here it comes..."),
    %% This call hangs
    dets:match_object(Cont2),
    io:format("now!\n").

When I run it:

2> c(dets_stopped).
{ok,dets_stopped}
3> dets_stopped:run().
Here it comes...

Make sure to run it in a newly started node... dets has some state which can change the behaviour.

Maybe it could be simplified some more, but most changes I make to it cause it to pass.

John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-bugs/attachments/20110517/84f0a4b6/attachment.htm>


More information about the erlang-bugs mailing list