Crashpad’s database behavior is by design.
I think you’ve made some assumptions about the crash report database based on how you expect it to work, instead of how it’s designed and implemented to work. By design, the database maintains crash reports. There’s no provision for rapid removal of crash reports, because crash reports may not have been uploaded, or may be locally valuable even after upload. Application launch and relaunch are uninteresting to the database’s role in fulfilling this purpose. Instead, Crashpad implements pruning, wherein the crashpad_handler process will periodically examine the database and remove (or “prune”) old or large reports. You’ll find more about this at client/prune_crash_reports.h.
Crashpad does not expect you to poke around in its database by yourself. It’s very easy to put it into an inconsistent state. Database operations should be made through the database interface, which you’ll fid in client/crash_report_database.h.
I think your assumptions about what CleanDatabase does, and how to use it, are also incorrect. It’s also documented in client/crash_report_database.h, but I also can’t envision a need for you to call it.