[erlang-bugs] file:pread broken with GCC 4.8

Lukas Larsson <>
Fri Aug 16 11:13:45 CEST 2013


Hello Manish,

Thanks for reporting this again and digging into it a little deeper. 
I've created a fix which solves the problem as seen by Tomas and will 
include it in the R16B02 release. I'll be testing the fix over the 
weekend and hopefully it will be visible in maint on github by early 
next week.

Lukas

On 15/08/13 20:43, Manish Singh wrote:
> I've also run into this problem:
>
> http://erlang.org/pipermail/erlang-bugs/2013-July/003674.html
>
> At first I thought it was a gcc bug, but 
> http://gcc.gnu.org/bugs/#report 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.
>
> With -Wextra, there are warnings about signed/unsigned comparisons, 
> which might be causing this:
>
> drivers/common/efile_drv.c:3749:14: note: in expansion of macro 
> 'EV_GET_UINT64'
>       if (   !EV_GET_UINT64(ev, &d->c.preadv.offsets[i-1], &p, &q)
>               ^
> drivers/common/efile_drv.c:590:30: warning: comparison between signed 
> and unsigned integer expressions [-Wsign-compare]
>          *(pp) = (    *(pp)+8 < (ev)->iov[*(qp)].iov_len   \
>                               ^
> drivers/common/efile_drv.c:3749:14: note: in expansion of macro 
> 'EV_GET_UINT64'
>       if (   !EV_GET_UINT64(ev, &d->c.preadv.offsets[i-1], &p, &q)
>               ^
> drivers/common/efile_drv.c:564:14: warning: comparison between signed 
> and unsigned integer expressions [-Wsign-compare]
>      (*(pp)+4 <= (ev)->iov[*(qp)].iov_len                  \
>               ^
> drivers/common/efile_drv.c:3750:7: note: in expansion of macro 
> 'EV_GET_UINT32'
>    || !EV_GET_UINT32(ev, &sizeH, &p, &q)
>        ^
> drivers/common/efile_drv.c:569:30: warning: comparison between signed 
> and unsigned integer expressions [-Wsign-compare]
>          *(pp) = (    *(pp)+4 < (ev)->iov[*(qp)].iov_len   \
>                               ^
> drivers/common/efile_drv.c:3750:7: note: in expansion of macro 
> 'EV_GET_UINT32'
>    || !EV_GET_UINT32(ev, &sizeH, &p, &q)
>        ^
> drivers/common/efile_drv.c:564:14: warning: comparison between signed 
> and unsigned integer expressions [-Wsign-compare]
>      (*(pp)+4 <= (ev)->iov[*(qp)].iov_len                  \
>               ^
> drivers/common/efile_drv.c:3751:7: note: in expansion of macro 
> 'EV_GET_UINT32'
>    || !EV_GET_UINT32(ev, &sizeL, &p, &q)) {
>        ^
> drivers/common/efile_drv.c:569:30: warning: comparison between signed 
> and unsigned integer expressions [-Wsign-compare]
>          *(pp) = (    *(pp)+4 < (ev)->iov[*(qp)].iov_len   \
>                               ^
> drivers/common/efile_drv.c:3751:7: note: in expansion of macro 
> 'EV_GET_UINT32'
>    || !EV_GET_UINT32(ev, &sizeL, &p, &q)) {
>        ^
> drivers/common/efile_drv.c:581:14: warning: comparison between signed 
> and unsigned integer expressions [-Wsign-compare]
>      (*(pp)+8 <= (ev)->iov[*(qp)].iov_len                  \
>
> -Manish
>
>
> _______________________________________________
> erlang-bugs mailing list
> 
> http://erlang.org/mailman/listinfo/erlang-bugs

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-bugs/attachments/20130816/bfa661ea/attachment.html>


More information about the erlang-bugs mailing list