[ZODB-Dev] ZODB segfaults...

Kendall Clark kendall@monkeyfist.com
Tue, 12 Feb 2002 10:51:26 -0600


>>>>> "jeremy" == Jeremy Hylton <jeremy@zope.com> writes:
  jeremy> Did you run test.py before installing ZODB?  Was it
  jeremy> successful?  If you run python -v, python will print some
  jeremy> info about each module and .so it is loading.  That output
  jeremy> will help pinpoint the problem.

Heh, I got the same error from python test.py (but I'm stubbon and
installed anyway. :> )

Here's the output of python -v ...

[kendall@chomsky]$ python2 -v 
<snippage>
Python 2.2 (#1, Dec 27 2001, 10:41:31) 
[GCC 2.7.2.3] on linux2
dlopen("/usr/lib/python2.2/lib-dynload/readline.so", 2);
import readline # dynamically loaded from /usr/lib/python2.2/lib-dynload/readline.so
>>> import ZODB
import ZODB # directory /usr/lib/python2.2/site-packages/ZODB
# /usr/lib/python2.2/site-packages/ZODB/__init__.pyc matches /usr/lib/python2.2/site-packages/ZODB/__init__.py
import ZODB # precompiled from /usr/lib/python2.2/site-packages/ZODB/__init__.pyc
dlopen("/usr/lib/python2.2/site-packages/ExtensionClass.so", 2);
import ExtensionClass # dynamically loaded from /usr/lib/python2.2/site-packages/ExtensionClass.so
dlopen("/usr/lib/python2.2/site-packages/ZODB/TimeStamp.so", 2);
import ZODB.TimeStamp # dynamically loaded from /usr/lib/python2.2/site-packages/ZODB/TimeStamp.so
dlopen("/usr/lib/python2.2/site-packages/ZODB/cPersistence.so", 2);
import ZODB.cPersistence # dynamically loaded from /usr/lib/python2.2/site-packages/ZODB/cPersistence.so
import Persistence # directory /usr/lib/python2.2/site-packages/Persistence
# /usr/lib/python2.2/site-packages/Persistence/__init__.pyc matches /usr/lib/python2.2/site-packages/Persistence/__init__.py
import Persistence # precompiled from /usr/lib/python2.2/site-packages/Persistence/__init__.pyc
dlopen("/usr/lib/python2.2/lib-dynload/cStringIO.so", 2);
import cStringIO # dynamically loaded from /usr/lib/python2.2/lib-dynload/cStringIO.so
dlopen("/usr/lib/python2.2/lib-dynload/cPickle.so", 2);
# /usr/lib/python2.2/copy_reg.pyc matches /usr/lib/python2.2/copy_reg.py
import copy_reg # precompiled from /usr/lib/python2.2/copy_reg.pyc
# /usr/lib/python2.2/types.pyc matches /usr/lib/python2.2/types.py
import types # precompiled from /usr/lib/python2.2/types.pyc
# /usr/lib/python2.2/__future__.pyc matches /usr/lib/python2.2/__future__.py
import __future__ # precompiled from /usr/lib/python2.2/__future__.pyc
import cPickle # dynamically loaded from /usr/lib/python2.2/lib-dynload/cPickle.so
import zLOG # directory /usr/lib/python2.2/site-packages/zLOG
# /usr/lib/python2.2/site-packages/zLOG/__init__.pyc matches /usr/lib/python2.2/site-packages/zLOG/__init__.py
import zLOG # precompiled from /usr/lib/python2.2/site-packages/zLOG/__init__.pyc
# /usr/lib/python2.2/site-packages/zLOG/MinimalLogger.pyc matches /usr/lib/python2.2/site-packages/zLOG/MinimalLogger.py
import zLOG.MinimalLogger # precompiled from /usr/lib/python2.2/site-packages/zLOG/MinimalLogger.pyc
# /usr/lib/python2.2/string.pyc matches /usr/lib/python2.2/string.py
import string # precompiled from /usr/lib/python2.2/string.pyc
dlopen("/usr/lib/python2.2/lib-dynload/strop.so", 2);
import strop # dynamically loaded from /usr/lib/python2.2/lib-dynload/strop.so
dlopen("/usr/lib/python2.2/lib-dynload/time.so", 2);
import time # dynamically loaded from /usr/lib/python2.2/lib-dynload/time.so
# /usr/lib/python2.2/site-packages/zLOG/FormatException.pyc matches /usr/lib/python2.2/site-packages/zLOG/FormatException.py
import zLOG.FormatException # precompiled from /usr/lib/python2.2/site-packages/zLOG/FormatException.pyc
# /usr/lib/python2.2/site-packages/ZODB/PersistentMapping.pyc matches /usr/lib/python2.2/site-packages/ZODB/PersistentMapping.py
import ZODB.PersistentMapping # precompiled from /usr/lib/python2.2/site-packages/ZODB/PersistentMapping.pyc
Segmentation fault

-- Probably not very helpful.

  jeremy> Did you get a core dump or just a segfault?  If you've got a
  jeremy> core dump, a gdb stack trace would be helpful.  If you're
  jeremy> not getting a core dump, you could always run under the
  jeremy> debugger.

No core dump, just a segfault. But,

[kendall@chomsky]$ gdb /usr/bin/python2
GNU gdb 4.17.0.4 with Linux/x86 hardware watchpoint and FPU support
Copyright 1998 Free Software Foundation, Inc.
This GDB was configured as "i386-redhat-linux"...(no debugging symbols found)...
(gdb) run
Starting program: /usr/bin/python2 
Python 2.2 (#1, Dec 27 2001, 10:41:31) 
[GCC 2.7.2.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import ZODB

Program received signal SIGSEGV, Segmentation fault.
0x401528c8 in initializeBaseExtensionClass (self=0x0) at ExtensionClass/src/ExtensionClass.c:1504
1504      abstract=self->tp_basicsize == sizeof(PyPureMixinObject);

Finally, here's a backtrace,
(gdb) bt
#0  0x401528c8 in initializeBaseExtensionClass (self=0x0) at ExtensionClass/src/ExtensionClass.c:1504
#1  0x4015cb26 in export_type (dict=0x8152680, name=0x815263c "\002", typ=0x0)
    at ExtensionClass/src/ExtensionClass.c:3488
#2  0x805d658 in PyTuple_Fini ()
#3  0x80a5072 in PyObject_Call ()
#4  0x8076982 in PyEval_CallObjectWithKeywords ()
#5  0x80a5157 in PyObject_CallFunction ()
#6  0x8077a08 in _PyEval_SliceIndex ()
#7  0x8074088 in PyEval_EvalCode ()
#8  0x8075ea8 in PyEval_EvalCodeEx ()
#9  0x80724a3 in PyEval_EvalCode ()
#10 0x8089228 in PyImport_ExecCodeModuleEx ()
#11 0x8089675 in PyImport_ExecCodeModuleEx ()
#12 0x8089dc4 in PyImport_ExecCodeModuleEx ()
#13 0x808aa50 in PyImport_ImportModuleEx ()
#14 0x808a625 in PyImport_ImportModuleEx ()
#15 0x808a1fc in PyImport_ImportModule ()
#16 0x808a3a3 in PyImport_ImportModuleEx ()
#17 0x80c3485 in _PyBuiltin_Init ()
#18 0x80c0479 in PyCFunction_Call ()
#19 0x80a5072 in PyObject_Call ()
#20 0x8076982 in PyEval_CallObjectWithKeywords ()
#21 0x8074995 in PyEval_EvalCode ()
#22 0x8075ea8 in PyEval_EvalCodeEx ()
#23 0x80724a3 in PyEval_EvalCode ()
#24 0x8089228 in PyImport_ExecCodeModuleEx ()
#25 0x8089675 in PyImport_ExecCodeModuleEx ()
#26 0x8089dc4 in PyImport_ExecCodeModuleEx ()
#27 0x80897ba in PyImport_ExecCodeModuleEx ()
#28 0x8089df3 in PyImport_ExecCodeModuleEx ()
#29 0x808aa50 in PyImport_ImportModuleEx ()
#30 0x808a625 in PyImport_ImportModuleEx ()
#31 0x808a1fc in PyImport_ImportModule ()
#32 0x808a3a3 in PyImport_ImportModuleEx ()
#33 0x80c3485 in _PyBuiltin_Init ()
#34 0x80c0479 in PyCFunction_Call ()
#35 0x80a5072 in PyObject_Call ()
#36 0x8076982 in PyEval_CallObjectWithKeywords ()
#37 0x8074995 in PyEval_EvalCode ()
#38 0x8075ea8 in PyEval_EvalCodeEx ()
#39 0x80724a3 in PyEval_EvalCode ()
#40 0x80919fc in PyRun_FileExFlags ()
#41 0x8090c5c in PyRun_InteractiveOneFlags ()
#42 0x8090aaa in PyRun_InteractiveLoopFlags ()
#43 0x80909b2 in PyRun_AnyFileExFlags ()
#44 0x8052b86 in Py_Main ()
#45 0x8052452 in main ()

Hope that helps. Seems that self in ExtensionClass.c:1504 is set to
null or not properly initialized somewhere in that stack; but then I'm
not a C programmer. (And, yeah, my Py binary is stripped. Sorry
about that.)

Thanks,
Kendall Clark