Edit GPX track, select Options / GPS filter, use any of the sliders -> crash
Actual result
💥
Expected result
🍹
Your Environment (required)
OsmAnd Version: 4.9.0
Android/iOS version: Android 13
Device model: Fairphone 4
Crash-Logs:
Version OsmAnd+ 4.9.0
12.10.2024 4:13:05
Apk Version : 4.9.0 4900
Exception occurred in thread Thread[main,5,main] :
android.database.sqlite.SQLiteException: no such column: totalDistance (code 1 SQLITE_ERROR): , while compiling: UPDATE gpxDirTable SET fileName = ?, fileDir = ?, totalDistance = ?, totalTracks = ?, startTime = ?, endTime = ?, timeSpan = ?, timeMoving = ?, totalDistanceMoving = ?, diffElevationUp = ?, diffElevationDown = ?, avgElevation = ?, minElevation = ?, maxElevation = ?, minSpeed = ?, maxSpeed = ?, avgSpeed = ?, points = ?, wptPoints = ?, color = ?, fileLastModifiedTime = ?, fileLastUploadedTime = ?, fileCreationTime = ?, splitType = ?, splitInterval = ?, apiImported = ?, wptCategoryNames = ?, showAsMarkers = ?, joinSegments = ?, showArrows = ?, showStartFinish = ?, track_visualization_type = ?, track_3d_wall_coloring_type = ?, track_3d_line_position_type = ?, additional_exaggeration = ?, elevation_meters = ?, width = ?, gradientScaleType = ?, colorPalette = ?, smoothingThreshold = ?, minFilterSpeed = ?, maxFilterSpeed = ?, minFilterAltitude = ?, maxFilterAltitude = ?, maxFilterHdop = ?, startLat = ?, startLon = ?, nearestCityName = ?, maxSensorTemperature = ?, avgSensorTemperature = ?, maxSensorSpeed = ?, avgSensorSpeed = ?, maxSensorPower = ?, avgSensorPower = ?, maxSensorCadence = ?, avgSensorCadence = ?, maxSensorHr = ?, avgSensorHr = ?, dataVersion = ? WHERE fileName = ? AND fileDir = ?
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:1068)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:673)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:590)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:62)
at android.database.sqlite.SQLiteStatement.<init>(SQLiteStatement.java:34)
at android.database.sqlite.SQLiteDatabase.executeSql(SQLiteDatabase.java:2086)
at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:2064)
at net.osmand.shared.api.SQLiteAPIImpl$SQLiteDatabaseWrapper.execSQL(SQLiteAPIImpl.kt:51)
at net.osmand.shared.gpx.GpxDatabase.updateGpxParameters(GpxDatabase.kt:94)
at net.osmand.shared.gpx.GpxDatabase.updateGpxParameters(GpxDatabase.kt:80)
at net.osmand.shared.gpx.GpxDatabase.updateDataItem(GpxDatabase.kt:69)
at net.osmand.plus.track.helpers.GpxDbHelper.updateDataItem(GpxDbHelper.java:139)
at net.osmand.plus.track.cards.GpsFiltersCard.updateGpsFilters(GpsFiltersCard.java:212)
at net.osmand.plus.track.cards.GpsFiltersCard.lambda$setupSlider$3(GpsFiltersCard.java:192)
at net.osmand.plus.track.cards.GpsFiltersCard.$r8$lambda$j1loJrQY6ctyEdVesEEzlFxVGrU(Unknown Source:0)
at net.osmand.plus.track.cards.GpsFiltersCard$$ExternalSyntheticLambda1.onValueChange(Unknown Source:11)
at com.google.android.material.slider.Slider$OnChangeListener.onValueChange(Slider.java:45)
at com.google.android.material.slider.BaseSlider.dispatchOnChangedFromUser(BaseSlider.java:2371)
at com.google.android.material.slider.BaseSlider.snapThumbToValue(BaseSlider.java:2117)
at com.google.android.material.slider.BaseSlider.snapActiveThumbToValue(BaseSlider.java:2102)
at com.google.android.material.slider.BaseSlider.snapTouchPosition(BaseSlider.java:2098)
at com.google.android.material.slider.BaseSlider.onTouchEvent(BaseSlider.java:1998)
at com.google.android.material.slider.Slider.onTouchEvent(Slider.java:42)
at android.view.View.dispatchTouchEvent(View.java:15011)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3143)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3121)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2802)
at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:500)
at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1905)
at android.app.Activity.dispatchTouchEvent(Activity.java:4263)
at net.osmand.plus.activities.MapActivity.dispatchTouchEvent(MapActivity.java:1396)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:70)
at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:458)
at android.view.View.dispatchPointerEvent(View.java:15270)
at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6657)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6457)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5913)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5970)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5936)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:6101)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5944)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:6158)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5917)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5970)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5936)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5944)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5917)
at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8999)
at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8950)
at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:8918)
at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:9122)
at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:268)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:335)
at android.os.Looper.loopOnce(Looper.java:161)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7932)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942)
Description
When editing a GPX track and trying to use the GPS filter (https://www.osmand.net/blog/osmand-android-4-1-released#gps-filter), OsmAnd crashes.
The track is a track that was recorded by OsmAnd.
Steps to reproduce
Edit GPX track, select Options / GPS filter, use any of the sliders -> crash
Actual result
💥
Expected result
🍹
Your Environment (required)