Opened 13 years ago

Closed 13 years ago

#3627 closed defect (fixed)

Internal error with Oracle Spatial multi point geometries

Reported by: tessarom Owned by: aboudreault
Priority: normal Milestone: 5.6.5 release
Component: Input - Native Oracle Spatial Support Version: unspecified
Severity: major Keywords: multipoint
Cc:

Description

It seems that mapserver does not handle correctly multipoint geometries in native Oracle Spatial: it raises a memory corruption error when adding a multipoint geometry to the internal structures used for rendering. Verified on mapserver 5.6.3 on Windows 2003 server, Red Hat Linux 5.5 32 bit, Gentoo Linux 64 bit, and on mapserver 5.6.5 on Gentoo Linux 64 bit.

Compiled with debugging info on Linux, this is a tipical backtrace:

#0 0x00007ffff0ffc1d5 in raise () from /lib/libc.so.6 #1 0x00007ffff0ffd600 in abort () from /lib/libc.so.6 #2 0x00007ffff10373f7 in ?? () from /lib/libc.so.6 #3 0x00007ffff103c986 in ?? () from /lib/libc.so.6 #4 0x00007ffff103fa61 in ?? () from /lib/libc.so.6 #5 0x00007ffff1041820 in malloc () from /lib/libc.so.6 #6 0x0000000000458615 in msAddLine (p=0x7fffffffd070, new_line=0x7fffffffcdb0) at mapprimitive.c:303 #7 0x00000000004799b1 in osPointCluster (hand=0x9a42b0, shape=0x7fffffffd070, obj=0xa958b0, start=0, end=6, points=..., interpretation=2, data3d=1, data4d=0) at maporaclespatial.c:1344 #8 0x000000000047a86e in osGetOrdinates (dthand=0x99c170, hand=0x9a42b0, shape=0x7fffffffd070, obj=0xa958b0, ind=0xa95508) at maporaclespatial.c:1663 #9 0x000000000047c43b in msOracleSpatialLayerNextShape (layer=0x80f580, shape=0x7fffffffd070) at maporaclespatial.c:2181 #10 0x000000000046e2cd in msLayerNextShape (layer=0x80f580, shape=0x7fffffffd070) at maplayer.c:145 #11 0x000000000048283a in msDrawVectorLayer (map=0x806700, layer=0x80f580, image=0x820070) at mapdraw.c:964 #12 0x0000000000481867 in msDrawLayer (map=0x806700, layer=0x80f580, image=0x820070) at mapdraw.c:809 #13 0x00000000004805c9 in msDrawMap (map=0x806700, querymap=0) at mapdraw.c:455 #14 0x0000000000416c8b in main (argc=3, argv=0x7fffffffd8c8) at mapserv.c:1415

Change History (3)

comment:1 by tessarom, 13 years ago

A more easy to read backtrace (mapserver 5.6.5 on Gentoo Linux 64 bit):

#0  0x00007ffff0ffc1d5 in raise () from /lib/libc.so.6
#1  0x00007ffff0ffd600 in abort () from /lib/libc.so.6
#2  0x00007ffff10373f7 in ?? () from /lib/libc.so.6
#3  0x00007ffff103c986 in ?? () from /lib/libc.so.6
#4  0x00007ffff103fa61 in ?? () from /lib/libc.so.6
#5  0x00007ffff1041820 in malloc () from /lib/libc.so.6
#6  0x0000000000458615 in msAddLine (p=0x7fffffffd070, new_line=0x7fffffffcdb0) at mapprimitive.c:303
#7  0x00000000004799b1 in osPointCluster (hand=0x9a42b0, shape=0x7fffffffd070, obj=0xa958b0, start=0, end=6, points=..., interpretation=2, data3d=1, data4d=0) at maporaclespatial.c:1344
#8  0x000000000047a86e in osGetOrdinates (dthand=0x99c170, hand=0x9a42b0, shape=0x7fffffffd070, obj=0xa958b0, ind=0xa95508) at maporaclespatial.c:1663
#9  0x000000000047c43b in msOracleSpatialLayerNextShape (layer=0x80f580, shape=0x7fffffffd070) at maporaclespatial.c:2181
#10 0x000000000046e2cd in msLayerNextShape (layer=0x80f580, shape=0x7fffffffd070) at maplayer.c:145
#11 0x000000000048283a in msDrawVectorLayer (map=0x806700, layer=0x80f580, image=0x820070) at mapdraw.c:964
#12 0x0000000000481867 in msDrawLayer (map=0x806700, layer=0x80f580, image=0x820070) at mapdraw.c:809
#13 0x00000000004805c9 in msDrawMap (map=0x806700, querymap=0) at mapdraw.c:455
#14 0x0000000000416c8b in main (argc=3, argv=0x7fffffffd8c8) at mapserv.c:1415

comment:2 by tessarom, 13 years ago

Example of geometry that causes the fault (SRID=3004):

MDSYS.SDO_GEOMETRY(3005,null,null,
                   MDSYS.SDO_ELEM_INFO_ARRAY(1,1,3),
                   MDSYS.SDO_ORDINATE_ARRAY(2380403,5108034,0,
                                            2380176,5107312,0,
                                            2380039,5107571,0))

The database is Oracle 10g Enterprise Edition Release 10.2.0.1.0 - 64bit Production.

comment:3 by aboudreault, 13 years ago

Resolution: fixed
Status: newclosed

I committed the fix in branch-5-6. The fix had already been committed in trunk during another ticket. Committed in r10802.

Note: See TracTickets for help on using tickets.