Jolt framework lets users force some hung programs to recover

Status
You're currently viewing only Stubabe's posts. Click here to go back to viewing the entire thread.
Not open for further replies.
A group of MIT researchers have developed an experimental software framework that can detect when a program has entered an infinite loop in some cases and give the user the option of forcing the loop to end. Ars explains how it works.

<a href='http://meincmagazine.com/science/news/2011/08/jolt-framework-lets-users-force-some-hung-programs-to-recover.ars'>Read the whole story</a>
 

Stubabe

Ars Scholae Palatinae
681
ErikHeemskerk":2djwx3wv said:
What. The. Fuck. This is the worst idea in software development since PHP. Forcing a program that's stuck in a loop out of said loop is as bad an idea as ignoring write errors and reporting your backup 'finished'.

There is no way to predict in what state the program will be in once the program is forced out of the loop, and will probably crash and burn.

The fact that that one MIT professor's instance of Word didn't, after he practically tortured the code to do what he wanted, is nothing short of a goddamn miracle. Maybe these guys should read some Raymond Chen.

Agreed 100%. The reason Windows BSODs, Linux Kernel Panics, and applications get unhandled exceptions is to prevent further damage. Often these errors could be ignored but modern systems are specifically designed to cease execution. Ask yourself which you would prefer: loosing the last half an hour's edits to a document or potentially overwriting the old version with a corrupt unreadable one?
 
Upvote
0 (0 / 0)

Stubabe

Ars Scholae Palatinae
681
Actually this reminds me of Norton's? old crash guard technology for Windows. It usually allowed you to bypass the 1st error only to encounter at least 3-4 new errors or the program going haywire. They dropped that "utility" pretty quick.

Why on earth do you want to allow a program to run on once it is obviously not working correctly? I mean what's next: a utility to fix divide-by-zero errors in programs by getting them to spit out a random number for the answer or fixing file not found errors by opening a random file instead?

This isn't even remotly useful as the only time you should trust the output of a program fixed by this tool is if you don't care much about its results. But, if you don't care that much why bother continuing anyway?
 
Upvote
0 (0 / 0)

Stubabe

Ars Scholae Palatinae
681
The point is _exactly_ to break the faulty internal logic to save the external logic (remaining resources, the end user). It is a way to make realtime or soft realtime software (ideally, laptops) more robust.

And you are a classic example of the mentality that leads to shoddy, slow software in the first place. Yes, let not validate our logic and input, no its much better to try and run with it and hope we can clean the mess up after it explodes in our face. Let's not fix our program instead run it lots of times abort when it fails and hope one run works.
If the programmer that wrote the code failed to validate the edge case that caused the error when they had explicit knowledge of what was meant to occur then how the hell is an external module meant to do a better job?
I also fail to see what this has to do with laptops or real-time systems (soft or otherwise). Real-time OSs must handle all long running jobs that fail to yield (either due to infinite errors or just lots of processing) and still meet their latency requirements - that's called scheduling not bug fixing. As for laptops? This is hardly a general use case and I don't see why infinite loops should represent a significant proportion of everyday workflows. Also a hung app != a hung system in a pre-emptive environment.



As for those that are claiming we can validate our way out of this really nasty loop termination hack. Let's take a hypothetical example.
Declare A, B
Loop (condition) { Do something with A}
If (A looks ok) Print A
Ok let's say condition fails to terminate the loop to we break in and jolt it. But if we validate A we are ok if A is corrupted by this, yes?
No, no,no!
1) A may pass basic validation but be wrong anyway -> now overwrite good data with bad (worse than just data loss)
2) Due to the code and stack mangling effects of optimising compilers we may breakout past our validation code (so it never gets to reject the void values) or end up running the wrong function entirely.
3) What if the error was in the validation code in the first place? What now, validation of validation code???
4) What to validate and where? The programmer is no longer in sole control of program flow so there is no causality in his/her code. A=B+C can suddenly become B=C+sheep or Print(flibble) so your error checking code will become more complex (and so more buggy) than your actual code.
This whole idea has been done in various forms before, it's a mess and an amateurish failure of logical reasoning and design, sooner or later anyone that tries it finds that out the hard way...
 
Upvote
0 (0 / 0)
Status
You're currently viewing only Stubabe's posts. Click here to go back to viewing the entire thread.
Not open for further replies.