Skip to content

release: --split-debug-info under build/ is wiped by inter-ABI flutter clean (obfuscated releases silently lose arm64 symbols) #1

Description

@kennedyowusu

What

On a multi-ABI koolbase release with --obfuscate --split-debug-info=<dir under build/>, the flutter clean run between ABIs deletes build/, taking the first ABI's symbol map with it. The release ships with only the last ABI's map → arm64 crash symbolication is silently broken.

Trigger (needs all three)

  • Obfuscation on (--obfuscate)
  • Multi-ABI release (the default)
  • --split-debug-info resolves under build/

Why it matters

Silent, and fails late — only surfaces when symbolicating a real production arm64 crash. Bad look for a platform that sells crash handling.

Not affected

  • Shipped engines / patches (orthogonal)
  • Non-obfuscated releases
  • Symbol dirs outside build/

Fix (remove the footgun, don't just document it)

release already preserves each ABI's libapp.so across the inter-ABI clean — route the symbol map through that same preserve step. Or default --split-debug-info to a koolbase-managed dir outside build/ when the dev doesn't set one. Keep a guard that warns/relocates if it resolves under build/.

Do NOT

Rip out the inter-ABI flutter clean to "solve" this — it's likely load-bearing for clean per-ABI artifacts. Preserve-the-map is the safe fix; removing the clean is a separate investigation.

Priority

Low. Belongs in the release.go pass but must not expand chunk 1.

Stopgap today: put --split-debug-info outside build/ (the kb_symbols workaround already in use).


⚠️ Unverified: confirm release actually runs flutter clean between ABIs against the source before treating this as fact.

Metadata

Metadata

Assignees

Labels

bugSomething isn't working

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions