<div dir="ltr">I posted this as a gist as well,<div><br></div><div><a href="https://gist.github.com/jlouis/8456179">https://gist.github.com/jlouis/8456179</a><br></div><div><br></div><div>There are many valuable comments in there.</div>
<div><br></div><div>It turns out that this is a proper dialyzer error where it crashes, on different environments. It also crashes in R16B02, so the regression is older than that.</div><div><br></div></div><div class="gmail_extra">
<br><br><div class="gmail_quote">On Thu, Jan 16, 2014 at 4:09 PM, Jesper Louis Andersen <span dir="ltr"><<a href="mailto:jesper.louis.andersen@gmail.com" target="_blank">jesper.louis.andersen@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><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" target="_blank">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>
<span class="HOEnZb"><font color="#888888">
<div><br></div><div><br></div>-- <br>J.
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br>J.
</div>