.. THIS IS AUTOGEMERATED USING:
   
   ./socorro-cmd signature-doc socorro.signature.generator.DEFAULT_PIPELINE socorro/signature/pipeline.rst
   
Signature generation rules pipeline
===================================


This is the signature generation pipeline defined at ``socorro.signature.generator.DEFAULT_PIPELINE``:

1. **Rule: SignatureGenerationRule**
   
   Generates a signature based on stack frames.
   
   For Java crashes, this generates a basic signature using stack frames.
   
   For C/C++/Rust crashes, this generates a more robust signature using
   normalized versions of stack frames augmented by the contents of the
   signature lists.
   
   Rough signature list rules (there are more details in the siglists README):
   
   1. Walk the frames looking for a "signature sentinel" which becomes the
      first item in the signature.
   2. Continue walking frames.
   
      1. If the frame is in the "irrelevant" list, ignore it and
         continue.
      2. If the frame is in the "prefix" list, add it to the signature
         and continue.
      3. If the frame isn't in either list, stop walking frames.
   
   3. Signature is generated by joining those frames with " | " between
      them.
   
   This rule also generates the proto_signature which is the complete list
   of normalized frames.

2. **Rule: StackwalkerErrorSignatureRule**
   
   Appends minidump-stackwalker error to signature.

3. **Rule: OOMSignature**
   
   Prepends ``OOM | <size>`` to signatures for OOM crashes.
   
   See bug #1007530.

4. **Rule: AbortSignature**
   
   Prepends abort message to signature.
   
   See bug #803779.

5. **Rule: SignatureShutdownTimeout**
   
   Replaces signature with async_shutdown_timeout message.

6. **Rule: SignatureRunWatchDog**
   
   Prepends "shutdownhang" to signature for shutdown hang crashes.

7. **Rule: SignatureIPCChannelError**
   
   Stomps on signature with shutdownkill signature
   
   Either "IPCError-browser | ShutDownKill" or "IPCError-content | ShutDownKill".

8. **Rule: SignatureIPCMessageName**
   
   Appends ipc_message_name to signature.

9. **Rule: SignatureParentIDNotEqualsChildID**
   
   Stomp on the signature if moz_crash_reason is ``parentBuildID != childBuildID``.
   
   In the case where the assertion fails, then the parent buildid and the child buildid are
   different. This causes a lot of strangeness particularly in symbolification, so the signatures
   end up as junk. Instead, we want to bucket all these together so we replace the signature.

10. **Rule: SignatureJitCategory**
    
    Replaces signature with JIT classification.

11. **Rule: SigFixWhitespace**
    
    Fix whitespace in signatures.
    
    This does the following:
    
    * trims leading and trailing whitespace
    * converts all non-space whitespace characters to space
    * reduce consecutive spaces to a single space

12. **Rule: SigTruncate**
    
    Truncates signatures down to SIGNATURE_MAX_LENGTH characters.

