<div dir="ltr"><div><div>I've also run into this problem:<br><br><a href="http://erlang.org/pipermail/erlang-bugs/2013-July/003674.html">http://erlang.org/pipermail/erlang-bugs/2013-July/003674.html</a><br><br></div>At first I thought it was a gcc bug, but <a href="http://gcc.gnu.org/bugs/#report">http://gcc.gnu.org/bugs/#report</a> says "if compiling with -fno-strict-aliasing -fwrapv -fno-aggressive-loop-optimizations makes a difference, your code probably is not correct." Compiling efile_drv.c with -fno-aggressive-loop-optimizations makes the problem go away.<br>
<br></div><div>With -Wextra, there are warnings about signed/unsigned comparisons, which might be causing this:<br><br>drivers/common/efile_drv.c:3749:14: note: in expansion of macro ‘EV_GET_UINT64’<br>      if (   !EV_GET_UINT64(ev, &d->c.preadv.offsets[i-1], &p, &q)<br>
              ^<br>drivers/common/efile_drv.c:590:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]<br>         *(pp) = (    *(pp)+8 < (ev)->iov[*(qp)].iov_len   \<br>                              ^<br>
drivers/common/efile_drv.c:3749:14: note: in expansion of macro ‘EV_GET_UINT64’<br>      if (   !EV_GET_UINT64(ev, &d->c.preadv.offsets[i-1], &p, &q)<br>              ^<br>drivers/common/efile_drv.c:564:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]<br>
     (*(pp)+4 <= (ev)->iov[*(qp)].iov_len                  \<br>              ^<br>drivers/common/efile_drv.c:3750:7: note: in expansion of macro ‘EV_GET_UINT32’<br>   || !EV_GET_UINT32(ev, &sizeH, &p, &q)<br>
       ^<br>drivers/common/efile_drv.c:569:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]<br>         *(pp) = (    *(pp)+4 < (ev)->iov[*(qp)].iov_len   \<br>                              ^<br>
drivers/common/efile_drv.c:3750:7: note: in expansion of macro ‘EV_GET_UINT32’<br>   || !EV_GET_UINT32(ev, &sizeH, &p, &q)<br>       ^<br>drivers/common/efile_drv.c:564:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]<br>
     (*(pp)+4 <= (ev)->iov[*(qp)].iov_len                  \<br>              ^<br>drivers/common/efile_drv.c:3751:7: note: in expansion of macro ‘EV_GET_UINT32’<br>   || !EV_GET_UINT32(ev, &sizeL, &p, &q)) {<br>
       ^<br>drivers/common/efile_drv.c:569:30: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]<br>         *(pp) = (    *(pp)+4 < (ev)->iov[*(qp)].iov_len   \<br>                              ^<br>
drivers/common/efile_drv.c:3751:7: note: in expansion of macro ‘EV_GET_UINT32’<br>   || !EV_GET_UINT32(ev, &sizeL, &p, &q)) {<br>       ^<br>drivers/common/efile_drv.c:581:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]<br>
     (*(pp)+8 <= (ev)->iov[*(qp)].iov_len                  \<br><br></div><div>-Manish<br></div></div>