1
0
mirror of git://f0xx.org/ac/ac-docs synced 2026-07-29 07:58:26 +03:00
Files
ac-docs/CRASH_REPORTER.md
Anton Afanasyeu 69a448f156 initial
2026-06-23 12:20:43 +02:00

79 lines
2.3 KiB
Markdown

# Anonymous crash reporter
<!-- doc-meta:start -->
| Field | Value |
|---|---|
| Author | Anton Afanasyeu |
| Revision | R1 |
| Creation date | 2026-05-20 |
| Last modification date | 2026-05-20 |
| Co-authored | |
| Severity | medium |
| State | in progress |
| Document type | technical |
<!-- doc-meta:end -->
\newpage
\newpage
---
---
---
---
---
## Table of contents
<!-- toc -->
- [Android](#android)
- [Backend](#backend)
- [Report files](#report-files)
<!-- /toc -->
**Documentation index:** [README.md](README.md)
---
## Android
- **Main process:** `CrashReporter.install()` — any uncaught Java exception (cast or idle UI) → `files/crash_reports/pending/crash_yyyyMMdd_HHmmss.json` (same stamp as `session_*.json`). Active cast session stats are flushed with `globals.reason: "crash"` when applicable.
- **Runtime context:** every report includes `runtime_context` (foreground activity, `CastActiveState`, last `session_*.json` name) and `scenario` (`cast_session` vs `app_runtime`).
- **Watcher process:** `CrashWatcherService` in `:crashwatcher` — reads `settings.json``crash`, uploads pending reports (JSON body gzip-compressed), ingests native stub files.
- **Native:** `crash_hook.c` (unwind + `dladdr`) writes stubs to `crash_reports/native/`; watcher converts to schema v1 JSON.
- **User toggle:** Settings drawer → **Send anonymous crash logs** (`AppPreferences.send_anonymous_crash_logs`, default on).
Deploy tuning via app-private `files/settings.json` (see `examples/settings.json`):
```json
"crash": {
"enabled": "true",
"upload_url": "https://f0xx.org/app/androidcast_project/crashes/api/upload.php",
"prune_after_upload": "true",
"upload_interval": "5m",
"max_pending": 32
}
```
## Backend
PHP console and ingest API: `examples/crash_reporter/backend/` — see [README](../examples/crash_reporter/backend/README.md).
Production nginx/hosts: [INFRA.md](INFRA.md).
Roadmap: `examples/crash_reporter/ROADMAP.md`.
## Report files
| Pattern | Example |
|---------|---------|
| Pending crash JSON | `crash_20260520_153045.json` |
| Session stats (compare) | `session_send_20260520_120000.json` |
JSON fields: `schema_version`, `report_id`, `report_file`, `generated_at_epoch_ms`, `scenario`, `runtime_context`, optional `session_context`, `java` / `native`, `device`, `app`, `build`, `fingerprint`.