After upgrade to 22.0 cannot compile old source file: compilers goes into endless loop and is killed by OOM.
Here is a minimal example:
-module(bug). -export([titl/2]). -record(mp4_media, {tracks = []}). -record(mp4_track, {title}). unzero(Bin) -> Len = size(Bin) - 1, case Bin of <<Bin2:Len/binary, 0>> -> unzero(Bin2); _ -> Bin end. titl(<<0, _Flags:24, N:32, Title1/binary>>, #mp4_media{tracks = Tracks} = Media) -> if N > 0 andalso N =< size(Tracks) -> #mp4_track{} = Track = element(N,Tracks), Tracks1 = setelement(N,Tracks,Track#mp4_track{title = unzero(Title1)}), Media#mp4_media{tracks = Tracks1}; true -> Media end.
I compile it via: erlc bug.erl
It should be compiled in a 1-2 seconds, but on 22.0 compiler does not stops