Tell me more ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

System instability, such certain programs crashing under load, led me to test my memory modules. The bad blocks on the problem stick lie in the range 001CB18000 to 001CB19000.

The memory stick has a 512MB capacity, I am running on three at the moment. The bad stick is being prepared for an RMA request.

Operating System: Windows XP (32-bit)

Once before, Google showed a similar topic but I cannot reproduce the search, and I do not believe anyone offered a solution to it.

Is it feasible to write a program that could allocate the blocks I want?

share|improve this question
2  
As memory management is mostly up to your OS it would make sense to tell it. – Informaficker Jul 23 '12 at 18:49
The fact you are asking this question means you would spend less money and less time just buying and replacing the memory module. As for if this is possible, no its not possible, the operating system decides where to put stuff in memory. As a program you have very little decision WHERE your data is, your only told it exists, and where it will be. Its only a matter of time before the entire module is bad. – Ramhound Jul 23 '12 at 18:50
Ramhound, I'm sorry, I didn't provide enough information. Allow me to amend my question. If only it were so simple. Well, there definitely is a way to allocate blocks, but you probably have to load it before the operating system. If you're desperate you can even put it in the boot sector. – Mark C Jul 23 '12 at 18:51
@MarkC - Why can't you replace the memory module. Its only a matter of time before the problem gets worst. If you are wondering its the first module. As I indicated the operating system decides where data can go. Even if you could prevent your own program from using said blocks of memory, depending on the system load, other programs would. I assume this is Windows you gave no indication otherwise. – Ramhound Jul 23 '12 at 18:58
1  
Ramhound, please don't be so discouraging. "Why would you want to do that?" isn't trying to answer the question. Please just take the question simply. I am interested in how it would be possible, what it would take to do it. – Mark C Jul 23 '12 at 19:23
show 1 more comment

2 Answers

If you're running linux, the badram or badmem kernel patches may help.

a patch to make (partly) buggy memory modules work in a (vanilla)-Linux kernel

On Windows, your best bet would be to pray that none of the holes are hit during the early boot process and then load a boot-time system driver that claims the holes as if they were memory-mapped registers in peripheral hardware.

Or you can use the badram patch for xen, and load any OS of your choice into a virtual machine.

share|improve this answer
Ah yes, I need to add a little more information. I'm sure it is not so hard to do in Linux. – Mark C Jul 23 '12 at 19:00
Yes, since the holes are 459MB from the bottom of the stick, and I can put it in the lowest slot, it only gets touched by things like the browser or other programs that use a large amount of memory. – Mark C Jul 23 '12 at 19:11
@MarkC - Can you simply live with 1024MB of memory by chance? How I see it, no matter where you put it, some application will use it. Either the operating system, or a program that uses lots of memory, as I said you won't be able to control that aspect. – Ramhound Jul 23 '12 at 19:23
+1 damn, that's a clever idea – Bigbio2002 Jul 23 '12 at 19:28
I'm using 1536 MB at the moment, but my system uses quite a bit of the page file and gives virtual memory is low" notifications. The module used to be in the lowest slot, I believe, which I understand meant it was last to be filled up. @BenVoigt Yes, I suspected it might need to be DLL-ed or something like that. – Mark C Jul 23 '12 at 19:31
show 1 more comment

Apart from buying RAM being the best choice - if you can - you might also try to solder a working module out of spare ones. This would be a bit trial-and-error though. Also a lot of work. Maybe not as much as writing a driver for Windows (if this works since you cannot claim memory that has already been claimed) that claims the bad blocks :) but a few hours as well.

Also, you might consider using Linux (like in Ben Vogt's solution) and booting Windows in a VM. Fast solution, a bit less performance.

share|improve this answer
If he actually trys to address the bad blocks of memory he is likely going to still crash is system. The best solution is to replace the bad memory stick. Even if he does address the bad memory blocks, he will have less memory, and there is no guarantee other blocks won't go bad. – Ramhound Jul 23 '12 at 19:38
1  
@Ramhound: No, addressing the bad blocks won't crash the system (if and only if you have parity/ECC, you may get a system check exception, which still is not an outright crash, although some OSes may halt if they see that). Haven't you heard of stress-test software, such as SuperPi, giving a wrong result without crashing? that's because there was a memory error in data memory (not code or metadata). Most RAM bitflips will crash the process, and those in kernel data structure frequently crash the whole system, but that's because of using the bad value, not from the read. – Ben Voigt Jul 23 '12 at 21:50

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.