<div dir="ltr">While preparing the Aeternity code for OTP 24, I came across a Dialyzer crash when using OTP 23.<div><br></div><div>We release the software using OTP 22, but run OTP 23-based builds in our CI. However, Dialyzer is only run on OTP 22 in the CI.</div><div><br></div><div>This is the crash:<br>```<br>=ERROR REPORT==== 4-Jun-2021::20:04:10.238902 ===<br>Error in process <0.29614.2> with exit value:<br>{function_clause,<br>  Â  [{dialyzer_dep,bind_list1,<br>  Â  Â  Â  Â [[],<br>  Â  Â  Â  Â  [{output,single,<br>  Â  Â  Â  Â  Â  Â  Â {set,<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â {set,1,16,16,8,80,48,<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â {{[],[],[],[],[],[],[],[],[],[],[],[],<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â [external],<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â [],[],[]}}}}}],<br>  Â  Â  Â  Â  {dict,172,35,64,32,175,105,<br>  Â  Â  Â  Â  Â  Â  {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]},<br>  Â  Â  Â  Â  Â  Â  {{[[175186|<br>  Â  Â  Â  Â  Â  Â  Â  Â  {output,single,<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {set,<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {set,1,16,16,8,80,48,<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â []},<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  {{[],[],[],[],[],[],[],[],[],[],[],[],<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  [178840],<br>  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  Â  [],[],[]}}}}}],<br></div><div>...</div><div>  Â  Â  Â  Â  Â  Â  Â  [],[],[],[],[],[],[],[],[],[],[],[],[]},<br>  Â  Â  Â  Â  Â  Â  Â {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}}],<br>  Â  Â  Â  Â [{file,"dialyzer_dep.erl"},{line,456}]},<br>  Â  Â {dialyzer_dep,traverse,4,[{file,"dialyzer_dep.erl"},{line,150}]},<br>  Â  Â {dialyzer_dep,traverse_clauses,6,[{file,"dialyzer_dep.erl"},{line,263}]},<br>  Â  Â {dialyzer_dep,traverse,4,[{file,"dialyzer_dep.erl"},{line,141}]},<br>  Â  Â {dialyzer_dep,traverse_defs,5,[{file,"dialyzer_dep.erl"},{line,243}]},<br>  Â  Â {dialyzer_dep,traverse,4,[{file,"dialyzer_dep.erl"},{line,161}]},<br>  Â  Â {dialyzer_dep,traverse,4,[{file,"dialyzer_dep.erl"},{line,184}]},<br>  Â  Â {dialyzer_dep,traverse_clauses,6,<br>  Â  Â  Â  Â [{file,"dialyzer_dep.erl"},{line,263}]}]}<br></div><div>```</div><div><br></div><div>To reproduce, check out the current master of <a href="https://github.com/aeternity/aeternity">https://github.com/aeternity/aeternity</a></div><div><br></div><div>I first encountered it with 23.0.3, but also on 23.3.4.1. It works well with OTP 22.</div><div><br></div><div>Can't yet test it on OTP 24, among other things because we run into internal compiler crashes when trying to build the code. You can take a look at <a href="https://github.com/aeternity/aeternity/pull/3655">https://github.com/aeternity/aeternity/pull/3655</a></div><div><br></div><div>BR,</div><div>Ulf W</div></div>