[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [Libevent-users] upcoming 2.1.4-alpha Libevent release



On Mon, Mar 17, 2014 at 5:27 PM, Nick Mathewson <nickm@xxxxxxxxxxxxx> wrote:
> On Mon, Mar 17, 2014 at 2:36 PM, Jeffrey Walton <noloader@xxxxxxxxx> wrote:
>> On Mon, Mar 17, 2014 at 1:31 PM, Nick Mathewson <nickm@xxxxxxxxxxxxx> wrote:
>>> Hi, all!
>>>
>>> There's been a lot of activity on Libevent recently, so I'm hoping to
>>> put out a Libevent 2.1.4-alpha in the next day or two.  It will not
>>> have every bugfix that I've been told about, or every feature that I'm
>>> hoping to include in 2.1.x, but it's been long enough without an alpha
>>> that it's probably wise to put a
>>>
>>> If you want to try it out before the release, have a look at
>>>
>>> http://www.wangafu.net/~nickm/volatile/libevent-2.1.4-alpha-candidate.tar.gz
>>>
>>> Please let me know about any total showstopper bugs here.  (Like,
>>> major regressions against 2.1.3-alpha)
>> It looks like there's some undefined behavior present.
>>
>> Attached is the result of manually running test/test.sh.
>>
>> Jeff
>>
>> ***** Excerpt *****
>>
>> regress: evutil.c:1930:26: runtime error: left shift of 255 by 24
>> places cannot be represented in type 'int'
>> test/regress_util.c:182:25: runtime error: left shift of 255 by 24
>> places cannot be represented in type 'int'
>> test/regress_util.c:729:5: runtime error: signed integer overflow:
>> 9223372036854775807 + 1 cannot be represented in type 'int64_t' (aka
>> 'long')
>> test/regress_util.c:739:5: runtime error: signed integer overflow:
>> 2147483647 + 1 cannot be represented in type 'int32_t' (aka 'int')
>> test/regress_util.c:766:7: runtime error: signed integer overflow:
>> 9223372036854775807 + 1 cannot be represented in type 'ssize_t' (aka
>> 'long')
>> http.c:4289:22: runtime error: signed integer overflow: 999999999 * 10
>> cannot be represented in type 'int'
>> event_tagging.c:213:28: runtime error: left shift of 95 by 28 places
>> cannot be represented in type 'int'
>> event_tagging.c:213:28: runtime error: left shift of 13 by 28 places
>> cannot be represented in type 'int'
>
> Looks like we've got some issues here.  In most cases, the solution is
> probably to use the appropriate unsigned types.  Are you using the
> clang analyzer, or some other tools?
>
> Are any of these regressions since 2.1.3-alpha?  I'd like to run
> without warnings everywhere interesting, but like I said, for
> 2.1.4-alpha at this point, it's major showstopper bugs only.  If they
> aren't regressions, they probably haven't been hurting anyone's code
> in the past, and we can fix 'em in 2.1.5.
The compiler to use would be Intel's ICC. ICC's optimizer is
*ruthless* about removing code with undefined behavior.

I've worked with programs and libraries that executed as expected and
passed all self tests under Clang, Comeau, GCC and MSVC; but suffered
a single self test failure under ICC. If any of the ibevents are going
to suffer UB code removal, then its going to happen under ICC.

What I'm trying to say: you can't count on "it works" under GCC or
Clang, so it must be OK. Plus, the code might work well now bu break
in the future as the compiler guys improve analysis. Or, it might
break in the future when used under Link Time Optimization (LTO).

Jeff
***********************************************************************
To unsubscribe, send an e-mail to majordomo@xxxxxxxxxxxxx with
unsubscribe libevent-users    in the body.