Michal Petrucha <[email protected]> added the comment:
@dmalcolm:
As for the gdb example, you need to add --eval-command="set
_Py_HashSecret_Initialized=1", otherwise _Py_HashSecret will get overwritten
immediately after it is set by gdb, either to 0 if run without the -R switch,
or to a random value.
With the fresh pair of values Vlado provided, I managed to reproduce the
collisions on Python 2.7.3, i686 (output trimmed like you did):
for __PREFIX in 0x0 0x4700 0xdead00 0xcafe00; do gdb --eval-command="break
_PyRandom_Init" --eval-command="run" --eval-command="print _Py_HashSecret"
--eval-command="set _Py_HashSecret.prefix=${__PREFIX}" --eval-command="set
_Py_HashSecret_Initialized=1" --eval-command="print _Py_HashSecret"
--eval-command="continue" -eval-command="continue" --args ./python -c
"a='\x00\xcf\x0b\x96\x19'; b='\x00\x6d\x29\x45\x18'; print(hash(a));
print(hash(b))"; done
$1 = {prefix = 0, suffix = 0}
$2 = {prefix = 0, suffix = 0}
Continuing.
1220138288
1220138288
$1 = {prefix = 0, suffix = 0}
$2 = {prefix = 18176, suffix = 0}
Continuing.
-1483212240
-1483212240
$1 = {prefix = 0, suffix = 0}
$2 = {prefix = 14593280, suffix = 0}
Continuing.
-972665808
-972665808
$1 = {prefix = 0, suffix = 0}
$2 = {prefix = 13303296, suffix = 0}
Continuing.
1003122480
1003122480
----------
_______________________________________
Python tracker <[email protected]>
<http://bugs.python.org/issue14621>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com