[mapserver-users] MapScript migration problems

Rob gis at vanbooth.com
Fri Jun 6 09:01:41 EDT 2008


Hi

I'm trying to migrate my MapServer 4.8.6 mapscript application to 5.0.2.

I've seen the following webpages, and this has identified a number of
things that I need to do, which I have started on

http://mapserver.gis.umn.edu/download/previous/mapserver_4_10/migration_guide_48_410
http://trac.osgeo.org/mapserver/browser/tags/rel-5-0-0/mapserver/MIGRATION_GUIDE.TXT


I've had some success so far, with shapefiles, rasters and cascaded
WMS feeds, but I've just hit a problem when trying to view an Oracle
layer.

I am seeing the following error.

"msOracleSpatialLayerNextShape(): OracleSpatial error :  No memory
avaliable to allocate the values" [TYPO in the error message BTW]

This seems to be for any Oracle layer, including a test layer with
only 12 points in it, so I can't believe it really is an available
memory issue.

Looking at the MapServer code directly, this error message comes from here

        shape->values = (char **)malloc( sizeof(char*) * shape->numvalues );
        if (shape->values == NULL)
        {
            msSetError( MS_ORACLESPATIALERR, "No memory avaliable to
allocate the values", "msOracleSpatialLayerNextShape()" );
            return MS_FAILURE;
        }

For some background, my application is running on AIX, and I from what
I can gather thats an issue with regards to MALLOC.  From our internal
documentation of how we resolved the issue on 4.8.6

"Malloc on AIX differs from other platforms, in particular attempting
to allocate zero bytes e.g. malloc(0) does not work on AIX. This
causes problems with mapserver, where malloc(0) is used, often to
create an empty structure then add 'points' etc to this structure.
This problem allows the mapserver to be built but executing the server
causes SIGSEGV-11 memory errors when the code attempts to reference
the memory it expects to have been allocated by malloc(0).

To fix this malloc is replaced with some rpl_malloc.c macro so as to
handle malloc(0)

Add rpl_malloc.o to the object list in the Makefile

OBJS= maptemplate.o …… rpl_malloc.o $(EPPL_OBJ)

And define the macro to override malloc with rpl_malloc in the file
mapprimitive.c

/* Deal with AIX malloc(0) issues */

#define malloc rpl_malloc

"

We've done this again this time round, and resolved the SIGSEGV issues
that still existed.
I have no idea whether this is part of the issue, but I thought it
might be relevant given the location of the error in the code.  If
not, then doesn anybody of any of the parameters needed for an
OracleSpatial layer have changed between the versions?

MTIA

Rob


More information about the mapserver-users mailing list