[mapserver-dev] segfault in label repeat code
Alan Boudreault
aboudreault at mapgears.com
Mon Nov 9 09:08:17 EST 2009
Hi,
I'm not sure to understand the case where the "while" loop at line 1478
wouldn't be executed at least 1 time. Do you think you could provide to me a
test case to go deep to see what's happen?
About the center_on_longest_segment variable, it will be set to MS_TRUE when
the label definition uses "ANGLE AUTO". See :
http://trac.osgeo.org/mapserver/ticket/3160
thanks,
Alan
On November 8, 2009 09:01:32 am Thomas Bonfort wrote:
> hi,
> this one is probably for Alan,
> I'm getting a segfault in mapprimitive.c (my layers dont use
> repeatdistance):
>
> Program received signal EXC_BAD_ACCESS, Could not access memory.
> Reason: KERN_INVALID_ADDRESS at address: 0x0000000105dffff8
> 0x000000010007fd1c in msPolylineLabelPointLineString
> (p=0x7fff5fbfeac0, min_length=-1, repeat_distance=0,
> angles=0x7fff5fbfea30, lengths=0x7fff5fbfea28,
> segment_lengths=0x101282220, line_index=0, line_length=0,
> total_length=0, segment_index=0, labelpoints_index=0x7fff5fbfe63c,
> labelpoints_size=0x7fff5fbfe638, labelpoints=0x7fff5fbfe610,
> center_on_longest_segment=0) at mapprimitive.c:1484
> 1484 t = 1 - (fwd_length - point_position) /
> segment_lengths[i][j-1];
>
>
> (gdb) print i
> $1 = 0
> (gdb) print j
> $2 = 0
>
> >>> something fishy here, as the code tries to access
> >>> segment_lengths[i][j-1];
>
> (gdb) bt
> #0 0x000000010007fd1c in msPolylineLabelPointLineString
> (p=0x7fff5fbfeac0, min_length=-1, repeat_distance=0,
> angles=0x7fff5fbfea30, lengths=0x7fff5fbfea28,
> segment_lengths=0x101282220, line_index=0, line_length=0,
> total_length=0, segment_index=0, labelpoints_index=0x7fff5fbfe63c,
> labelpoints_size=0x7fff5fbfe638, labelpoints=0x7fff5fbfe610,
> center_on_longest_segment=0) at mapprimitive.c:1484
> #1 0x000000010007f7b2 in msPolylineLabelPointExtended
> (p=0x7fff5fbfeac0, min_length=-1, repeat_distance=0,
> angles=0x7fff5fbfea30, lengths=0x7fff5fbfea28,
> numpoints=0x7fff5fbfea44, regularLines=0x1012fb830, numlines=1,
> center_on_longest_segment=0) at mapprimitive.c:1387
> #2 0x00000001000b811e in msDrawShape (map=0x10182b800,
> layer=0x101262d10, shape=0x7fff5fbfeac0, image=0x10127c730, style=0,
> querymapMode=1) at mapdraw.c:2004
> #3 0x00000001000b2b9a in msDrawVectorLayer (map=0x10182b800,
> layer=0x101262d10, image=0x10127c730) at mapdraw.c:1019
> #4 0x00000001000b20af in msDrawLayer (map=0x10182b800,
> layer=0x101262d10, image=0x10127c730) at mapdraw.c:809
> #5 0x00000001000b1167 in msDrawMap (map=0x10182b800, querymap=0) at
> mapdraw.c:455
> #6 0x00000001000a6a99 in msWMSGetMap (map=0x10182b800,
> nVersion=65793, names=0x10120bbb0, values=0x10120bed0, numentries=10)
> at mapwms.c:2676
> #7 0x00000001000aa23f in msWMSDispatch (map=0x10182b800,
> req=0x10120bb80) at mapwms.c:3799
> #8 0x0000000100107ae1 in msOWSDispatch (map=0x10182b800,
> request=0x10120bb80, force_ows_mode=0) at mapows.c:67
> #9 0x0000000100005f7a in main (argc=2, argv=0x7fff5fbff400) at
> mapserv.c:1262 (gdb) print point_position
> $12 = 0
> (gdb) print point_repeat
> $13 = 1
> (gdb) print l
> $14 = 0
> (gdb)
>
>
>
> looking at the code, I also don't understand the usage of
> center_on_longest_segment, as it seems to always be called with
> MS_FALSE.
>
> don't know if others can reproduce, but I'd say this is a blocker for
> 5.6 release.
>
> regards,
>
> thomas
>
> www.camptocamp.com
> +33 5 16 57 01 02
> _______________________________________________
> mapserver-dev mailing list
> mapserver-dev at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/mapserver-dev
>
--
Alan Boudreault
Mapgears
http://www.mapgears.com
More information about the mapserver-dev
mailing list