Hi, unfortunately 32-bit ;-) I tried digging around, but I don't know much about tcl/tk. Seeing a char string argv atol'ed into a pointer address left me with an uncomfortable feeling... Anyway her is the argv value
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 0xb7c516c0 (LWP 5638)] 0xb6f4500e in PyAggImagePhoto (clientdata=0x0, interp=0x87396f0, argc=5, argv=0xbfc8874c) at src/_transforms.h:362 362 Point* ll_api() {return _ll;} Current language: auto; currently c++ (gdb) p argv[4] $1 = 0x895d0f0 "3085736160" (gdb) p bboxo $2 = (PyObject *) 0x7fffffff The cast doesn't seem to work. Cheers, Malte On 14/05/2008, at 10:47 PM, Michael Droettboom wrote: > Ouch! The way that pointer is obtained is really weird (though I > believe it is a common idiom in Tcl extensions): > > PyAggImagePhoto(ClientData clientdata, Tcl_Interp* interp, > int argc, char **argv) { > ... > bboxo = (PyObject*)atol(argv[4]); > if (bboxo != Py_None) { > bbox = (Bbox*)bboxo; > > That means the pointer comes to us encoded as a string of digits, > which gets converted to an integer, cast to a (PyObject*), and then > cast to a (Bbox*) (which is a subclass of PyObject, in the C-object- > oriented sense). That's just one of those things you'd rather not > be doing ;) > > Are you running the 64-bit version of OpenSUSE by any chance? That > might explain this if the atol call is overflowing. That's only > theoretical, as I think it *should* work. atol is supposed to > return a "long", which is supposed to be 64-bit on a 64-bit Linux > machine. Could you try replacing "atol" with "atoll", recompile > and see what happens? Do you get any warnings during compilation > of _tkagg.cpp? > > Failing that, it would be useful, I suppose, to print out "argv[4]" > from the debugger. > > Thanks for helping with this. Hopefully we're honing in on something. > > Mike > > Malte Marquarding wrote: >> Hi, >> >> The segv also occurs in matplotlib-0.90.1. A clean build doesn't >> help. >> >> Here is the gdb output, looks like something is pointing into >> nirvana.. >> >> (gdb) p bboxo >> $1 = <value optimized out> >> (gdb) p bbox >> $2 = (Bbox *) 0x7ffffffb >> (gdb) p bbox->_ll >> Cannot access memory at address 0x7ffffffb >> >> Cheers, >> Malte >> >> On 13/05/2008, at 10:19 PM, Michael Droettboom wrote: >> >>> p bboxo >>> p bbox >>> p bbox->_ll >> >> >> >> >> > > -- > Michael Droettboom > Science Software Branch > Operations and Engineering Division > Space Telescope Science Institute > Operated by AURA for NASA > Malte Marquarding [EMAIL PROTECTED] ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users