logo
Metalware automatically identifies and records defects during each fuzzing run. A defect is defined as either:
  • A Crash: Caused by malformed or unexpected input.
  • A Memory Violation: Detected by Havoc’s built-in memory sanitizer.
Each defect is logged and can be further examined through two key actions: View and Trace.

1. Viewing Defects

After a fuzzing run, you can review defects by navigating to the defects section:
Image without caption
Key Features:
  • Automatic Classification:
    • Havoc attempts to automatically classify each defect based on the collected trace data.
  • Chronological Stack Traces:
    • For every defect, Havoc displays a chronological series of events with corresponding stack traces that led to the crash. This detailed view helps you understand the sequence of operations that triggered the issue.
💡
Reviewing the ordered stack trace can provide insights into which functions and basic blocks contributed to the fault.
Image without caption

2. Viewing the Program Trace

For a deeper analysis, you can download a complete program trace by selecting the Trace option:
Image without caption
A trace provides a unified, detailed view of everything that occurred during the program execution, including:
  • Instruction Flow:
    • A sequential listing of executed instructions, organized into functions and basic blocks.
  • Register Activity:
    • Information on which registers are written to at each instruction.
  • Memory Operations:
    • Detailed records of memory reads and writes associated with each instruction.
Why Use a Trace?
A complete program trace is invaluable for in-depth analysis, helping you pinpoint why a defect occurred and enabling you to trace the exact sequence of operations that led to a failure.