mapscript crashes on getFeature
Umberto Nicoletti
umberto.nicoletti at GMAIL.COM
Wed Nov 16 23:32:52 PST 2005
I suggest that Query.java be incorporated in mapserver source
distribution (with author's permission, of course) as it will help in
spot similar errors in future: it will work as a kind of test suite,
even if in fact it is not a proper test suite.
Best regards,
Umberto
On 11/16/05, Donovan <donovan at functionfour.ca> wrote:
> >You've got my attention. Donovan do you have any more specific information
> regarding the GEOS crash? --Steve
>
> Sure,
>
> I'm using mapserver 4.8.0beta - but 4.6.0 breaks too
> --geos-2.1.1 from rpm (gdal-1.2.6 and proj-4.4.9 also)
> --FedoraCore3 with java1.5 (glibc-2.3.5)
>
> I think the crash occurs any time a shapeObj is returned.
>
> I modified the java mapscript example class DrawMap from the mapserver
> source tree to demonstrate the problem - Query.java is attached.
>
> Without GEOS, Query.java generates the png but with GEOS, it looks like this:
> # cd ~/mapserver-4.8.0-beta1/mapscript/java
> # javac -classpath ./:examples/:./mapscript.jar -d examples/ examples/*.java
> # java -classpath ./:examples/:./mapscript.jar -Djava.library.path=. Query
> ../../tests/test.map ./map.png
>
> > The map will be drawn to:./map.png
> > *** glibc detected *** malloc(): memory corruption: 0xb1c11ee8 ***
> > Aborted
>
> From poking around in the source i think the crash happens while freeing the
> geometry pointer in the shape obj but i didn't get any further.
>
> If there is anything else i can provide or if some testing is required i'd
> be happy to help...
>
> Thanks for your attention
>
>
> ----mapscript/java/examples/Query.java----cut-here--
> import edu.umn.gis.mapscript.*;
>
> public class Query {
>
> public static void usage() {
> System.err.println("Usage: Query {mapfile} {outfile}");
> System.exit(-1);
> }
>
> public static void main(String[] args) {
> if (args.length != 2) usage();
> try
> {
> System.loadLibrary("mapscript");
> }
> catch(UnsatisfiedLinkError ule)
> {
> System.err.println(ule);
> System.exit(-1);
> }
>
> mapObj map = new mapObj(args[0]);
> map.getImagecolor().setRGB(153, 153, 204);
> styleObj st = map.getLayer(1).getClass(0).getStyle(0);
> st.getColor().setHex("#000000");
> imageObj img = map.draw();
> System.out.println("The map will be drawn to:"+args[1]);
>
> layerObj layer = map.getLayerByName("POLYGON");
> layer.setTemplate("dummy.template");
> layer.queryByPoint(map,new pointObj(0.10,51.4,0),
> mapscriptConstants.MS_MULTIPLE,-1);
> resultCacheObj results = layer.getResults();
> layer.open();
> for (int i=0;i<results.getNumresults();i++) {
> resultCacheMemberObj result = results.getResult(i);
> //CRASH HAPPENS ON NEXT LINE
> shapeObj feature = layer.getFeature(result.getShapeindex(),-1);
> }
> layer.close();
>
> img.save(args[1], map);
> }
> }
> -----End of Query.java----------
>
More information about the MapServer-users
mailing list