Your Web browser quits and interrupts your blissful surfing.
The video game that's currently dominating your life crashes just as you're about to wipe out the enemy forces and complete the penultimate level.
Windows lapses into its infamous "Blue Screen of Death."
Software bugs bite.
But some University of Illinois researchers are using data-mining techniques to create tools that may make it less likely we'll get bitten in the future.
"I think we are probably the first ones using data mining (in) addressing this problem," UI computer science Professor Yuanyuan Zhou said recently.
Data mining, in simplified terms, involves sifting through masses of information to find interesting patterns and relationships and even to create new, "value-added" information in the process.
The technology is a hot topic in everything from better Web searching to homeland security. The National Security Administration's controversial tracking of phone calls makes use of it to try to identify terrorists, among other things.
Zhou and her students use data mining for a more benign purpose. Instead of millions and millions of phone calls, their tools employ it to examine the millions and millions of lines of computer code that underpin modern programs like Windows and the free Linux operating system, on which the UI software has been tested.
Zhou, whose research focuses on software reliability, saw the need for such tools during her own experiences as a programmer and entrepreneur. Before coming to the UI in 2002, she worked for tech sector big hitters NEC and Oracle and started her own data storage company, Emphora.
She was struck by the "primitive" nature of existing methods for debugging software.
"One bug takes three or four days to chase it," Zhou said.
The situation is a big factor in making software development expensive, she said. Some estimates place debugging at 50 to 70 percent of development costs, said Zhou, who figured there had to be a better way.
The result is four tools created by UI researchers, called CP-Miner, PR-Miner, Rx and Triage, respectively. The programs can find and address bugs, in part by divining a programmer's intentions and drawing on collected knowledge about how programmers write code.
CP-Miner looks at "copy-pasted" code, chunks of coding reused in programs to perform like tasks and to cut down on the need to code anew. Sometimes, those code pieces need some modifications to function properly in their new role.
Zhou likened it to personalizing form letters. A letter to Bob can be used for Alice, but Alice's name needs to replace Bob's after Dear and references to "he" in the letter's body need to be changed to "she."
The UI tool tracks down instances where all the necessary changes haven't happened in computer code and makes corrections.
Programmers also use numerous rules in software – if a user clicks this, then do that – often not written down. PR-Miner examines code to infer those rules and then checks to see if they're being followed, kind of like a grammar checker that learns the language on the fly.
Both of the UI tools are fast, able to scan million of lines of code in less than a half hour at the high end and often in a few minutes.
Meanwhile, Rx and Triage promise to make software bugs that slip through less annoying to users. The former can actually discern a way to get around a bug temporarily, allowing a user to avoid its sting, while the latter diagnoses the cause and suggests a fix to the programmer remotely.
In addition to Linux, CP-Miner has been tested successfully on other free variants of the Unix operating system and on the popular Apache Web server, MySQL database and Mozilla and Firefox Web browser software, beefy programs all.
Zhou and colleagues have released it for use by the "open source" community of volunteer programmers who maintain free software such as Linux. The UI researchers are still refining the other tools.
Commercially, a number of companies that produce and rely on software, such as Microsoft and State Farm, have expressed interest in licensing the technology.
The work has been funded by the National Science Foundation and computer chip giant Intel.