>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----------