We are constantly striving to improve the quality of our software, be
it the controls, the frameworks, or the IDE tools. Obviously we do so
by writing test cases and continually running them, and the support
team are instrumental in identifying bugs that our customers run
across. The issue tends to be that customers use our controls in ways
we never thought of; tsk, tsk, them wacky customers, eh?
Sometimes though we even manage to identify and fix bugs after release
but before our customers report them. ESP? No, just Watson.
I'm sure you've run into the dialog: you're working away when
suddenly, bam, the program you're using crashes and the operating
system pops up this dialog telling you that there's been some problem,
and would you like to send the diagnostic information about this
problem to Microsoft? This dialog is known as Watson, after the
sidekick to Sherlock Holmes (and in fact the narrator of the stories).
I wonder, what do you do? Do you automatically click the Don't Send
button? When I was at Microsoft, I got into the habit of clicking Send
instead. Why? Because the dialog is not sending Microsoft intimate
details about your setup as many would lead you to believe, but
instead is sending details of the crash that just occurred.
What happens to this data? It's collected and analyzed. Watson was
originally developed by the Office team for Microsoft Office and
proved invaluable at enabling the team to identify bugs seen out "in
the wild" and then to fix them. Watson was so successful at finding
intractable and hard-to-find bugs that the subsystem was appropriated
by the Windows team and is now part of the operating system.
The thing is Watson does not differentiate between crashes that occur
within Windows or Microsoft products; it's a collector of all crashes,
including programs that you or I would write. And Microsoft makes this
data from all the crashes over all the world available to third
parties as well.
A third-party software company, like, say, Developer Express, can
register with the Watson team to receive the crash information that
pertain to its EXEs and DLLs.
This happened just recently in fact. We released version 2007.2 of
DXperience and within a day, we had a seven or eight incidents of the
same event. The Watson data we get indicates the DLL inside which the
crash occurred (obviously one of ours), the stack trace, and the
address at which the crash occurred. It was the matter of a couple of
hours for us to set up the debug information, and then work out at
which line the crash occurred. Using that and the stack trace
information we were able to work out that the crash occurred in a
finalizer: we were assuming that an object was non-null when in fact
it was null due to finalization. The fix was easy to do and appeared
in the next version.
I cannot stress this enough though. Because seven people did, in fact,
click Send meant that we were notified of the crash and were able to
fix it. Without the Watson dialog and crash data collection, we would
not have seen this problem as quickly, and, because it was in a
finalizer, it would have been extremely difficult to reproduce. We can
also provide some help text as well for the crash, so that someone who
clicks Send can also be notified that, for example, there is a release
available that will fix the problem.
The Watson data is always worth sending to Microsoft. By doing so, you
are ensuring that companies like ours will improve the quality of
their software. So please click Send.
Free DevExpress Products – Get Your Copy Today
The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the
DevExpress Support Center at your convenience. We’ll be happy to follow-up.