Hi, I'm getting a segfault when using python objects with record arrays. The code (below) basically assigns a single datetime object to a slice of a column in the record array and then python segfaults as soon as I try to access those array values. I'm using the latest svn version of numpy compiled with gcc 3.4.1 on Solaris (intel). Any ideas why this is happening? A reference counting problem maybe? Thanks for taking a look. Sameer johnh@flag:~> gcc --version gcc (GCC) 3.4.1 Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. johnh@flag:~> uname -a SunOS flag 5.10 Generic_118855-15 i86pc i386 i86pc johnh@flag:~> python -V Python 2.4.2 johnh@flag:~> cat tmp.py import datetime import numpy as np print np.__version__ def myfunc(N): newrec = np.empty(N, dtype=[('date', '|O4'), ('age', int)]) newrec['date'] = datetime.date(2002,1,1) newrec['age'] = 22 newrec['date'][1:12] = datetime.date(2003,1,1) return newrec.view(np.recarray) if __name__=='__main__': newrec = myfunc(29) print newrec['date'] johnh@flag:~> python ~/tmp.py 1.0.5.dev4812 Segmentation Fault (core dumped)
On Tue, 19 Feb 2008 17:10:10 -0600 "Sameer DCosta" <sameerslists@gmail.com> wrote:
Hi,
I'm getting a segfault when using python objects with record arrays. The code (below) basically assigns a single datetime object to a slice of a column in the record array and then python segfaults as soon as I try to access those array values. I'm using the latest svn version of numpy compiled with gcc 3.4.1 on Solaris (intel). Any ideas why this is happening? A reference counting problem maybe? Thanks for taking a look.
Sameer
johnh@flag:~> gcc --version gcc (GCC) 3.4.1 Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
johnh@flag:~> uname -a SunOS flag 5.10 Generic_118855-15 i86pc i386 i86pc johnh@flag:~> python -V Python 2.4.2 johnh@flag:~> cat tmp.py import datetime import numpy as np
print np.__version__
def myfunc(N): newrec = np.empty(N, dtype=[('date', '|O4'), ('age', int)]) newrec['date'] = datetime.date(2002,1,1) newrec['age'] = 22
newrec['date'][1:12] = datetime.date(2003,1,1) return newrec.view(np.recarray)
if __name__=='__main__': newrec = myfunc(29) print newrec['date']
johnh@flag:~> python ~/tmp.py 1.0.5.dev4812 Segmentation Fault (core dumped) _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion
No problem here python tmp.py 1.0.5.dev4811 [2002-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01] Can you send a backtrace (gdb) ? Nils
On Wed, Feb 20, 2008 at 1:22 AM, Nils Wagner <nwagner@iam.uni-stuttgart.de> wrote:
On Tue, 19 Feb 2008 17:10:10 -0600 "Sameer DCosta" <sameerslists@gmail.com> wrote:
Hi,
I'm getting a segfault when using python objects with record arrays. The code (below) basically assigns a single datetime object to a slice of a column in the record array and then python segfaults as soon as I try to access those array values. I'm using the latest svn version of numpy compiled with gcc 3.4.1 on Solaris (intel). Any ideas why this is happening? A reference counting problem maybe? Thanks for taking a look.
Sameer
johnh@flag:~> gcc --version gcc (GCC) 3.4.1 Copyright (C) 2004 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
johnh@flag:~> uname -a SunOS flag 5.10 Generic_118855-15 i86pc i386 i86pc johnh@flag:~> python -V Python 2.4.2 johnh@flag:~> cat tmp.py import datetime import numpy as np
print np.__version__
def myfunc(N): newrec = np.empty(N, dtype=[('date', '|O4'), ('age', int)]) newrec['date'] = datetime.date(2002,1,1) newrec['age'] = 22
newrec['date'][1:12] = datetime.date(2003,1,1) return newrec.view(np.recarray)
if __name__=='__main__': newrec = myfunc(29) print newrec['date']
johnh@flag:~> python ~/tmp.py 1.0.5.dev4812 Segmentation Fault (core dumped) _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion
No problem here
python tmp.py 1.0.5.dev4811 [2002-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2003-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01 2002-01-01]
Can you send a backtrace (gdb) ?
Nils _______________________________________________ Numpy-discussion mailing list Numpy-discussion@scipy.org http://projects.scipy.org/mailman/listinfo/numpy-discussion
Thanks for taking a look Nils. Can you try with a larger array (change the value of N from 29 to 2900)? I have attached the backtrace below. Program terminated with signal 11, Segmentation fault. #0 PyObject_Malloc (nbytes=24) at ../Objects/obmalloc.c:605 warning: Source file is more recent than executable. 605 if ((pool->freeblock = *(block **)bp) != NULL) { (gdb) backtrace #0 PyObject_Malloc (nbytes=24) at ../Objects/obmalloc.c:605 #1 0x08084eee in _PyObject_New (tp=0x8154980) at ../Objects/object.c:188 #2 0x0810a3f2 in range_iter (seq=0x841b676) at ../Objects/rangeobject.c:266 #3 0x08064d32 in PyObject_GetIter (o=0x841b676) at ../Objects/abstract.c:2228 #4 0x080bc202 in PyEval_EvalFrame (f=0x844ac1c) at ../Python/ceval.c:2107 #5 0x080bf87d in PyEval_EvalFrame (f=0x822e7dc) at ../Python/ceval.c:3640 #6 0x080c0272 in PyEval_EvalCodeEx (co=0x83ab4e0, globals=0x2, locals=0x81373e8, args=0x822e928, argcount=6, kws=0x81be290, kwcount=0, defs=0x82cb9d8, defcount=2, closure=0x0) at ../Python/ceval.c:2736 #7 0x080bdaf8 in PyEval_EvalFrame (f=0x81be104) at ../Python/ceval.c:3650 #8 0x080c0272 in PyEval_EvalCodeEx (co=0x83ab5e0, globals=0x2, locals=0x81373e8, args=0x0, argcount=7, kws=0x81a2ef0, kwcount=0, defs=0x83ae878, defcount=6, closure=0x0) at ../Python/ceval.c:2736 #9 0x080bdaf8 in PyEval_EvalFrame (f=0x81a2d74) at ../Python/ceval.c:3650 #10 0x080c0272 in PyEval_EvalCodeEx (co=0x83a87a0, globals=0x2, locals=0x81373e8, args=0x1, argcount=1, kws=0x0, kwcount=0, defs=0x83ac628, defcount=3, closure=0x0) at ../Python/ceval.c:2736 #11 0x08108e8e in function_call (func=0x83b3a04, arg=0x81f50ac, kw=0x0) at ../Objects/funcobject.c:548 #12 0x0806412c in PyObject_Call (func=0x841b000, arg=0x81f50ac, kw=0x0) at ../Objects/abstract.c:1795 #13 0x080b8427 in PyEval_CallObjectWithKeywords (func=0x83b3a04, arg=0x81f50ac, kw=0x0) at ../Python/ceval.c:3425 #14 0xd009f393 in array_str (self=0x2) at numpy/core/src/arrayobject.c:4259 #15 0x080850d2 in PyObject_Str (v=0x2) at ../Objects/object.c:347 #16 0x08085212 in internal_print (op=0x82a6708, fp=0x815bf90, flags=1, nesting=0) at ../Objects/object.c:241 #17 0x0806eafb in PyFile_WriteObject (v=0x82a6708, f=0x82a6708, flags=1) at ../Objects/fileobject.c:2036 #18 0x080bcc84 in PyEval_EvalFrame (f=0x819ccbc) at ../Python/ceval.c:1538 #19 0x080c0272 in PyEval_EvalCodeEx (co=0x81e70a0, globals=0x2, locals=0x81373e8, args=0x0, argcount=0, kws=0x0, kwcount=0, defs=0x0, defcount=0, closure=0x0) at ../Python/ceval.c:2736 #20 0x080c03e6 in PyEval_EvalCode (co=0x81e70a0, globals=0x8175824, locals=0x8175824) at ../Python/ceval.c:484 #21 0x080e5450 in PyRun_FileExFlags (fp=0x815bfb0, filename=0x8046927 "/home/titan/johnh/tmp.py", start=257, globals=0x8175824, locals=0x8175824, closeit=1, flags=0x81e70a0) at ../Python/pythonrun.c:1265 #22 0x080e5d36 in PyRun_SimpleFileExFlags (fp=0x815bfb0, filename=0x8046927 "/home/titan/johnh/tmp.py", closeit=1, flags=0x8046628) at ../Python/pythonrun.c:860 #23 0x0805d41b in Py_Main (argc=1, argv=0x8046740) at ../Modules/main.c:492 #24 0x0805cb0b in main (argc=2, argv=0x8046740) at ../Modules/python.c:23 Sameer
participants (2)
-
Nils Wagner
-
Sameer DCosta