XCSoar
XCSoar copied to clipboard
Map database causes freeze
XCSoar versions having and not having the problem
Broken:
- 7.37
- 7.38
- 7.39
Which XCSoar version is the last one you know that did not show the problem?
- 7.36
System information
Realme C30s, Android 12. Build number RMX3690_12.A.48
Steps to reproduce the behaviour
Launch XCSoar and load a map database (.xcm). As soon as the map database finishes loading, the app freezes and does not respond to touch response, swipe gestures, etc. I tried using 3 different map databases files (the Israel high res & regular Israel file from the XCSoar repository, as well as a custom Israel high res made by a member of my club), all cause the same freeze.
Expected behavior
App should function normally without freezing & accept touch input & swipe gestures.
Actual behavior
No response to the touch screen, also probably nothing going on in the background (couldn't get a GPS fix)
Do you have any idea what may have caused this?
Do you have an idea how to solve the issue?
I tested both israel maps and cannot reproduce a freeze. Is it when you load any map? Can you try removing all files from Site config and try again?
I tested both israel maps and cannot reproduce a freeze. Is it when you load any map? Can you try removing all files from Site config and try again?
I tried removing all site files (waypoints, airspaces and maps) and tested both Denmark and Germany maps at random. Both worked fine. Israel maps still cause the freeze, even without all the other files. Just a guess - could this be about my phone struggling with rendering the map on the screen? My reasoning is that my device gets a GPS fix before the maps ever load up, so if it's a foreign map it's offscreen, and sure enough if I load my local map the app freezes as soon as the "loading terrain file" bar finishes.
This happens in sim mode aswell, for both denmark and israel? If you belive gps fix to be the problem, can you try it indoors in fly mode? Can you try old releases? Htrps://download. Xcsoar.org/releases
In any case can you try to get the log?
(Google files app
Then xcsoar.log
The maps are produced the same way, so there isnt really a difference between them. The terrain loading process is asynchronus since a couple of versions.
I think this could be the ANR bug that got reported on Google Play a few times. It's an endless loop in Angle::AsBearing()
which I believe gets caused by an uninitialised Angle variable with a random value that is extremely big/small or even infinite or NaN. No matter how I tried, I was never able to find out where this uninitialised variable comes from. I always thought it could be some problem before the first GPS fix is received, and some part of XCSoar omits the check whether some field has a value.
I tried it in sim mode with the Denmark map - as soon as the map loaded the app fixed me on Denmark, started drawing the terrain and froze.
I'm attaching my log file. I'll try to use an older release as well and report back.
Okay - 7.35 works! I guess I'll stick with this one for now.
Does 7.36 work? For this piece of information to be useful for us, we need to know exactly what the first version with the problem was.
Does 7.36 work? For this piece of information to be useful for us, we need to know exactly what the first version with the problem was.
7.36 works. 7.37 is the first one that doesn't (just tried both of them)
I kept trying, and I also tried to inject bad values into XCSoar, but couldn't reproduce this problem. I guess I really need a device that is able to reproduce this.