[egenix-users] SIGBUS from mx/BeeBase/mxBeeBase/btr.c on HP-UX, Alpha, IRIX, Solaris

Albert Chin egenix-users at mlists.thewrittenword.com
Wed Jan 11 09:22:50 CET 2006


On Wed, Jan 11, 2006 at 03:41:38PM +0100, M.-A. Lemburg wrote:
> Albert Chin wrote:
> > I've built egenix-mx-base 2.0.6 on HP-UX 11.23/PA-RISC, 11.23/IA64,
> > Tru64 UNIX 4.0D, 5.1, IRIX 6.5, and Solaris. All give a SIGBUS error
> > when running the mx/BeeBase/mxBeeBase/test.py script. GDB gives the
> > following on Solaris:
> > 
> >   $ gdb python core 
> >   ...
> >   #0  0xfee7a104 in bInsertKey (h=0x23f648, key=0x1b2db4, rec=1)
> >       at mx/BeeBase/mxBeeBase/btr.c:1036
> >   1036                rec(mkey) = rec;
> >   gdb> bt
> >   #0  0xfee7a104 in bInsertKey (h=0x23f648, key=0x1b2db4, rec=1)
> >       at mx/BeeBase/mxBeeBase/btr.c:1036
> >   #1  0xfee73104 in mxBeeIndex_SetKey (self=0x1bbcd0, obj=0x1b2da0, 
> >       recaddr=0x1cbd90) at mx/BeeBase/mxBeeBase/mxBeeBase.c:497
> >   #2  0xfee752c0 in mxBeeIndex_AssignSubscript (self=0x1bbcd0,
> >   obj=0x1b2da0, 
> >       recaddr=0x1cbd90) at mx/BeeBase/mxBeeBase/mxBeeBase.c:1158
> >   #3  0x000220b0 in PyObject_SetItem ()
> >   #4  0x000b9ba0 in eval_frame ()
> >   #5  0x000bece8 in PyEval_EvalCodeEx ()
> >   #6  0x000b6b1c in PyEval_EvalCode ()
> >   #7  0x000f6d4c in run_node ()
> >   #8  0x000f6cc8 in run_err_node ()
> >   #9  0x000f6c68 in PyRun_FileExFlags ()
> >   #10 0x000f50ac in PyRun_SimpleFileExFlags ()
> >   #11 0x000f44e8 in PyRun_AnyFileExFlags ()
> >   #12 0x0001cd40 in Py_Main ()
> >   #13 0x0001be28 in main ()
> > 
> > Any ideas?
> 
> Could you try the same with our latest snapshot ?!
> 
> http://www.egenix.com/files/python/egenix-mx-base-2.1.0-2005-05-01.zip

Same problem.

> Which compiler did you use to compile the package ?

GCC 3.4.3.

> Do you get the same segfaults when compiling the package
> without optimization ?

Yes. The above was built with:
  -DNDEBUG -D_REENTRANT -D_FILE_OFFSET_BITS=64 -g -mcpu=v8

I started debugging the code and made the following patch to the
latest snapshot:
--- btr.c.orig	Wed Jan 30 13:34:24 2002
+++ btr.c	Wed Jan 11 09:20:43 2006
@@ -1034,6 +1034,23 @@
 
             /* insert new key */
             memcpy(key(mkey), key, h->keySize);
+            {
+                char *mkey1;
+                bRecAddr *mkey2;
+                bRecAddr val;
+
+                mkey1 = (char *)(mkey) + h->keySize;
+                mkey2 = (bRecAddr *)((char *)(mkey) + h->keySize);
+printf("mkey1: %lx\n", mkey1);
+printf("mkey2: %lx\n", mkey2);
+                *mkey1 = 0;
+                *(mkey1 + 1) = 0;
+                *(mkey1 + 2) = 0;
+                *(mkey1 + 3) = 1;
+                val = *mkey2;
+printf("*mkey2: %lu\n", *mkey2);
+printf("mkey1: %lx\n", mkey1);
+            }
             rec(mkey) = rec;
             childGE(mkey) = 0;
             ct(buf)++;

With this patch the segfault occurs at:
#0  0xfee7a4f0 in bInsertKey (h=0x1be978, key=0x188ad4, rec=1)
    at mx/BeeBase/mxBeeBase/btr.c:1050
1050                    val = *mkey2;

Does this help?

-- 
albert chin (china at thewrittenword.com)



More information about the egenix-users mailing list