Ever have an application crash?  Well, VerifyMyPC crashes and I have no 
clue as to where it is crashing.  I have some idea:  I introduced 
Alternate Data Stream support in 2.4 and the core engine started 
crashing around the same time.  I've stared at the relevant MSDN Library 
documentation and scratched my head and even made faces at the code and 
still couldn't figure it out (making faces didn't help much, but it sure 
was fun*).

* There goes my credibility.


However, the problem is intermittent.  And by "intermittent", I mean 
that it crashes once in a VERY great while.  The one time I had the 
problem occur on my computer, I didn't hook in with a debugger because I 
figured I could replicate it later.  Still beating my head against a 
wall for that one.

So I came up with an alternate solution.  Microsoft has this program 
called "Windows Error Reporting" or WER for short.  Go search Google 
(for you Google nuts).  You know those dialogs that say, "Send this 
Error Report to Microsoft"?  Well, WER is where those reports end up. 
To get into the program requires modifying your source code to include 
special stuff and spending several thousand dollars - then you have to 
pay something like $500 per year to stay in the program.  And then you 
don't get error reports until you say to collect certain types of error 
reports on the website.  In other words, a big, expensive, ugly mess 
that doesn't really work.  Companies have to be interested enough AND 
willing to spend that kind of dough to get in.  And _users_ know that 
hitting the "Send Error Report" button doesn't fix anything.

I already knew about WER and how it worked (through previous experience) 
and I also don't want to spend that type of money if I can avoid it. 
And, in general, my code is pretty solid.  My crash bug rate is 
something like once every 6 months _internally_ and even less with 
releases.  Still, I would like to know when an application crashes.

Now for my solution.  I found some code on CodeProject.com and tried it 
out.  As usual, code from there is inevitably broken (from my 
perspective).  So, I came up with the nifty plan to send the error 
report generated to my web server which would then e-mail me (too many 
problems with direct e-mail).  5,000+ lines of code and many sleepless 
nights and hundreds of debugging sessions later (dropping in a small 
chunk of my core library plus fixing 50 or so problems the original 
authors made - I didn't want to dump the whole thing in), I have what 
I'd call a bit of pure genius.  I have it set up so that the crash 
reporter is completely optional but support for it is compiled into 
every application without doing a single thing.

What displays is a dialog (heavily modified) that requires an e-mail 
address*.  The package includes a couple extra files (beyond 
CodeProject's) containing OS, CPU, RAM, primary HD information plus what 
version of VerifyMyPC they are running (I have 4 versions per release!). 
  And the whole package is compressed prior to sending.

* Most people don't like giving out their e-mail address, but most users 
like to see bugs get fixed...sooo, there's a tradeoff here.  Microsoft's 
approach clearly doesn't work (with a few minor and VERY rare exceptions).

With this I should be able to figure out the crash bug.  A terrible 
approach, but the only valid one since I have only had it happen one 
time on my computer and hasn't happened since.  It would be great if 
people installed VerifyMyPC and let it run a few days to see if they run 
into the crash bug to help me out.

I've thought about releasing this as a new product, but it requires a 
very special setup for it to be an elegant solution like this one.  And 
the core library drop isn't exactly pretty.  I was trying to minimize 
the impact of the core library interface (technically, both the original 
author and especially me are breaking the rules by doing stuff inside a 
crash situation - I was trying to minimize my impact but 5,000 lines of 
code isn't pretty).  I suppose if people were interested, I might 
consider it but it would be more of a service-style install (i.e. I work 
with your team and you pay me lots of cash for the privilege).

-- 
Thomas Hruska
CubicleSoft President
Ph: 517-803-4197

*NEW* VerifyMyPC 2.5
Change tracking and management tool.
Reduce tech. support times from 2 hours to 5 minutes.

http://www.CubicleSoft.com/VerifyMyPC/

Reply via email to