Export to GitHub

airbag - issue #93

Provide a mechanism for SymbolSuppliers to interrupt processing


Posted on Dec 7, 2006 by Happy Horse

We need to add a way for a SymbolSupplier to stop a minidump from being processed. We can use this for transient errors, such as when a symbol file isn't present in the symbol store, but it may show up later.

Comment #1

Posted on Dec 7, 2006 by Happy Cat

This patch adds the ability for SymbolSupplier::GetSymbolFile to interrupt processing. The interrupt status is returned back to the caller of MinidumpProcessor::Process() as a boolean.

Attachments

Comment #2

Posted on Dec 7, 2006 by Happy Cat

with review comments addressed

Attachments

Comment #3

Posted on Dec 7, 2006 by Happy Cat

oops, use this one.

Attachments

Comment #4

Posted on Dec 8, 2006 by Helpful Rabbit

What are the semantics of this, does "interrupt" mean "try again later"? Would we use this if we had a SymbolSupplier that could fetch symbols from the internet somewhere?

Comment #5

Posted on Dec 8, 2006 by Happy Horse

You can use INTERRUPT for whatever reason you might want the SymbolSupplier to stop processing for. We envision that a SymbolSupplier implementation that doesn't have a symbol file readily available could return INTERRUPT and add the missing symbol file to a list, from which symbol files are fetched from an outside location periodically. That way, you'd be able to get symbols from outside locations without forcing your processor to block. We had Microsoft's public symbol server in mind for this.

Brian checked this in revision [80].

Comment #6

Posted on Dec 11, 2006 by Helpful Rabbit

Hm. The only thing I don't like about that is that if we INTERRUPT on the first unavailable symbol, you'd only be able to queue up one missing symbol file per pass. If the minidump has N missing symbol files, you'd have to attempt to process it N times to know to download all of them. I think what you'd really want to do is iterate through all the modules, and let the symbol supplier look for all of them, and then if it has some missing symbols the processing can stop. I don't know if that's feasible with what bryner implemented here, or if it would require some changes.

Status: Fixed

Labels:
Type-Defect Priority-Medium Component-Processor