[geos-devel] SIGABRT in GEOS using the C-API

strk strk at keybit.net
Wed Sep 1 03:37:49 EDT 2010


On Tue, Aug 31, 2010 at 08:26:29PM -0400, Alex Trofast wrote:
> Greetings all, I'm getting a SIGABRT in GEOS, but not on all Linux distros. The following is a partial backtrace from Ingres:

> #2  0x00000030e4a2b7b5 in __assert_fail () from /lib64/libc.so.6
> #3  0x00007fa6f3ea2623 in geos::geom::GeometryComponentFilter::filter_ro (this=<value optimized out>, geom=<value optimized out>) at GeometryComponentFilter.cpp:35
> #4  0x00007fa6f3eab47c in geos::geom::Polygon::apply_ro (this=0x7fa6cc03b0d0, filter=0x7fa6e09ae900) at Polygon.cpp:402
> #5  0x00007fa6f3f038c5 in getLines (this=0x7fa6e09ae9b0) at ../../../include/geos/geom/util/LinearComponentExtracter.h:57

Sounds like a compiler bug.
GeometryComponentFilter::filter_ro is a virtual function.
LinearComponentExtracter is the actual implementation for
this case (see last step in trace).
You would _always_ receive a SIGABRT if
GeometryComponentFilter::filter_ro is entered rather than
LinearComponentExtracter::filter_ro.

Indeed GeometryComponentFilter::filter_ro and ::filter_rw could
be made pure abstract methods.

--strk; 

  ()   Free GIS & Flash consultant/developer
  /\   http://strk.keybit.net/services.html


More information about the geos-devel mailing list