Detour navigator unit tests fail on powerpc, 64-bit ARM architectures
Hello,
I'm maintaining the openmw packages in RPM Fusion for Fedora. We recently tried to build 0.46 and ran into some unit test failures on both ppc64le (little endian PowerPC) and aarch64 (64-bit ARM) architectures. Specifically, the detour navigator tests seem to fail:
[ FAILED ] 10 tests, listed below:
[ FAILED ] DetourNavigatorNavigatorTest.update_then_find_path_should_return_path
[ FAILED ] DetourNavigatorNavigatorTest.add_object_should_change_navmesh
[ FAILED ] DetourNavigatorNavigatorTest.update_changed_object_should_change_navmesh
[ FAILED ] DetourNavigatorNavigatorTest.for_overlapping_heightfields_should_use_higher
[ FAILED ] DetourNavigatorNavigatorTest.path_should_be_around_avoid_shape
[ FAILED ] DetourNavigatorNavigatorTest.path_should_be_over_ground_when_ground_cross_water_with_only_walk_flag
[ FAILED ] DetourNavigatorNavigatorTest.update_remove_and_update_then_find_path_should_return_path
[ FAILED ] DetourNavigatorNavigatorTest.update_then_find_random_point_around_circle_should_return_position
[ FAILED ] DetourNavigatorRecastMeshBuilderTest.with_bounds_add_rotated_by_x_bhv_triangle_shape_should_filter_by_bounds
[ FAILED ] DetourNavigatorRecastMeshBuilderTest.with_bounds_add_rotated_by_y_bhv_triangle_shape_should_filter_by_bounds
All of these tests seem to fail due to messages like this:
Expected equality of these values:
mPath
Which is: { -215 215 1.9633, -194.965 194.965 -0.242209, -174.931 174.931 -2.44771, -154.896 154.896 -4.65322, -134.861 134.861 -6.85872, -114.827 114.827 -9.06423, -94.7919 94.7919 -11.2697, -74.7572 74.7572 -13.265, -54.7225 54.7225 -15.2486, -34.6878 34.6878 -17.2322, -14.6531 14.6531 -19.2159, 5.38158 -5.38158 -20.1338, 25.4163 -25.4163 -18.1502, 45.451 -45.451 -16.1666, 65.4856 -65.4856 -14.1829, 85.5203 -85.5203 -12.1993, 105.555 -105.555 -10.0849, 125.59 -125.59 -7.87937, 145.624 -145.624 -5.67387, 165.659 -165.659 -3.46837, 185.694 -185.694 -1.26286, 205.728 -205.728 0.942645, 215 -215 1.9633 }
std::deque<osg::Vec3f>({ osg::Vec3f(-215, 215, 1.96328866481781005859375), osg::Vec3f(-194.9653167724609375, 194.9653167724609375, -0.242215454578399658203125), osg::Vec3f(-174.930633544921875, 174.930633544921875, -2.447719097137451171875), osg::Vec3f(-154.8959503173828125, 154.8959503173828125, -4.65322399139404296875), osg::Vec3f(-134.86126708984375, 134.86126708984375, -6.858726978302001953125), osg::Vec3f(-114.82657623291015625, 114.82657623291015625, -9.06423282623291015625), osg::Vec3f(-94.7918853759765625, 94.7918853759765625, -11.26973628997802734375), osg::Vec3f(-74.75719451904296875, 74.75719451904296875, -13.26497173309326171875), osg::Vec3f(-54.722499847412109375, 54.722499847412109375, -15.24860477447509765625), osg::Vec3f(-34.68780517578125, 34.68780517578125, -17.23223876953125), osg::Vec3f(-14.6531162261962890625, 14.6531162261962890625, -19.215869903564453125), osg::Vec3f(5.3815765380859375, -5.3815765380859375, -20.1338443756103515625), osg::Vec3f(25.41626739501953125, -25.41626739501953125, -18.1502132415771484375), osg::Vec3f(45.450958251953125, -45.450958251953125, -16.1665802001953125), osg::Vec3f(65.48564910888671875, -65.48564910888671875, -14.18294620513916015625), osg::Vec3f(85.5203399658203125, -85.5203399658203125, -12.199314117431640625), osg::Vec3f(105.55503082275390625, -105.55503082275390625, -10.08488368988037109375), osg::Vec3f(125.5897216796875, -125.5897216796875, -7.87938022613525390625), osg::Vec3f(145.6244049072265625, -145.6244049072265625, -5.673875331878662109375), osg::Vec3f(165.659088134765625, -165.659088134765625, -3.468370914459228515625), osg::Vec3f(185.6937713623046875, -185.6937713623046875, -1.26286637783050537109375), osg::Vec3f(205.7284698486328125, -205.7284698486328125, 0.942641556262969970703125), osg::Vec3f(215, -215, 1.96328866481781005859375), })
Which is: { -215 215 1.96329, -194.965 194.965 -0.242215, -174.931 174.931 -2.44772, -154.896 154.896 -4.65322, -134.861 134.861 -6.85873, -114.827 114.827 -9.06423, -94.7919 94.7919 -11.2697, -74.7572 74.7572 -13.265, -54.7225 54.7225 -15.2486, -34.6878 34.6878 -17.2322, -14.6531 14.6531 -19.2159, 5.38158 -5.38158 -20.1338, 25.4163 -25.4163 -18.1502, 45.451 -45.451 -16.1666, 65.4856 -65.4856 -14.1829, 85.5203 -85.5203 -12.1993, 105.555 -105.555 -10.0849, 125.59 -125.59 -7.87938, 145.624 -145.624 -5.67388, 165.659 -165.659 -3.46837, 185.694 -185.694 -1.26287, 205.728 -205.728 0.942642, 215 -215 1.96329 }
{
osg::Vec3f(-215, 215, 1.9632952213287353515625),
osg::Vec3f(-194.9653167724609375, 194.9653167724609375, -0.24220933020114898681640625),
osg::Vec3f(-174.930633544921875, 174.930633544921875, -2.4477140903472900390625),
osg::Vec3f(-154.8959503173828125, 154.8959503173828125, -4.6532192230224609375),
osg::Vec3f(-134.86126708984375, 134.86126708984375, -6.85872364044189453125),
osg::Vec3f(-114.82657623291015625, 114.82657623291015625, -9.06422901153564453125),
osg::Vec3f(-94.7918853759765625, 94.7918853759765625, -11.26973438262939453125),
osg::Vec3f(-74.75719451904296875, 74.75719451904296875, -13.26496982574462890625),
osg::Vec3f(-54.722499847412109375, 54.722499847412109375, -15.24860477447509765625),
osg::Vec3f(-34.68780517578125, 34.68780517578125, -17.2322406768798828125),
osg::Vec3f(-14.6531162261962890625, 14.6531162261962890625, -19.21587371826171875),
osg::Vec3f(5.3815765380859375, -5.3815765380859375, -20.1338481903076171875),
osg::Vec3f(25.41626739501953125, -25.41626739501953125, -18.1502132415771484375),
osg::Vec3f(45.450958251953125, -45.450958251953125, -16.1665802001953125),
osg::Vec3f(65.48564910888671875, -65.48564910888671875, -14.18294620513916015625),
osg::Vec3f(85.5203399658203125, -85.5203399658203125, -12.19931125640869140625),
osg::Vec3f(105.55503082275390625, -105.55503082275390625, -10.08487987518310546875),
osg::Vec3f(125.5897216796875, -125.5897216796875, -7.879374980926513671875),
osg::Vec3f(145.6244049072265625, -145.6244049072265625, -5.6738719940185546875),
osg::Vec3f(165.659088134765625, -165.659088134765625, -3.4683659076690673828125),
osg::Vec3f(185.6937713623046875, -185.6937713623046875, -1.26286137104034423828125),
osg::Vec3f(205.7284698486328125, -205.7284698486328125, 0.94264495372772216796875),
osg::Vec3f(215, -215, 1.9632971286773681640625),
}
Each of the vectors is slightly different-- e.g. -215 215 1.9633
vs -215 215 1.96329
. I'm not totally sure what to make of this failure-- is it an actual problem? Would ignoring these test failures for those architectures be alright, at least in the short term?
You can find full build logs here for aarch64 and here for ppc64le. The build does work just fine on x86_64; the failures seem to only happen on these architectures. (Interestingly, the test also passes on 32-bit ARM).