RayLopez99 said:
On rare occasions, using a pirate version of Windows I got for $5 but
am too lazy to change, I get a BSOD. The other day, while using Google
Chrome on Youtube, I got such a problem. I think it's software related
(I got rid of Google Updater and Google Chrome Frame, which I think are
unstable, and I'm also thinking of getting rid of Google Earth, which also
I think acts like some sort of memory leak, or so it seems).
But to test the hardware, I ran for 8 hours straight, with no errors,
the latest Memtest86+, version 5.01. I am using DDR3 memory by Kingston,
4 MB. BTW an early "beta" version of Memtest showed numerous false positive
errors in a certain test involving random test patterns, but running the
latest version found no such errors. These errors were clearly some sort
of programming error.
So by definition it cannot be a hardware problem? Paul once mentioned
some lose connection causing an occasional problem on and off, but this is
not a laptop and I doubt the PC moves around enough to cause a lose connection.
So it must be software.
I use msconfig.exe to check startup services, and disable stuff I think is
unstable (see above). Anything else I can do? Any sort of TSR type program
I can run to check for memory leaks over time while I work? It's rare that
I ever got a BSOD with Microsoft Genuine Advantage version Windows, so maybe
it's the pirate copy? But to date it has not given me any problems, until
the last year or so. So again that points to a software problem, unless
some rare alpha particle has corrupted my memory but somehow fails to be
detected by Memtest86+?
RL
I think there were some problems created at first,
when the memtest author attempted to do multithreaded
testing. I don't know all the details on that. See if there
is an option in the interface of Memtest, to turn that
off and do all the testing with one core. The earlier
versions were only testing with the one core. And that
makes sense, as the processor is normally faster than
the memory subsystem, and can keep it pretty busy. I
don't know if multithreading is all that necessary.
It could be that multithreaded testing, was an attempt
to simulate the thoroughness you get from Prime95 testing.
*******
As a programmer, you should be setting up your system
for debugging. Make sure when the system BSODs, it
created a memory dump. And, that you have a set of
symbol files for the OS, so you can debug what
shows in the crash. It's possible windbg can
read a large dump file for you.
http://en.wikipedia.org/wiki/WinDbg
When an application crashes, you can configure a system
to not report to Microsoft, and instead create a .dmp file.
That's a minidump, and can be read with BlueScreenView.
That's a relatively small file, with a stack trace in it.
When the OS crashes, I think it uses the pagefile as a place
to dump, so the pagefile has to be big enough to hold all
of memory. Something like that.
I haven't attempted to run a debugger in some time, so
have conveniently forgotten all the details
I may
have a copy of windbg loaded in a VM here, for when
I was trying to get debug information when compiling
a debug version of Firefox in Win2K.
On other platforms, usually a different debugger is
used for kernel debug (like, kdb), versus program
debugging (maybe, gdb). It's possible Windows does
both with the one tool suite. But don't quote me on
that. Any time I have to do this stuff, I have to
research it all over again.
*******
Memtest86+ (memtest.org) is not the final authority
on stable memory. This is a tradeoff, between good
coverage (testing all the memory), versus being thorough.
Memtest86+ tests most all of the memory. It misses
the low 1MB of memory, which contains the 640K area
Bill Gates was so proud of. Any area like that which is
marked as "reserved", memtest cannot touch it.
Thorough, 100% testing, requires configuring the memory
under test, into single channel mode, installing two
sticks. That makes one DIMM the "high DIMM", the other
dimm the "low DIMM". Memtest86+ then misses testing
1MB of space on the "low DIMM". By then swapping DIMMs
and doing another test, the moved DIMM then gets 100%
tested. The high DIMM is completely tested, when you
run in that special test setup of using single channel
mode. You must inspect the color of the motherboard RAM
sockets, to figure out how to get single channel. On
some rare platforms (LGA2011 microATX), there may not
be the slots needed to do single channel mode. And proper
testing then is not possible.
That is only an issue, if you suspect a problem in the
640K area.
The final authority on memory, is Prime95 Torture Test
(or for that matter, any test constructed to do similar
things, that came after Prime95). It doesn't cover
all the memory, as the OS "owns" about 300MB.
I think there is some Intel test, that is used as a
thorough test like that.
These tests tend to be multithreaded, and avoid some
level of self-synchronization. When you run Prime95, the
individual threads can get ahead of one another in terms
of progress, so they may not have the same time relationship
between each other when running. For a hardware noise
perspective, it's good if the threads tend not to
"lock" with one another in the time domain.
You can get Prime95 from mersenne.org/freesoft. Versions
are available for Windows and Linux. On Windows, for my
own systems here, I play a DirectX 3D game, at the same
time as Prime95 has a thread per core running. That seems
to be a good test case for proving the system is stable.
In Prime95, a thread of execution stops, any time a "roundoff
error" is detected. And one presumes, a significant "roundoff
error", is being causes by a memory corruption. It could
also be caused by a flaky FPU on a processor, which may
happen once in a blue moon (there was a bad batch of
Intel processors with a problem like that). Prime95 knows
what the answer of any of the FFTs it runs should be, and
that's how it knows what to expect and how it can claim a
"roundoff error".
My acceptance test, is a 4 hour run with Prime95, where
no thread of execution stops on an error. Other people
like to run it all night.
Paul