The STATUS_IN_PAGE_ERROR
describes itself as
"The instruction at XXX referenced memory at YYY.
The required data was not placed into memory because of an I/O
error status of ZZZ."
What does this mean?
It means that the memory manager needed to read some memory from
the disk, but the disk returned an error. (Namely, error ZZZ.)
Since it has no way to return an error code to your program—I
mean, after all, all your program did was read a variable from
memory; there's no way to return an error code from
int x = y if y cannot be read off the disk—it
is reduced to raising an exception.
When you see this message, and the I/O operation was coming from your hard
drive, then you need to go shopping for a new hard drive.
(You will also be alerted to a dying drive
if your drive supports S.M.A.R.T.)
Now.
You can see this error for sources other than hard drives.
For example, if you're running a program over the network
and the network connection dies,
and the memory manager needs to demand-page some code from
the program image, then you'll get this error because the
code couldn't be loaded off the network.
Similarly, if you yank a CD out of the drive while a program
is executing from it (or your CD is damaged),
there's a good chance that you'll get this error.
Naturally, the loss of a network connection or removal of a CD
does not mean that your network card or CD-ROM drive is failing;
it's a failure of the underlying connection or medium.
But if your hard drive starts generating I/O errors,
then there's not much that can be blamed aside from the drive itself.
(Okay, it might be a failing controller, but it's more likely
to be the drive itself.)
Comments
Post new comment