[mapserver-users] Expression segmentation fault

Frank Broniewski brfr at metrico.lu
Fri Sep 6 02:30:27 PDT 2013


Sorry, but it's not that simple :-(: My current layer configuration:

I will write a PostGIS query and see what differences turn up between 
the line and polygon tables and if it is really the geometry as Jukka 
Rahkonen and Steve W suggest ...

Layer
     Connection "host=10.0.0.2 dbname=osm user=me password=guessit"
     Connectiontype Postgis

     Data "way from (select osm_id, way, admin_level from 
planet_osm_polygon) as foo using unique osm_id using srid=2169"
#    Filter "tags ?& ARRAY['boundary', 'admin_level']"

     name "boundaries"
     status on
     type line
     units meters

     Projection
         "init=epsg:3857"
     End

     Class
         expression ("[admin_level]" = "6")
         name "communes"

         Style
             color 10 10 10
             width 2
         End
     End
End



Am 2013-09-06 10:16, schrieb thomas bonfort:
> Frank,
> can you try without including the hstore tags in your select?
>
> --
> thomas
>
> On Thu, Sep 5, 2013 at 3:49 PM, Frank Broniewski <brfr at metrico.lu> wrote:
>> Ok, this is weird. It is, as I know now, data source related. I was poking
>> in the layer configuration to find out why the core dump happens.
>> Reinstalling didn't solve the issue, btw.
>>
>> So first I converted the data to shapefile with ogr2ogr (as always very
>> handy!) and changed the layer accordingly. And no core dump happened!
>> Then I tried several versions of the data and filter statements without
>> success.
>> Since this is a osm2pgsql database I swapped finally the table from
>> planet_osm_polygon to planet_osm_line (same table schema apart from the
>> geometry) - and voilà - no core dump.
>>
>> So I can relate the problem to the planet_osm_polygon table - but I'm not
>> sure what difference actually is responsible for the crash ...
>>
>> The most apparent difference is of course the geometry type: planet_osm_line
>> is linestring, planet_osm_polygon is geometry ...
>>
>> I will investigate the attributes further tomorrow, but now I need to earn
>> some money. It's always the deadlines ...
>>
>>
>> Frank
>>
>>
>> Am 2013-09-05 09:47, schrieb thomas bonfort:
>>
>>> Frank,
>>> This is such a simple use-case that I doubt it's a bug in the code
>>> per-se. Can you make sure that you are using a clean build (make clean
>>> && make && make install) as I suspect this could be happening due to a
>>> compilation problem (as a rule of thumb, with mapserver <6.4, always
>>> run make clean after re-running configure)
>>>
>>> --
>>> thomas
>>>
>>>
>>> On Wed, Sep 4, 2013 at 2:39 PM, Frank Broniewski <brfr at metrico.lu> wrote:
>>>>
>>>> Am 2013-09-04 14:33, schrieb thomas bonfort:
>>>>
>>>>> Frank, please supply a backtrace of the crash (`bt` in gdb once it has
>>>>> halted at the segfault)
>>>>>
>>>>> --
>>>>> thomas
>>>>>
>>>>> On Wed, Sep 4, 2013 at 2:25 PM, Frank Broniewski <brfr at metrico.lu>
>>>>> wrote:
>>>>>>
>>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I just updated my mapserver installation to the latest version (6.2.1).
>>>>>> I'm
>>>>>> running FreeBSD 9.1 and I'm getting a segmentation fault related to
>>>>>> expression usage in my mapfile. I've already compiled mapserver with
>>>>>> debug
>>>>>> symbols and I loaded the core file into gdb:
>>>>>>
>>>>>>> gdb /usr/local/www/apache22/cgi-bin/mapserv mapserv.core
>>>>>>
>>>>>>
>>>>>> <snip>
>>>>>> Reading symbols from /lib/libc.so.7...done.
>>>>>> Loaded symbols for /lib/libc.so.7
>>>>>> Reading symbols from /usr/local/lib/libintl.so.9...done.
>>>>>> Loaded symbols for /usr/local/lib/libintl.so.9
>>>>>> Reading symbols from /usr/lib/libsupc++.so.1...done.
>>>>>> Loaded symbols for /usr/lib/libsupc++.so.1
>>>>>> Reading symbols from /libexec/ld-elf.so.1...done.
>>>>>> Loaded symbols for /libexec/ld-elf.so.1
>>>>>> #0  0x00000008008e2520 in yylex (lvalp=0x7fffffffd250,
>>>>>> p=0x7fffffffd3b0)
>>>>>> at
>>>>>> mapparser.y:649
>>>>>> 649     mapparser.y: No such file or directory.
>>>>>>            in mapparser.y
>>>>>> [New Thread 809007400 (LWP 101134/mapserv)]
>>>>>>
>>>>>> So apparently there seems to be a file missing!? Looking at the source
>>>>>> code
>>>>>> (git), line 649 is a blank line, so I'm not sure what's missing
>>>>>> exactly.
>>>>>> I've got yacc, bison and flex installed. For testing purposes I'm using
>>>>>> the
>>>>>> mapserver cgi on the command line:
>>>>>>
>>>>>> /usr/local/www/apache22/cgi-bin/mapserv -nh
>>>>>>
>>>>>>
>>>>>> "QUERY_STRING=map=/data/web/mapserver/cnra/cnra.map&mode=map&layer=boundaries"
>>>>>>
>>>>>> The boundaries layer:
>>>>>>
>>>>>> Layer
>>>>>>
>>>>>> #    Classitem "level"
>>>>>>        Connection "host=10.0.0.2 dbname=osm user=user password=guessme"
>>>>>>        Connectiontype Postgis
>>>>>>        Data "geom FROM (SELECT osm_id, way AS geom, name, admin_level AS
>>>>>> level,
>>>>>> tags FROM planet_osm_polygon) AS foo USING UNIQUE osm_id USING
>>>>>> SRID=3857"
>>>>>>        Filter "tags ?& ARRAY['boundary', 'admin_level']"
>>>>>>        Name "boundaries"
>>>>>>        Processing "CLOSE_CONNECTION=DEFER"
>>>>>>        Status on
>>>>>>        Type line
>>>>>>        Units meters
>>>>>>
>>>>>>        Metadata
>>>>>>            "ows_title" "Boundary Map"
>>>>>>            "ows_abstract" "Boundary map - data from OpenStreetMap, ODbl
>>>>>> licensed"
>>>>>>        End
>>>>>>
>>>>>>        Projection
>>>>>>            "init=epsg:3857"
>>>>>>        End
>>>>>>
>>>>>>        Class
>>>>>>
>>>>>>            Expression ("[level]" = "6")
>>>>>> #        Expression "6"
>>>>>>            Name "communes"
>>>>>>
>>>>>>            Style
>>>>>>                Color 10 10 10
>>>>>>                Opacity 50
>>>>>>                Width 2
>>>>>>            End
>>>>>>
>>>>>>        End
>>>>>> End
>>>>>>
>>>>>>
>>>>>> The classitem / simple expression (Expression "6") works with the
>>>>>> mapserver
>>>>>> cgi, but python mapscript throws an error: _mapscript.MapServerError:
>>>>>> msEvalExpression(): General error message. Invalid item index.
>>>>>>
>>>>>> I've read the mapserver expressions documentation [1] and the note that
>>>>>> says
>>>>>> something about the working environment might be linked to more than
>>>>>> one
>>>>>> expression library. But my operating system skills are not high enough
>>>>>> to
>>>>>> turn this paragraph into something useful for me.
>>>>>>
>>>>>> So any help is greatly appreciated.
>>>>>>
>>>>>> Frank
>>>>>>
>>>>>>
>>>>>> Frank BRONIEWSKI
>>>>>>
>>>>>> METRICO s.à r.l.
>>>>>> géomètres
>>>>>> technologies d'information géographique
>>>>>> rue des Romains 36
>>>>>> L-5433 NIEDERDONVEN
>>>>>>
>>>>>> tél.: +352 26 74 94 - 28
>>>>>> fax.: +352 26 74 94 99
>>>>>> http://www.metrico.lu
>>>>>> _______________________________________________
>>>>>> mapserver-users mailing list
>>>>>> mapserver-users at lists.osgeo.org
>>>>>> http://lists.osgeo.org/mailman/listinfo/mapserver-users
>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>> Hi Thomas,
>>>>
>>>> thanks for the fast response! Here's the bt:
>>>>
>>>> (gdb) bt
>>>>
>>>> #0  0x00000008008e2520 in yylex (lvalp=0x7fffffffd250, p=0x7fffffffd3b0)
>>>> at
>>>> mapparser.y:649
>>>> #1  0x00000008008e0146 in yyparse (p=0x7fffffffd3b0) at mapparser.c:1500
>>>> #2  0x00000008009239b2 in msEvalExpression (layer=0x809009000,
>>>> shape=0x7fffffffd4e0,
>>>>       expression=0x8090a0280, itemindex=-1) at maputil.c:478
>>>> #3  0x0000000800923f03 in msShapeGetClass (layer=0x809009000,
>>>> map=0x8090bd800,
>>>>       shape=0x7fffffffd4e0, classgroup=0x0, numclasses=1) at maputil.c:581
>>>> #4  0x0000000800980ab2 in msDrawVectorLayer (map=0x8090bd800,
>>>> layer=0x809009000, image=0x8090a91c0)
>>>>       at mapdraw.c:989
>>>> #5  0x00000008009800ed in msDrawLayer (map=0x8090bd800,
>>>> layer=0x809009000,
>>>> image=0x8090a91c0)
>>>>       at mapdraw.c:808
>>>> #6  0x000000080097ed18 in msDrawMap (map=0x8090bd800, querymap=0) at
>>>> mapdraw.c:437
>>>> #7  0x0000000800a16e6e in msCGIDispatchImageRequest (mapserv=0x8090b2300)
>>>> at
>>>> mapservutil.c:1448
>>>> #8  0x0000000800a179c2 in msCGIDispatchRequest (mapserv=0x8090b2300) at
>>>> mapservutil.c:1690
>>>> #9  0x00000000004012c1 in main (argc=3, argv=0x7fffffffd9f0) at
>>>> mapserv.c:259
>>>> (gdb)
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Frank BRONIEWSKI
>>>>
>>>> METRICO s.à r.l.
>>>> géomètres
>>>> technologies d'information géographique
>>>> rue des Romains 36
>>>> L-5433 NIEDERDONVEN
>>>>
>>>> tél.: +352 26 74 94 - 28
>>>> fax.: +352 26 74 94 99
>>>> http://www.metrico.lu
>>>
>>>
>>>
>>
>>
>> --
>> Frank BRONIEWSKI
>>
>> METRICO s.à r.l.
>> géomètres
>> technologies d'information géographique
>> rue des Romains 36
>> L-5433 NIEDERDONVEN
>>
>> tél.: +352 26 74 94 - 28
>> fax.: +352 26 74 94 99
>> http://www.metrico.lu
>
>


-- 
Frank BRONIEWSKI

METRICO s.à r.l.
géomètres
technologies d'information géographique
rue des Romains 36
L-5433 NIEDERDONVEN

tél.: +352 26 74 94 - 28
fax.: +352 26 74 94 99
http://www.metrico.lu


More information about the mapserver-users mailing list