Opened 14 years ago

Closed 14 years ago

#264 closed defect (fixed)

CUnit geography suite failures

Reported by: robe Owned by: pramsey
Priority: medium Milestone: PostGIS 1.5.0
Component: postgis Version: master
Keywords: Cc:

Description

I'm seeing more of a pattern between GCC than OS as to how this fails. As I mentioned I found it strange that one of my OpenSUSE vms fails more like one of my MingWs. In fact teh OpenSUSEs fail in different ways. It occurred to me that what the similarities are between the like MingW/OpenSuse pairs I believe to be version of GCC. I'll have to double-check since I don't have those available at the moment.

Here is what I have

CUnit geography failures on various mixins of OpenSuse, MingW, GCC

--On one Windows XP MingW running gcc.exe (GCC) 3.4.5 (mingw-vista special r3)
Suite: Geodetic Suite
  Test: test_signum() ... passed
  Test: test_gbox_from_spherical_coordinates() ... passed
  Test: test_gserialized_get_gbox_geocentric() ... passed
  Test: test_clairaut() ... passed
  Test: test_edge_intersection() ... FAILED
	1. cu_geodetic.c:375  - CU_ASSERT_EQUAL(rv,LW_TRUE)
	2. cu_geodetic.c:383  - CU_ASSERT_EQUAL(rv,LW_TRUE)
  Test: test_edge_distance_to_point() ... passed
  Test: test_edge_distance_to_edge() ... passed
  Test: test_lwgeom_distance_sphere() ... passed
  Test: test_ptarray_point_in_ring() ... passed


--On other MingW running (I thinkg gcc 4.11  -- have to double-check - I know I upgraded this one to newest MingW gcc)
Don't have stats but recall it fails like my OpenSuse 11.0 VM


-- On OpenSuse 10.3 fails same as first MingW - have to double-check gcc but think its in the 3. something series
Suite: Geodetic Suite
  Test: test_signum() ... passed
  Test: test_gbox_from_spherical_coordinates() ... passed
  Test: test_gserialized_get_gbox_geocentric() ... passed
  Test: test_clairaut() ... passed
  Test: test_edge_intersection() ... FAILED
	1. cu_geodetic.c:375  - CU_ASSERT_EQUAL(rv,LW_TRUE)
	2. cu_geodetic.c:383  - CU_ASSERT_EQUAL(rv,LW_TRUE)
  Test: test_edge_distance_to_point() ... passed
  Test: test_edge_distance_to_edge() ... passed
  Test: test_lwgeom_distance_sphere() ... passed
  Test: test_ptarray_point_in_ring() ... passed


-- On OpenSuse 11.0 vM  fails as my second MingW runnning new gcc
-- gcc (SUSE Linux) 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036]
Suite: Geodetic Suite
  Test: test_signum() ... passed
  Test: test_gbox_from_spherical_coordinates() ... passed
  Test: test_gserialized_get_gbox_geocentric() ... passed
  Test: test_clairaut() ... passed
  Test: test_edge_intersection() ... FAILED
	1. cu_geodetic.c:324  - CU_ASSERT_DOUBLE_EQUAL(g.lon,0.0,0.00001)
	2. cu_geodetic.c:325  - CU_ASSERT_EQUAL(rv,LW_TRUE)
	3. cu_geodetic.c:340  - CU_ASSERT_DOUBLE_EQUAL(g.lon,0.0,0.00001)
	4. cu_geodetic.c:341  - CU_ASSERT_EQUAL(rv,LW_TRUE)
  Test: test_edge_distance_to_point() ... passed
  Test: test_edge_distance_to_edge() ... passed
  Test: test_lwgeom_distance_sphere() ... passed
  Test: test_ptarray_point_in_ring() ... passed

Change History (14)

comment:1 by robe, 14 years ago

Version: trunk

comment:2 by robe, 14 years ago

If this is GCC related — I wonder if its a similar issue as #119 And Mark's note about: http://fedoraproject.org/wiki/Security/Features#Compile_Time_Buffer_Checks_.28FORTIFY_SOURCE.29

That would explain why I was picking up some failures in the CUnit that you were missing. Which GCC are you running Paul?

comment:3 by robe, 14 years ago

Was a bit wrong about the gcc on my OpenSUSE 10.3 and MingW they are both newer than I thought. Latest results against trunk for both these are below.

So I guess if its a GCC issue, its something that changed between GCC 4.2 and GCC 4.3

gcc --version --> gcc (GCC) 4.2.1 (SUSE Linux)
Suite: Geodetic Suite
  Test: test_signum() ... passed
  Test: test_gbox_from_spherical_coordinates() ... passed
  Test: test_gserialized_get_gbox_geocentric() ... passed
  Test: test_clairaut() ... passed
  Test: test_edge_intersection() ... FAILED
    1. cu_geodetic.c:375  - CU_ASSERT_EQUAL(rv,LW_TRUE)
    2. cu_geodetic.c:383  - CU_ASSERT_EQUAL(rv,LW_TRUE)
  Test: test_edge_distance_to_point() ... passed
  Test: test_edge_distance_to_edge() ... passed
  Test: test_lwgeom_distance_sphere() ... passed
  Test: test_ptarray_point_in_ring() ... passed

My MingW running the newer gcc compiling against latest trunk

gcc --version --> gcc.exe (GCC) 4.4.0
Suite: Geodetic Suite
  Test: test_signum() ... passed
  Test: test_gbox_from_spherical_coordinates() ... passed
  Test: test_gserialized_get_gbox_geocentric() ... passed
  Test: test_clairaut() ... passed
  Test: test_edge_intersection() ... FAILED
    1. cu_geodetic.c:324  - CU_ASSERT_DOUBLE_EQUAL(g.lon,0.0,0.00001)
    2. cu_geodetic.c:325  - CU_ASSERT_EQUAL(rv,LW_TRUE)
    3. cu_geodetic.c:340  - CU_ASSERT_DOUBLE_EQUAL(g.lon,0.0,0.00001)
    4. cu_geodetic.c:341  - CU_ASSERT_EQUAL(rv,LW_TRUE)
  Test: test_edge_distance_to_point() ... passed
  Test: test_edge_distance_to_edge() ... passed
  Test: test_lwgeom_distance_sphere() ... passed
  Test: test_ptarray_point_in_ring() ... passed

comment:4 by pramsey, 14 years ago

Resolution: fixed
Status: newclosed

I believe I have fixed this last night.

comment:5 by robe, 14 years ago

I believe you have. worksforme (well at least on one box anyway)

comment:6 by robe, 14 years ago

Resolution: fixed
Status: closedreopened

My 4.4.0 MingW is still unhappy. Haven't tested on OpenSUSE 11.

 Test: test_edge_intersection() ... FAILED
   1. cu_geodetic.c:333  - CU_ASSERT_DOUBLE_EQUAL(g.lon,0.0,0.00001)
   2. cu_geodetic.c:334  - CU_ASSERT_EQUAL(rv,LW_TRUE)

comment:7 by pramsey, 14 years ago

Hrm, hrm, sure you're upgraded to the latest? Just a hopeful question, if not this is a very ugly problem, because a tolerance that is loose enough to catch double equality in MinGW is going to be loose enough to give wrong false positives on other platforms.

comment:8 by robe, 14 years ago

Paul, Keep on dreaming. Just tested on my OpenSUSE 11 and same error

  Test: test_edge_intersection() ... FAILED
    1. cu_geodetic.c:333  - CU_ASSERT_DOUBLE_EQUAL(g.lon,0.0,0.00001)
    2. cu_geodetic.c:334  - CU_ASSERT_EQUAL(rv,LW_TRUE)

Well 2 out of 4 is better. These were the two machines running newer GCC versions (in the 4 series) that had 4 errors before. So you got them down to 2, now just try to get rid of the other 2.

comment:9 by pramsey, 14 years ago

Can you give me the GCC numbers? This will be easier if I have my own environment and am not trying to do it by remote control.

comment:10 by robe, 14 years ago

Its all above but here it is again.

For the MingW — gcc.exe (GCC) 4.4.0 (note the other MingW I normally use ((GCC) 3.4.5) only had 2 errors before and you fixed those which also knocked of 2 of the 4 in the newer GCCs)

Open SUSE 11 — 4.3.1 20080507 (prerelease) [gcc-4_3-branch revision 135036]

comment:11 by pramsey, 14 years ago

Ever so slightly loosen equality tolerance in double comparison at r4788. This fixed my GCC4 failures…

comment:12 by pramsey, 14 years ago

… and r4788 did not regress my Centos or OS/X installations. Hate this silly balancing act.

comment:13 by robe, 14 years ago

seems to regress for me now on all my machines.

comment:14 by pramsey, 14 years ago

Resolution: fixed
Status: reopenedclosed

Great!

Note: See TracTickets for help on using tickets.