Bus error when using flat on sliced, memmap'd array
Hi all, I encountered an odd bug today that I wanted to bring to everyone's attention. First the code:
import numpy as np shape = (8, 8) dtype = np.dtype(np.uint8) image = np.random.randint(0, 256, shape).astype(dtype) image.tofile("test_image.bin") image = np.memmap("test_image.bin", dtype=dtype, shape=shape, mode='r') arr = image[::2,::2] np.sum(arr.flat)
On my system (numpy 1.6.1, git revision 68538b74483009c2c2d1644ef00397014f95a696, on OSX, python 2.7.3 (32-bit)), this causes a bus error when run. Here's what I've discovered so far about this: - the bus error only occurs with mode 'r' - the dimensionality of the array appears to be irrelevant - if the array slice does not change the strides, the bus error does not occur - no 'arr.flat', no bus error - Other aggregating functions (e.g. fmin.reduce) will induce the error - Iterating over arr.flat will *not* cause a bus error Based on this, I suspect the issue is with the C-facing side of the flat iterator. Enjoy! Chris
participants (3)
-
chris farrow
-
Travis Oliphant
-
Val Kalatsky