[Mapserver-dev] Perl Mapscript 4 $image->free() bug

Eric Bridger eric at gomoos.org
Tue May 4 15:18:09 EDT 2004


Moving my Perl mapscript scripts to mapserver 4.0.2 and 4.2 beta1 I've
discovered a problem with the imageObj->free() method.

I think I recall some recent posts with similiar problems on FreeBSD
systems.

We are running: FreeBSD 4.8, Perl5.8.0
Both:
MapServer version 4.2-beta1 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG
OUTPUT=WBMP SUPPORTS=PROJ SUPPORTS=FREETYPE SUPPORTS=WMS_SERVER
SUPPORTS=WMS_CLIENT SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT
INPUT=POSTGIS INPUT=OGR INPUT=GDAL INPUT=SHAPEFILE

MapServer version 4.0.2 OUTPUT=GIF OUTPUT=PNG OUTPUT=JPEG OUTPUT=WBMP
SUPPORTS=PROJ SUPPORTS=FREETYPE SUPPORTS=WMS_SERVER SUPPORTS=WMS_CLIENT
SUPPORTS=WFS_SERVER SUPPORTS=WFS_CLIENT INPUT=POSTGIS INPUT=OGR
INPUT=GDAL INPUT=SHAPEFILE

--without-tiff GDAL 1.1.9

At first I thought it might be an Apache/mod_perl issue. Apache log
showed messages like:
httpd in free(): warning: junk pointer, too high to make sense
mapserver.log showed occasional:
Tue May  4 14:33:30 2004 - msFreeImage(): General error message. Unknown
image type

But the short script and map file below, run from the command line
produces ~ 900:
perl in free(): warning: page is already free
perl in free(): warning: junk pointer, too high to make sense
perl in free(): warning: chunk is already free

Simple work around is to stop using $imageObj->free() which fixes the
problem.

======= free_test.pl ================
#!/usr/bin/perl

use strict;
use mapscript4;
#OR
#use mapscript42;

$ENV{MS_ERRORFILE} = '/tmp/mapserver4.log';

my $image_name = "free_test.png";
my $map = new mapscript4::mapObj("free_test.map");

if(!$map){
    warn "New mapObj() error: $mapscript4::ms_error->{message}\n";
}

my $img = $map->draw();

if(!$img){
    warn "map->draw() error: $mapscript4::ms_error->{message}\n";
}

$map->drawLabelCache($img);

$img->save($image_name);

# This causes core dump. w/o it works fine.
$img->free();

exit;

======== free_test.map =================

 
MAP
  STATUS ON
  EXTENT -71.50 39.5 -63.0 46.0 # MINX MINY MAXX MAXY
  SIZE 600 459
  IMAGETYPE PNG
  UNITS DD
  IMAGECOLOR 152 245 255
  OUTPUTFORMAT
    NAME PNG
    DRIVER "GD/PNG"
    MIMETYPE "image/png"
        # 24bit
    #IMAGEMODE RGB
        # 8 bit
    IMAGEMODE PC256
    EXTENSION "png"
  END
  PROJECTION
    "proj=latlong"
  END

LAYER
  NAME "gom_states"
  TYPE POLYGON
  STATUS DEFAULT
  DATA
"/home/www/gomoos.org/data/mapserver/vector/usgs/states/land_east"
  CLASS
    STYLE
      OUTLINECOLOR 162 193 194
      COLOR 255 255 204
        END
  END
  PROJECTION
    "proj=latlong"
  END
END

END





More information about the mapserver-dev mailing list