BARfly Help - Information Menu - Load/Save failure reporting

  Load/Save failure reporting

Inevitably, a data file will fail to load or save properly, especially during the I.F. development process.  BARfly reports detailed information about the conditions leading up to the failure as plain text.  Choose Information.Show Load/Save Failures from the menu to display failure information.

There are two pieces of information pertinent to failure info:  the call stack and the node record.  The information is essentially the same as that reported by the BAR::Get_Failure_Call_Stack and BAR::Get_Failure_Node_Record interfacial functions.

The call stack is a record of the functions being called at time of failure, displayed backwards from function where error occurred to function that started a function execution session.  Construct scope, function name, and failure location are reported for each function call.  Note that not all failures during loading and saving will involve the call stack, since some failures, especially validation failures, come about from the entire file being invalid, rather than a particular point in a function having a specific problem.

The node record is a sort of "walkthrough" of the deserialization or serialization procedures at the time the failure occurred, working backwards from approximate procedure failure point to top-level block mapping and preparation.  This record is not foolproof, especially for validation failures, since it is unclear from the perspective of BAR which failures are "intended" and which ones are "unintended."  Construct name, relative child position, and construct size are reported for each step of the procedure.

BAR takes safety in file deserialization and serialization very seriously. Many binary loading or saving algorithms can cause exceptions, deadlocks, and program crashes if invalid content is encountered. BAR's universal mechanism for deserialization and serialization generally only results in either a BAR critical error or a validation failure, neither which cause BARfly (or any other application using the BAR engine) to crash.

BAR's failure-reporting capability provides a significant advantage over general-purpose binary loading and saving algorithms.  It is difficult to write general-purpose code with so many possible "failure points" handled seamlessly; BAR not only catches all faults, but remembers what it was doing at the time of failure.


  See also: [Viewing node information] [Viewing the log] [Viewing memory blocks]
[Viewing file information] [Construct hierarchy diagrams] [Determining I.F. protocol support]


BARfly Help Copyright © 2009 Christopher Allen