On Oct 3, 2009, at 7:52 PM, Paul Balomiri wrote:

> Hi,
>
> I encountered a similar problem to
> http://lists.osgeo.org/pipermail/geos-devel/2009-July/004280.html ,  
> which is
> at the exact same execution point.
>
> I am using shapely 1.0.13. As the lib is linked with PyDLL into
> python, the GIL (Global Interpreter Log) is used to schedule library
> entrance ( = no python code (in any thread) runs concurrently),
> so my first guess was, that an init error or an error in handling the
> global Context might cause the segfault.
>
> The backtrace I got from gdb is
>
>
> [Switching to Thread 0x7fffe7f076f0 (LWP 6598)]
> geos::io::WKBWriter::write (this=0x7fffeff120c0, g...@0xd8005270,
> o...@0x7fffeff11f50) at WKBWriter.cpp:77
> 77              switch (g.getGeometryTypeId()) {
> Current language:  auto; currently c++
> (gdb) where
> #0  geos::io::WKBWriter::write (this=0x7fffeff120c0, g...@0xd8005270,
> o...@0x7fffeff11f50) at WKBWriter.cpp:77
> #1  0x00007fffe6883549 in GEOSGeomToWKB_buf_r (extHandle=0xa5beb0,
> g=0xd8005270, size=0x14407f0) at geos_ts_c.cpp:948
> #2  0x00007fffe6aa53b8 in ffi_call_unix64 () at
> /build/buildd/python2.6-2.6.2/Modules/_ctypes/libffi/src/x86/ 
> unix64.S:75
> Python stacktrace:
>
> [Python Stack]
>
> #46 0x0000000000417ae9 in _start () at ../sysdeps/x86_64/elf/start.S: 
> 113
>
> A full stacktrace is included as an attachment. I have augmented the
> stacktrace with the python
> stackframe where the stack frame is in python code.
>
> I was wondering why GEOSGeomToWKB_buf is called, but
> GEOSGeomToWKB_buf_r appears on the stacktrace.
>
> I do use threads in the application, but  only the main thread has
> calling points to shapely.
> Also the application uses SQLAlchemy with the user defined Geometry
> type from shapely. The gluecode is part of mapfish.
>
> Perhaps you have some ideas about why the segfault shows up. I'm not
> familiar with the way
> shapely handles GEOS c pointers. In gdb the geos geometry object
> g...@0xd8005270 points to an adress
>
> trying to access the geometry object reveals
>
> (gdb) p g
> $1 = (const geos::geom::Geometry &) @0xd8005270: <error reading  
> variable>
>
>
> regards,
> Paul

Hi Paul,

I'm sorry you're experiencing trouble with Shapely. If you can write a  
Python program that doesn't depend on MapFish or SQLAlchemy or PostGIS  
(I don't have that stack running right now) that reliably crashes,  
I'll get right on it. Maybe it's just a matter of writing out WKB from  
multiple threads at once.

If you're using GEOS 3.1, the non-reentrant API is just a thin layer  
over the reentrant one, so EOSGeomToWKB_buf_r will always be called.

Cheers,

--
Sean

_______________________________________________
Community mailing list
[email protected]
http://lists.gispython.org/mailman/listinfo/community

Reply via email to