Develop

Ticket #1569 (closed defect: duplicate)

Opened 19 months ago

Last modified 18 months ago

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

lx5000_flawed.igc (56.4 KB) - added by wbu 19 months ago.
flarm.igc (750.7 KB) - added by wbu 19 months ago.

Change History

Changed 19 months ago by wbu

Changed 19 months ago by wbu

comment:1 Changed 19 months ago by max

Which map file? (name and md5sum, please)

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.

comment:4 Changed 18 months ago by Turbo

  • Owner set to max
  • Status changed from new to assigned

comment:5 Changed 18 months ago by Turbo

  • Version changed from 6.3 to 6.2.2
  • Milestone changed from XCSoar 6.3 to XCSoar 6.2

comment:6 Changed 18 months ago by wbu

  • Status changed from assigned to closed
  • Resolution set to duplicate

duplicate of #1633

Note: See TracTickets for help on using tickets.