5

There are a few related questions on SO - but have not found the answer -

I would like to generate a "signature"/bucket id to report a minidump/crash back to our issue tracking system. Since MS already does this with "bucket ids" I figured I could just re-use their bucket/signature generation.

Can I get that ID from either a top level filter or the _EXCEPTION_POINTERS object I have inside the filter or the _MINIDUMP_EXCEPTION_INFORMATION structure or from the minidump itself?

This is a C++ application.

Tim
  • 20,184
  • 24
  • 117
  • 214

2 Answers2

4

There's a paper talking about how Microsoft guys create bucket id at the first place (, and yes, of course, this paper is from Microsoft). You don't really need to reverse engineering exactly the same bucketing algorithm they use. It's the idea that works.

The paper can be found at http://www.sigops.org/sosp/sosp09/papers/glerum-sosp09.pdf They also do a slide since this is a SIGOPS paper: http://www.sigops.org/sosp/sosp09/slides/glerum-slides-sosp09.pdf

Peon the Great
  • 1,289
  • 1
  • 10
  • 17
  • I read that page - yes, but I want to know if I can get that id they create from the dump file or other api. I want to reuse their code/work - not do it myself. – Tim Jan 08 '11 at 14:06
  • 1
    AFAIK there's no public API. The bucket id on winqual is a CRC32 checksum of the factors listed in their paper. If there's one, I'd like to know, too :) – Peon the Great Jan 10 '11 at 06:24
4

Not sure which bucket id you need. The numeric id is assigned by the server and you can find it after the report is sent by looking at the event log. Look for event ID 1001 in the application event log.

To find the bucket id in string format use windbg or cdb and use the !analyze command.

Note that for the purpose of actually bucketing you will probably want to look at WATSON_STAGEONE_URL rather than BUCKET_ID.

John
  • 5,561
  • 1
  • 23
  • 39
  • I don't want to send the event to winqual to get the bucket id - I just want a similar algorithm to run on my own so I can send dmp files to fogbugz. +1 for the event log info - I did not know that. – Tim Jan 14 '11 at 14:34
  • 1
    If you do not want to send the event to Microsoft, you need to setup your own databse. Take the Watson URL from "!analize -v", extract the path (from the / after StageOne to the final .htm) and look it up in a database, if the path exists the database should have the bucket ID. If the path is not found, increment the bucket count, assign this as the bucket id, and store the mapping in the database. – John Jan 14 '11 at 16:18
  • I think that should be `!analyze -v` – the_mandrill Aug 15 '16 at 13:25