Researchers develop "defibrillator" for stalled software

software

It's a common scenario: a co-worker starts screaming obscenities at a computer because it stalled in the middle of something important.

Researchers at MIT believe they have found a way to fix stalled software without losing work, which they're calling a defibrillator for hung applications.

One major cause of stalled software is infinite loops - when applications execute a single bit of code over and over again. To get out of that frustrating cycle, researchers have created a tool called Jolt that interrupts those infinite loops, pushing the software onto the next line of code.

Jolt looks out for infinite loops by monitoring memory use, taking a series of "snapshots" after each loop.

"The snapshots could be completely different," explains researcher Michael Carbin. "That can be an indicator that your program is computing. It may be doing something useful for you, so maybe you don't want to break out of this. But if it's not, and it has exactly the same state, then clearly it's stuck in an infinite loop."

Using Jolt, the researchers have restored five different programs, leaving them stable enough to save work and restart.

Compiler problems

However, the days of crashing browsers and productivity suites aren't yet behind us, as there are a few problems with the system. First, it's quite demanding, and watching all the loops in a program will slow it down by up to eight per cent, Carbin said.

What's more, in order to force the software out of the loop, Jolt needs to be applied when the program is compiled - and the researchers admit that "getting commercial software developers to use Jolt when compiling their code could be a tall order".

To solve that problem, the researchers are working on a follow-up called Bolt for compiled software. So far, it works with basic applications, but in more advanced programs it's difficult to see where loops begin and end.

To beat that, the researchers are working on an algorithm to help Bolt "orient itself" and considering letting it start "hopping around to new instructions at random" until it finds a solution.