Skip to content

Latest commit

 

History

History
96 lines (55 loc) · 2.78 KB

pipeline.rst

File metadata and controls

96 lines (55 loc) · 2.78 KB

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

    Replaces the signature with IPC channel error.

  8. Rule: SignatureIPCMessageName

    Appends ipc_message_name to signature.

  9. Rule: SignatureParentIDNotEqualsChildID

    Stomp on the signature if MozCrashReason 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.