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

Reply via email to