[Numpy-discussion] segfault problem with numpy and pickle

David Bolme bolme1234 at comcast.net
Thu Jan 24 15:18:45 EST 2008


A am having some trouble when pickling numpy arrays.  Basically I use  
one python script to create the array and then pickle it.  When I load  
the pickled array using a different python script it appears to load  
fine.  When I try to perform a matrix multiply on the array with a  
vector (using dot) python crashes with a segmentation violation.  The  
array contains 64bit floating point numbers and has a shape of (47,  
16384) and the vector has a shape of (16384,1).  Other shapes I have  
tested also have this problem.  A workaround is to create a new array  
that is initialized with the data from the first. For example:

a = array(pickle.loads(buffer))

After calling this command the script runs fine.

Here is some information on my system setup:
OS: Macos X Leopard 64bit Intel
numpy.version.version = 1.0.5.dev4624

Below is a simple script that reproduces this error on my system.  I  
would like to get this problem fixed so that I don't have to use this  
work around every time I load a pickled array.  Is this a known bug? I  
could not find it in the bug tracker.

Thanks in advance for the help.

Dave

import pickle
from numpy import array,dot,ones,random

# Create the arrays
a = random.normal(size=(47,128*128))
b = ones((128*128,2))
c = ones((128*128,1))

# Test dot
print "Computing dot product on original arrays..."
print dot(a,b).shape # WORKS
print dot(a,c).shape # WORKS

print "Pickle and unpickel the array with workaround."
buffer = pickle.dumps(a)
a = array(pickle.loads(buffer))

# Test dot
print "Computing dot product with workaround..."
print dot(a,b).shape # WORKS
print dot(a,c).shape # WORKS

print "Pickle and unpickel the array without workaround."
a = pickle.loads(buffer)

# Test dot
print "Computing dot product without workaround..."
print dot(a,b).shape # WORKS
print dot(a,c).shape # CRASH

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/numpy-discussion/attachments/20080124/d4afef37/attachment.html>


More information about the NumPy-Discussion mailing list