[Python-Dev] segfaults due to hash randomization in C OrderedDict

MRAB python at mrabarnett.plus.com
Fri May 22 00:41:47 CEST 2015


On 2015-05-21 23:17, Eric Snow wrote:
 > On Thu, May 21, 2015 at 4:06 PM, MRAB <python at mrabarnett.plus.com> wrote:
 > > On 2015-05-21 22:52, Eric Snow wrote:
 > >> Good catch.  Unfortunately, sticking "keys = ((PyDictObject
 > >> *)od)->ma_keys;" right after "hash = ..." did not make a difference.
 > >> I still get the same segfault.
 > >
 > > So, does it change sometimes?
 >
 > The segfault is consistent if I use the same seed (e.g. 7):
 >
 >   PYTHONHASHSEED=7 ./python -m test.regrtest -m test_basic 
test_configparser
 >
 > Some seeds always segfault and some seeds never segfault.
 >
OK, another thought.

In "_odict_get_index" again, you say that if the hash has changed, the 
dict might've
been resized, but could the dict be resized _without_ the hash changing?

Could the value of "keys" still become invalid even if the hash is the same?



More information about the Python-Dev mailing list