Blogs

News

Favorite Posts

ctodx

Discussions, news and rants from the CTO of Developer Express, Julian M Bucknall

Elementary, my dear Watson

     

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.

Published Aug 25 2007, 08:28 PM by Julian Bucknall (DevExpress)
Filed under: ,
Technorati tags: Watson, quality
Bookmark and Share

Comments

 

Jan Rosendahl said:

We are currently planning to do the same, but have not found the link to sign up yet. Searching for "error reporting" on the MS site yields a lot of broken links :-(

Since all of us customers could benefit too, please post the link where you can sign up.

August 26, 2007 4:06 AM
 

Ahto T. said:

I usually press Send if I think that the crash info of this event will be useful (like I do often when Flash crashes IE7). However, many times Watson tells me in exchange that this is a known problem and more informaiton can be found "here", but the link that is provided usually does not display any meaningful web page, usually some Microsoft page with generic information about somehting else. I guess that can stop many people sending crash input.

August 26, 2007 6:33 AM
 

Daniel Danilin said:

We are planning to use Watson in our program. And we are already sign up.

But I don't find any information of how to send a stack trace. Do we need to change something in our program?

August 26, 2007 7:02 AM
 

Tracy McClarnon said:

Here is the information you need to get started:

www.microsoft.com/.../StartWER.mspx

August 26, 2007 10:58 AM
 

Ben Hayat said:

Julian, that was a very helpful info to share with us. I had no ides that third parties can sign up to Watson data.

Thanks for sharing!

August 26, 2007 1:29 PM
 

Caesar Frederick Qüeb Montejo said:

I alway do a click in the Send button. Specially in the latest days that i working using Visual Soursafe.... this applications causes that VS2005 crashes. Others times i have fixed the issues, thanks to the link that Watson supply to me.

Thanks for the info

Regards

August 26, 2007 7:31 PM
 

Rollie Claro said:

i must admit, when my boss encounters errors that has send, he clicks it in an unlimited fashion.

but i think its good that we can sign up

August 26, 2007 11:58 PM
 

David Gardiner said:

I'm curious as to whether you get information from Microsoft about crashes that are indirectly caused by your products?

Say that one of your Visual Studio addins causes VS to crash, I suspect the main dump would be tagged as VS.NET rather than your DLL.

Do you still end up with the dump info after MS triage it?

-dave

August 29, 2007 6:14 AM
 

drew.. said:

Aweseome post Julian.. funny how our habits form and become second-nature... i was a staunch "Do Not Send" kinda guy.. i will definitely rethink this now. While i don't have the tech skillset to sign up an use this info, it is certainly good to know.. cheers, drew..

August 29, 2007 10:46 AM

About Julian Bucknall (DevExpress)

Julian is the Chief Technology Officer at Developer Express. You can reach him directly at julianb@devexpress.com. You can also follow him on Twitter with the ID JMBucknall.
More from DevExpress
Live Chat
Have a pre-sales question?
Need assistance with your evaluation?
We are here to help.
Chat is one of the many ways you can contact members of the DevExpress Team. We are available Monday-Friday between 8:30am and 5:00pm Pacific Time.
If you need additional product information, require pre-sales assistance, or want help with your order, write to us at info@devexpress.com or call us at
+1 (818) 844-3383.