Message29642
While building python 2.4.3 with the current gcc trunk (soon to be 4.2),
I uncovered a signed integer overflows bug in Python with the help of
one of the gcc developers. The bug I observed is documented in this
gcc mailing list message...
http://gcc.gnu.org/ml/gcc/2006-08/msg00436.html
The gcc developer comments about its origin are in the messages...
http://gcc.gnu.org/ml/gcc/2006-08/msg00434.html
http://gcc.gnu.org/ml/gcc/2006-08/msg00442.html
which in short says...
It *is* a bug in python, here is the proof:
https://codespeak.net/viewvc/vendor/cpython/Python-r243/dist/src/
Objects/intobject.c?revision=25647&view=markup
Function
* i_divmod*(*register* *long* x, *register* *long* y,
the following lines:
/ /* (-sys.maxint-1)/-1 is the only overflow case. *//
*if* (y == -1 && x < 0 && x == -x)
*return* DIVMOD_OVERFLOW;
If overflow is barred then x==-x may happen only when x==0.
This conflicts with x<0, which means that the compiler may assume
that
x<0 && x==-x
always yields false. This may allow the compiler to eliminate the whole
if
statement. Hence, clearly python is at fault. |
|
| Date |
User |
Action |
Args |
| 2007-08-23 14:42:16 | admin | link | issue1545668 messages |
| 2007-08-23 14:42:16 | admin | create | |
|