Develop
Ticket #1569 (closed defect: duplicate)
crash with flawed GPS input
| Reported by: | wbu | Owned by: | max |
|---|---|---|---|
| Priority: | low | Milestone: | XCSoar 6.2 |
| Component: | Other | Version: | 6.2.2 |
| Keywords: | Cc: |
Description
Last weekend my LX5000 had GPS problems that caused XCSoar, which is connected to the LX5000 and the FLARM, to crash. Both the current build as well as the current stable version were crashing in flight. Unfortunately i don't have the adb logcat output of these crashes, but i could reproduce at least one crash in simulation mode with the igc log from the lx5000.
error message:
F/XCSoar (28844): assertion "x < width" failed: file "./src/Util/AllocatedGrid.hpp", line 121, function "GetPointerAt"
decoded stack dump:
src/Android/Assert.cpp:43 AllocatedGrid<short>::GetPointerAt(unsigned int, unsigned int) const ./src/Util/AllocatedGrid.hpp:0 RasterBuffer::get_data_at(unsigned int, unsigned int) const ./src/Terrain/RasterBuffer.hpp:0 RasterBuffer::get(unsigned int, unsigned int) const ./src/Terrain/RasterBuffer.hpp:0 RasterTileCache::GetFieldDirect(unsigned int, unsigned int, int&) const src/Terrain/RasterTile.cpp:1152 RasterTileCache::Intersection(int, int, int, int, short, int) const src/Terrain/RasterTile.cpp:0 RasterMap::Intersection(GeoPoint const&, short, short, GeoPoint const&) const src/Terrain/RasterMap.cpp:0 RoutePolars::ReachIntercept(int, AGeoPoint const&, RasterMap const*, TaskProjection const&) const src/Engine/Route/RoutePolars.cpp:0 ReachFanParms::reach_intercept(int, AGeoPoint const&) const src/Engine/Route/ReachFanParms.hpp:53 FlatTriangleFanTree::FillReach(AFlatGeoPoint const&, int, int, ReachFanParms&) src/Engine/Route/FlatTriangleFanTree.cpp:161 FlatTriangleFanTree::CheckGap(AFlatGeoPoint const&, RouteLink const&, RouteLink const&, ReachFanParms&) src/Engine/Route/FlatTriangleFanTree.cpp:261 FlatTriangleFanTree::FillGaps(AFlatGeoPoint const&, ReachFanParms&) src/Engine/Route/FlatTriangleFanTree.cpp:183 FlatTriangleFanTree::FillDepth(AFlatGeoPoint const&, ReachFanParms&) src/Engine/Route/FlatTriangleFanTree.cpp:132 FlatTriangleFanTree::FillDepth(AFlatGeoPoint const&, ReachFanParms&) src/Engine/Route/FlatTriangleFanTree.cpp:136 FlatTriangleFanTree::FillDepth(AFlatGeoPoint const&, ReachFanParms&) src/Engine/Route/FlatTriangleFanTree.cpp:136 FlatTriangleFanTree::FillDepth(AFlatGeoPoint const&, ReachFanParms&) src/Engine/Route/FlatTriangleFanTree.cpp:136 FlatTriangleFanTree::FillReach(AFlatGeoPoint const&, ReachFanParms&) src/Engine/Route/FlatTriangleFanTree.cpp:102 ReachFan::solve(AGeoPoint, RoutePolars const&, RasterMap const*, bool) src/Engine/Route/ReachFan.cpp:59 RoutePlanner::SolveReach(AGeoPoint const&, bool) src/Engine/Route/RoutePlanner.cpp:55 RoutePlannerGlue::solve_reach(AGeoPoint const&, bool) src/Task/RoutePlannerGlue.cpp:65 ProtectedRoutePlanner::SolveReach(AGeoPoint const&, bool) src/Task/ProtectedRoutePlanner.cpp:66 GlideComputerRoute::Reach(MoreData const&, DerivedInfo&, RoutePlannerConfig const&) src/Computer/GlideComputerRoute.cpp:136 GlideComputerRoute::ProcessRoute(MoreData const&, DerivedInfo&, DerivedInfo const&, RoutePlannerConfig const&, GlidePolar const&, GlidePolar const&) src/Computer/GlideComputerRoute.cpp:66 GlideComputerTask::ProcessMoreTask(MoreData const&, DerivedInfo&, DerivedInfo const&, SETTINGS_COMPUTER const&) src/Computer/GlideComputerTask.cpp:113 GlideComputer::ProcessGPS() src/Computer/GlideComputer.cpp:107 CalculationThread::Tick() src/CalculationThread.cpp:0 WorkerThread::Run() src/Thread/WorkerThread.cpp:0 Thread::ThreadProc(void*) src/Thread/Thread.cpp:0
Attachments
Change History
comment:2 Changed 19 months ago by wbu
It's a custom map created with our map generator: ffb9533cdd0d1b8a3bb5be5d8ac30ed9 streckenflug.at.xcm
About 45MB. Should i send it to you somehow?
comment:3 Changed 19 months ago by max
I think this is a rounding error; the overview map is slightly smaller than it should be, and so the bounds checks succeed, and allow a position that's outside of the overview map.
If you can upload the file somewhere, please do; if not, I'll check our code for the overflow, and then we'll see if it fixes the bug for you.
