Skip to content

Crash after async history change #640

@BDR-Thermea-B2B-apps

Description

@BDR-Thermea-B2B-apps

Hello,

It looks like when popping back to the root of our app the Instabug navigation observer causes an uncaught exception when removing an item from a list that is empty. There is an if check around it but it is an async/await. So it looks like in the meantime while the async call is running the list can change, causing this exception.

So I suspect it goes like this

if _steps.isNotEmpty -> reportScreenChange gets called and asynchronously _steps gets changed -> _steps.removeLast(); on a now empty list without checking if it is empty after the await

I created a potential fix for it: #639

E/flutter ( 6807): [ERROR:flutter/runtime/dart_vm_initializer.cc(40)] Unhandled Exception: RangeError (length): Invalid value: Valid value range is empty: -1
E/flutter ( 6807): #0      List.[] (dart:core-patch/growable_array.dart)
E/flutter ( 6807): #1      List.removeLast (dart:core-patch/growable_array.dart:345:20)
E/flutter ( 6807): #2      InstabugNavigatorObserver.screenChanged.<anonymous closure> (package:instabug_flutter/src/utils/instabug_navigator_observer.dart:33:18)
E/flutter ( 6807): <asynchronous suspension>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions