cPickle segfault with nested dicts in threaded env

  • Thread starter Kenneth Dombrowski
  • Start date
K

Kenneth Dombrowski

Hi all,

Before creating an issue @ bugs.python.org I wanted to run the
following by everyone

We are having a difficult time with what looks like a cPickle issue
when given a data structure containing >15 nested dictionaries, but
only when threading is involved

Environment is FreeBSD 8, Python 2.5.5

The following diff contains an addition for
/usr/ports/lang/python25/work/Python-2.5.5/Lib/test/test_cpickle.py
which reproduces the issue

kenneth@kenneth0 Python-2.5.5 $ cat
/tmp/test_cpickle.nested_dicts_in_threaded_env.diff
1a2
import copy 2a4
import threading 93a96,105
def test_nested_dicts_in_threaded_env(self):
# segfaults on python2.5.5/FreeBSD 8.0-RELEASE-p2
def threadloop():
x = {}
for i in range(16):
x = {i:copy.copy(x)}
cPickle.dumps(x, 2)
t = threading.Thread(target=threadloop)
t.start()

Any thoughts will be appreciated, thanks for looking,
Kenneth
 
C

Carl Banks

Hi all,

Before creating an issue @ bugs.python.org I wanted to run the
following by everyone

We are having a difficult time with what looks like a cPickle issue
when given a data structure containing >15 nested dictionaries, but
only when threading is involved

Environment is FreeBSD 8, Python 2.5.5

Since Python 2.7 is released, Python 2.5 is no longer accepting bug
fixes, only security fixes. So be aware.

The following diff contains an addition for
/usr/ports/lang/python25/work/Python-2.5.5/Lib/test/test_cpickle.py
which reproduces the issue

kenneth@kenneth0 Python-2.5.5 $ cat
/tmp/test_cpickle.nested_dicts_in_threaded_env.diff
1a2


Any thoughts will be appreciated, thanks for looking,

Bug. Python should never segfault (unless you're doing bad things
with ctypes). Even if threading isn't supported in this case, it
should fail with an exception or have undefined behavior, not
segfault. I would check to see if the same problem exists on 2.7, and
file a bug report if so. If they fix it in 2.7 maybe you could apply
the same fix to your own 2.5.


Carl Banks
 
P

Paul Rubin

Carl Banks said:
Since Python 2.7 is released, Python 2.5 is no longer accepting bug
fixes, only security fixes. So be aware.

Segfaults should be treated as security holes unless there's convincing
reasons that no exploit is possible. So the bug should be reported
against 2.5 as well as later versions.
 
K

Kenneth Dombrowski

Segfaults should be treated as security holes unless there's convincing
reasons that no exploit is possible.  So the bug should be reported
against 2.5 as well as later versions.

Hi Paul,

Thanks for the input, it sounds reasonable to me. I reported it & the
maintainers can decide what to do with it:
http://bugs.python.org/issue9812

Thanks again everyone,
Kenneth
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Members online

Forum statistics

Threads
473,734
Messages
2,569,441
Members
44,832
Latest member
GlennSmall

Latest Threads

Top