<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    This is indeed a problem in Erlang VM code (shallow copy of inflate
    state)<br>
    that has existed since R16B03, but not caused actual problem until
    zlib v1.2.9.<br>
    <br>
    Fix coming up. Here is a preliminary patch for the impatient.<br>
    <br>
    diff --git a/erts/emulator/beam/external.c
    b/erts/emulator/beam/external.c<br>
    index beed847..1c4fff5 100644<br>
    --- a/erts/emulator/beam/external.c<br>
    +++ b/erts/emulator/beam/external.c<br>
    @@ -1431,6 +1431,10 @@ static B2TContext*
    b2t_export_context(Process* p, B2TContext* src)<br>
         if (ctx->state >= B2TDecode && ctx->u.dc.next
    == &src->u.dc.res) {<br>
             ctx->u.dc.next = &ctx->u.dc.res;<br>
         }<br>
    +    else if (ctx->state == B2TUncompressChunk) {<br>
    +        int cres = inflateCopy(&ctx->u.uc.stream,
    &src->u.uc.stream);<br>
    +        ASSERT(cres == Z_OK); (void)cres;<br>
    +    }<br>
         hp = HAlloc(p, PROC_BIN_SIZE); <br>
         ctx->trap_bin = erts_mk_magic_binary_term(&hp,
    &MSO(p), context_b);<br>
         return ctx;<br>
    <br>
    <br>
    /Sverker, Erlang/OTP<br>
    <br>
    <br>
    <div class="moz-cite-prefix">On 01/20/2017 02:49 AM, Jeremy Huffman
      wrote:<br>
    </div>
    <blockquote
cite="mid:CAH37v0==2nquw9J9y+htmckHCfjpnxXuG+HF0mZuzeU4Q2kGVQ@mail.gmail.com"
      type="cite">
      <pre wrap="">I opened a Github issue with zlib. <a class="moz-txt-link-freetext" href="https://github.com/madler/zlib/issues/206">https://github.com/madler/zlib/issues/206</a>.
Mark Adler (zlib maintainer's) response:

"Isolating it to that commit points to a problem in the application code,
where it must be inadvertently stomping on the deflate state, e.g. with an
out-of-bounds write into memory, or perhaps that the code is trying to use
the deflate state after it has been closed. The only change that commit
made was to check the integrity of the deflate structure more thoroughly on
each call of a deflate* function."

On Thu, Jan 19, 2017 at 2:11 PM, Michel Boaventura <
<a class="moz-txt-link-abbreviated" href="mailto:michel.boaventura@gmail.com">michel.boaventura@gmail.com</a>> wrote:

</pre>
      <blockquote type="cite">
        <pre wrap="">Hi,

I've done the bisect and find the culprit: <a class="moz-txt-link-freetext" href="https://github.com/">https://github.com/</a>
madler/zlib/commit/b516b4bdd7c0c9f0858adfebf732089014f7b282. Before this
commit term_to_binary works and stop doing so afterwards. I will have a
look at the changes and see if I can figure out what happened.

Cheers,


On 19 January 2017 at 16:15, Michel Boaventura <
<a class="moz-txt-link-abbreviated" href="mailto:michel.boaventura@gmail.com">michel.boaventura@gmail.com</a>> wrote:

</pre>
        <blockquote type="cite">
          <pre wrap="">Hi all,

I'm indeed using zlib 1.2.11 on my gentoo. I can't downgrade it, since
all the other versions were removed from portage.

I will clone zlib repo and see if I can bisect the problem.

Thanks!

On 19 January 2017 at 15:45, Jeremy Huffman <a class="moz-txt-link-rfc2396E" href="mailto:jeremy@jeremyhuffman.com"><jeremy@jeremyhuffman.com></a>
wrote:

</pre>
          <blockquote type="cite">
            <pre wrap="">Yes it's exactly the same error message from dialyzer. And the fact that
he's getting it on Gentoo which builds from source suggests that it is not
simply a matter of recompiling the dependency chain, which was a suggestion
in the Arch board. There was another app in Arch that also had a problem
pinned on zlib 1.2.11.


On Thu, Jan 19, 2017 at 11:33 AM Kostis Sagonas <a class="moz-txt-link-rfc2396E" href="mailto:kostis@cs.ntua.gr"><kostis@cs.ntua.gr></a>
wrote:

</pre>
            <blockquote type="cite">
              <pre wrap="">On 01/19/2017 03:42 AM, Jeremy Huffman wrote:

</pre>
              <blockquote type="cite">
                <pre wrap="">Hi,
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">I'm an Arch Linux user and picked up an update a few days ago that
</pre>
              </blockquote>
              <pre wrap="">broke

</pre>
              <blockquote type="cite">
                <pre wrap="">dialyzer. I bisected the last few days of updates and then narrowed
</pre>
              </blockquote>
              <pre wrap="">the

</pre>
              <blockquote type="cite">
                <pre wrap="">problem to zlib 1.2.10, which was released January 2nd. 1.2.11 was
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">released on the 15th as an emergency bug fix and does not fix the
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">problem. Reverting my system back to 1.2.8 (the previous version
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">packaged for Arch) did resolve the issue.
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">It seems doubtful this is an Erlang problem, but I doubt I'm going to
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">write a test program to demonstrate the problem to them.  I thought I
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">should at least report the issue in case others encounter it.
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">To reproduce, one would need only install zlib 1.2.10 and then run:
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">dialyzer --verbose --build_plt --apps erts --output_plt test.plt
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">Output would be along the lines of:
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">dialyzer: Could not get abstract code for file:
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">/usr/lib/erlang/lib/erts-8.2/ebin/erlang.beam (please recompile it
</pre>
              </blockquote>
              <pre wrap="">with

</pre>
              <blockquote type="cite">
                <pre wrap="">+debug_info)
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">There are also errors when simply trying to do success typing analysis
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">*using* any pre-existing PLT file, along lines of "this isn't a PLT
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">file". The errors are not dependent upon the version of Erlang
</pre>
              </blockquote>
              <pre wrap="">installed

</pre>
              <blockquote type="cite">
                <pre wrap="">- at least anything I tried that was released on Arch in the 19.x
</pre>
              </blockquote>
              <pre wrap="">branch

</pre>
              <blockquote type="cite">
                <pre wrap="">will reproduce the problem.
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">Anyway, I hope this report helps someone and I would be curious if
</pre>
              </blockquote>
              <pre wrap="">
</pre>
              <blockquote type="cite">
                <pre wrap="">anyone else reproduces it, or especially if they fail to reproduce it.
</pre>
              </blockquote>
              <pre wrap="">


Earlier today (yesterday?), there was the following question on the

erlang-questions mailing list:



   <a class="moz-txt-link-freetext" href="http://erlang.org/pipermail/erlang-questions/2017-January/0">http://erlang.org/pipermail/erlang-questions/2017-January/0</a>
91434.html



I am willing to bet that problem with binary_to_term is also caused by

zlib troubles.



Perhaps Michel (cc:) can inform us about his zlib version.



Kostis


</pre>
            </blockquote>
          </blockquote>
          <pre wrap="">

--
Michel Almada de Castro Boaventura
Analista de Sistemas
Laboratório de Software Livre - LSL

</pre>
        </blockquote>
        <pre wrap="">


--
Michel Almada de Castro Boaventura
Analista de Sistemas
Laboratório de Software Livre - LSL

</pre>
      </blockquote>
      <pre wrap="">
</pre>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
erlang-bugs mailing list
<a class="moz-txt-link-abbreviated" href="mailto:erlang-bugs@erlang.org">erlang-bugs@erlang.org</a>
<a class="moz-txt-link-freetext" href="http://erlang.org/mailman/listinfo/erlang-bugs">http://erlang.org/mailman/listinfo/erlang-bugs</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>