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

Re: [tor-bugs] #13192 [Tor]: Collect aggregate stats of total hidden service usage vs total exit usage in Tor network



#13192: Collect aggregate stats of total hidden service usage vs total exit usage
in Tor network
-----------------------------+---------------------------------------
     Reporter:  arma         |      Owner:
         Type:  enhancement  |     Status:  needs_revision
     Priority:  normal       |  Milestone:  Tor: 0.2.7.x-final
    Component:  Tor          |    Version:
   Resolution:               |   Keywords:  SponsorR tor-relay tor-hs
Actual Points:               |  Parent ID:
       Points:               |
-----------------------------+---------------------------------------

Comment (by teor):

 Once these changes are made, the test fails the clang x86_64 (3.7.0 (trunk
 230165) / x86_64-apple-darwin14.1.0) integer undefined behaviour sanitiser
 with:
 {{{
 util/cast_double_to_int64: src/test/test_util.c:4250:3: runtime error:
 left shift of negative value -1
 }}}

 This can be resolved by casting the constant `-1` to `uint64_t` not
 `int64_t`:
 {{{
   tt_i64_op(((uint64_t) -1) << 53, ==,
             cast_double_to_int64(-1.0 * pow(2.0, 53.0)));
   tt_i64_op((((uint64_t) -1) << 53) + 1, ==,
             cast_double_to_int64(-1.0 * pow(2.0, 53.0) + 1.0));
 }}}

 See http://stackoverflow.com/a/22734721
 <blockquote>
 The result of E1 << E2 is E1 left-shifted E2 bit positions; vacated bits
 are filled with zeros. If E1 has an unsigned type, the value of the result
 is E1Ã2E2, reduced modulo one more than the maximum value representable in
 the result type. If E1 has a signed type and non-negative value, and
 E1Ã2E2 is representable in the result type, then that is the resulting
 value; otherwise, the behaviour is undefined.
 ...
 If E1 is a signed type with negative value then the behaviour of left
 shifting is undefined. This is an easy route to undefined behaviour which
 may easily get overlooked.
 </blockquote>

 The tests then succeed on OS X 10.10.2 / Xcode 6.3 beta / clang 3.7.0 with
 integer undefined behaviour checks / x86_64.

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/13192#comment:61>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online
_______________________________________________
tor-bugs mailing list
tor-bugs@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-bugs