<div dir="ltr">I may be totally off here, but I have a strange bug which I have seen twice now on R16B03, OSX for the Dialyzer. To reproduce it, execute the following steps:<div><br></div><div><div># Clone repository and force a specific version</div>

<div>; git clone <a href="https://github.com/jlouis/msgpack-erlang.git">https://github.com/jlouis/msgpack-erlang.git</a></div><div>; cd msgpack-erlang</div><div>; git checkout origin/dialyzer-failure</div><div>; make</div>

<div>; make build_plt # Takes about 2 minutes</div><div>; make dialyzer</div><div><br></div><div>Gives the following:</div><div><br></div><div><div><div>=ERROR REPORT==== 16-Jan-2014::15:52:18 ===</div><div>Error in process <0.67.0> with exit value: {function_clause,[{erl_types,unify_lists,[[{c,tuple,[{c,atom,[ext],unknown},{c,atom,[msgpack_term],unknown}],{2,{c,atom,[ext],unknown}}}],[],[],[{c,tuple,[{c,atom,[enable_str],unknown},{c,atom,[true],unknown}],{2,{c,atom... </div>

<div><br></div><div><br></div><div>dialyzer: Analysis failed with error:</div><div>{function_clause,[{erl_types,unify_lists,</div><div>                             [[{c,tuple,[...],...}],[],[],[{...}|...],[]],</div><div>
                             [{file,"erl_types.erl"},{line,2695}]},</div>
<div>                  {erl_types,t_unify,4,[{file,[...]},{line,...}]},</div><div>                  {erl_types,t_unify,4,[{file,...},{...}]},</div><div>                  {erl_types,t_unify,3,[{...}|...]},</div><div>                  {dialyzer_typesig,solve_subtype,4,[...]},</div>

<div>                  {dialyzer_typesig,mk_constraint,3,...},</div><div>                  {dialyzer_typesig,state__store_conj,...},</div><div>                  {dialyzer_typesig,...}]}</div><div>Last messages in the log cache:</div>

<div>  Reading files and computing callgraph... done in 0.27 secs</div><div>  Removing edges... done in 0.04 secs</div><div><br></div><div>=ERROR REPORT==== 16-Jan-2014::15:52:18 ===</div><div>Error in process <0.69.0> with exit value: {badarg,[{ets,insert,[790562,[{{msgpack,pack,1},{{c,binary,[8,8],unknown},[{c,union,[none,{c,binary,[8,0],unknown},none,none,{c,list,[{c,union,[none,{c,binary,[8,0],unknown},none,none,{c,list,[any,{c,nil,[],unknown}],unknown... </div>

<div><br></div><div>make: *** [dialyzer] Error 1</div></div></div><div><br></div><div>If you run `git show origin/dialyzer-failure` you have the following patch chunk:</div><div><br></div><div><div>diff --git a/include/msgpack.hrl b/include/msgpack.hrl</div>

<div>index 6ef046d..4796492 100644</div><div>--- a/include/msgpack.hrl</div><div>+++ b/include/msgpack.hrl</div><div>@@ -63,8 +63,8 @@</div><div>           impl = erlang      :: erlang | nif,</div><div>           allow_atom = none  :: none | pack, %% allows atom when packing</div>

<div>           enable_str = false :: boolean(), %% true for new spec</div><div>-          ext_packer = undefined :: msgpack_ext_packer(),</div><div>-          ext_unpacker = undefined :: msgpack_ext_unpacker(),</div><div>

+          ext_packer = undefined :: undefined | msgpack_ext_packer(),</div><div>+          ext_unpacker = undefined :: undefined | msgpack_ext_unpacker(),</div><div>           original_list = []       :: msgpack_list_options()</div>

<div>          }).</div></div><div><br></div><div>Undoing this patch chunk makes the dialyzer report a slew of warnings, but not fail.</div><div><br></div><div>Is it possible that someone can try doing the same on another setup to verify the presence/absence of the error? Also preferable on older releases to make a target for bisection.</div>

<div><br></div><div><br></div>-- <br>J.
</div></div>