Conversation
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 31b5cc6. Configure here.
| "customTab" to "$isCustomTab", | ||
| ), | ||
| ) | ||
| } |
There was a problem hiding this comment.
Feature toggle kill switch dropped from Crashpad initialization
High Severity
The new initCrashpad() method does not check the nativeCrashFeature.nativeCrashHandling() or nativeCrashHandlingSecondaryProcess() feature toggles before initializing Crashpad. The old code in success() (now dead code at lines 122–123) gated crash handler registration behind these toggles, which serve as remotely-controllable kill switches (both default to TRUE). Without these checks, there is no way to remotely disable Crashpad initialization if a problem is discovered in production.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit 31b5cc6. Configure here.
| LibraryLoader.loadLibrary(context, "crash-ndk", this) | ||
| // private fun asyncLoadNativeLibrary() { | ||
| // LibraryLoader.loadLibrary(context, "crash-ndk", this) | ||
| // } |
There was a problem hiding this comment.
Dead code left from incomplete migration to Crashpad
Medium Severity
The migration to Crashpad left behind substantial dead code: the commented-out asyncLoadNativeLibrary() method and its calls (lines 91, 100, 109, 140–142), plus the now-unreachable success() and failure() callbacks, the jni_register_sighandler external function, and the LibraryLoaderListener interface on the class. Since LibraryLoader.loadLibrary() is no longer called, none of these code paths can execute. This obscures the actual logic and makes it harder to see the missing feature toggle check.
Reviewed by Cursor Bugbot for commit 31b5cc6. Configure here.
48e342a to
ccbb0e0
Compare
ccbb0e0 to
8580f8e
Compare



Task/Issue URL: https://app.asana.com/1/137249556945/project/1198194956794324/task/1214089263947931?focus=true
Description
Integrated the android-crashkit library in the Android app
Steps to test this PR
Test
m_app_register_native_crash_handlerpixel is sent./server/crashpad_server.pyUpload URLprinted when executing the server and checkNo rate limit, then save and restartNote
Medium Risk
Introduces Crashpad-based native crash handling across multiple processes and adds internal tooling for generating/sharing/uploading minidumps; failures could affect startup/crash reporting and APK packaging of native binaries.
Overview
Integrates
com.duckduckgo.crashkit:android-crashkitand switches native crash handling from the existing NDK signal-handler path to Crashpad initialization via a newCrashpadInitializerabstraction, emitting new pixels (m_app_register_native_crash_handler,m_app_native_crash) and attaching basic annotations (process, custom tab, WebView info).Adds internal-only Crashpad tooling: a new dev hub (
CrashAnrDevActivity) with pluggable capabilities to trigger a native crash or dump without crashing, browse/share/delete minidumps, and configure an upload URL/no-rate-limit toggle (with restart) via an internalCrashpadInitializerreplacement. Build/packaging is updated (useLegacyPackaging = true) to ensure the Crashpad handler binary is extracted to disk, and helper scripts are added to generate Breakpad symbols.Reviewed by Cursor Bugbot for commit 31b5cc6. Bugbot is set up for automated code reviews on this repo. Configure here.