Debugging a Non Reproducible Crash - Alexandre Moureaux, React Advanced 2021

Debugging a non-reproducible crash with React Native, involving a Java error, race condition, and Android v4 support library, and learn how to collaborate and use the debugger effectively to find the solution.

Key takeaways
  • Debugging is harder when the crash can’t be reproduced, but understanding the bug is crucial.
  • In this case, crashes were happening at startup, and the app was crashing instantly.
  • The app is using React Native, and the crash is related to a Java error.
  • The bug is caused by a race condition in the SimplePool class.
  • The crash is triggered by a specific combination of events, making it hard to reproduce.
  • The Android v4 support library is also involved in the crash.
  • Sentry is used for crash reporting, but it’s being overwhelmed by the number of crashes.
  • The problem is related to native navigation, and using native modules (MQT) is problematic.
  • The fix is to downgrade the SVG library and use a different version of React Native.
  • Debugging requires understanding the bug, using the debugger, and collaborating with others to find the fix.
  • Implementing crash reporting tools and configuring them to track the issue is important.
  • React Native developers need to understand the underlying issues and use the debugger effectively to find bugs like this.
  • Debugging a non-reproducible crash is challenging, but using the debugger and collaborating with others can help find the solution.