"This program has performed an illegal operation and will be shut down"

I had almost forgotten that horrible message. Then I fired up my old computer with Windows 98 on it today.

It was like entering the time tunnel. 186 Mb of RAM?

Yeah the same exact thing with me. At work our “internet computer” is a 56K modem Win98 machine and it really is a minefield trying to surf the net…slowly.

It is fun really. The machine checking memory at start up.

Yes, I too have many unpleasant memories of getting that message. What the hell did that even mean anyway, and how were you supposed to fix it?

Usually that the program attempted to access memory outside the range that it was allowed. Or the memory subsystem errored in some way that had the same effect.

And you do nothing about it except curse. It’s the programmer’s fault, or your machine’s fault.

It really confused my Dad the first time he saw it.

" But HOW can it be an illegal operation? I went to shop, bought computer with my own honestly earned money, am using it in my own home, what is ILLEGAL?" :eek:

"Never mind, Dad - it’s a computer error message - it’s never going to make sense. :slight_smile:

Basically, Windows enforces a bunch of rules governing what programs are and aren’t allowed to do. One example of something that a program isn’t allowed to do is write to memory that doesn’t belong to it. If done properly, this means that an individual program can crash, but it won’t take the rest of the system with it(done improperly, you get Windows 98, which managed to have the whole system crash all the time). Anyway, in programmer’s parlance, if a program breaks the rules it has performed an “illegal operation”.

I’ve always wondered why they don’t just isolate and encapsulate the memory in the first place, so it becomes impossible to write memory to the wrong location. Any writing to memory goes into the program’s appropriate location, and nowhere else.

In other words, instead of getting this error message, the data would be written somewhere else that is not being used, and then any reference to the memory location would be mapped to the appropriate location. Or just don’t write it at all. But just give the program a chance to continue so you might be able to save your work.

Once a program has gone that far off the rails, there’s really no saving it. If it’s writing to memory that it doesn’t own those writes really should have gone somewhere else in memory. If writes start going to the wrong place, the program isn’t going to behave correctly from that point on. And if the program reads from memory that it doesn’t own, it’s impossible to figure out what the “correct” value to return from the incorrect read would be.

In other words, this is a kind of memory encapsulation in action. It keeps programs from fucking with each others’ memory, and furthermore prevents them from going completely off the rails and fucking God knows what of their own data up once it can be demonstrated that they’re displaying a serious bug in their attempts to use their own memory.

Once a program hits that point, it’s time to either terminate it or at least enter debug mode. Which, as I recall, were indeed the options this message used to come with (though it’s hardly as though the latter would be of any use to anyone except the original programmer).

Thanks fols. I learned far more about that error message than I ever knew. I now have to think of a way to raise it over dinner so I can pretend I am smart.

And I had to laugh at Celyn’s post.

Now that we’re talking about outdated computer actions, how about the rapidly flickering cursor? On my original computer (a hand-me-down made in 1999), every time I was on the internet for several hours the cursor would start rapidly flickering across the monitor. The only way to stop it would be to shut down the computer and restart. What was this and what purpose did it serve?

To elaborate on what others have said, you can keep the program from going outside its own memory zone, but there’s no way of figuring out where in its own zone it was really aiming for.

Blocking those memory options entirely and giving the program a chance to continue on would be a possibility, but I see the point that it’s better just to euthanize the program once it can’t follow the rules, since it’s unlikely to be able to recover on its own terms. Especially since there’s no way of being able to guess what’s a reasonable value when it’s reading out of bounds.

This is my main problem with error messages. Not only are they incomprehensible gobbledegook, but they will use familiar terms in an unusual way which just causes people to panic as they try to decipher it, and feel guilty thinking they did something wrong.

And over time it hasn’t improved much, except that errors are now usually less frequent.

The program was dealing a little blow on the side.

See, the problem is that error messages are written by programmers, and programmers have their own jargon which makes perfect sense to other programmers, but is utterly incomprehensible to non-programmers.