Quick answer: Watch for the crash still occurring on the fixed version, continued reports after the fix, the crash rate not dropping, and the bug recurring under conditions you didn't address. Verify fixes in the field, per version.
Writing a fix isn't the same as fixing the bug, a fix that looks right can fail to work, so verifying matters. Here are the signs your fix didn't work.
The Crash Still Occurring on the Fixed Version
The direct sign is the crash still occurring on the version that shipped the fix, you fixed it, shipped it, and the crash is still happening on the fixed build. If the crash persists on the fixed version (as players adopt it), the fix didn't work, it didn't address the actual cause in the field.
Bugnet tracks crashes per version, so a crash persisting on the fixed build is identifiable. The crash still occurring on the fixed version is the direct sign your fix didn't work, and per-version tracking is how you verify, you watch the fixed build's data, and if the crash that was supposed to stop is still occurring on it, the fix failed, which you'd only know by checking per version (not by assuming).
Continued Reports or Complaints After the Fix
A sign is continued reports or complaints about the bug after the fix shipped, players still hitting the issue you thought you fixed. If players keep reporting the bug after the fix, it didn't work (or didn't fully work), the fix didn't resolve the issue for players in the field.
Bugnet captures crashes from the field, so continued occurrences after a fix are identifiable. Continued reports or complaints after the fix are a sign it didn't work, and capturing crashes from the field (not just relying on reports) confirms whether the bug is still occurring (and how much), since reports understate it, the field data shows whether the crash actually stopped or is still happening despite the fix.
The Crash Rate Not Dropping as Expected
A sign is the crash rate not dropping as expected after the fix, if a fix for a high-impact crash should reduce your crash rate but it doesn't (on the fixed version), the fix didn't work, or only partially worked (e.g. fixed one of several causes grouped under the same signature). The expected improvement not materializing signals a failed or partial fix.
Bugnet tracks crash rate per version, so the expected drop (or its absence) is visible. The crash rate not dropping as expected is a sign your fix didn't work (or only partially), and per-version crash-rate tracking is how you see it, you can check whether the fixed build's crash rate dropped as the fix should have caused, and if it didn't, the fix failed or was partial, which the per-version data reveals so you can address it.
Watch for the crash still occurring on the fixed version, continued reports after the fix, the crash rate not dropping, and the bug recurring under conditions you didn't address. Verify fixes in the field, per version.