I cannot find the switch test button on my IGT. It is generally near the power on/off button but not on my slot. I need to find that switch to change my game kit. Thank you, I've found it. However, I swapped the game kits, After the 61.1 code, I got 65.1 when I tirn the reset key. Post a Reply to This. Finding a Memory Leak.; 2 minutes to read; In this article. A memory leak occurs when a process allocates memory from the paged or nonpaged pools, but does not free the memory. As a result, these limited pools of memory are depleted over time, causing Windows to slow down. If memory is completely depleted, failures may result.
Is it possible to fix laptop memory slot failure with a guitar pick? Yes, it is. You will not fix the memory slot itself, but you can work around the problem. 🙂
Today I received a Toshiba Satellite Pro 4600 laptop with the following complaint:
The laptop starts and works properly, but recognizes only one of the two memory modules installed. The laptop has two 256MB RAM modules installed, but registers only 256MB.
First of all, I removed the memory cover to find out if both memory modules are installed correctly. The laptop had two 256MB Kingston modules installed and they were seated properly.
When I started the laptop and entered the BIOS setup menu, I found that only one of the two memory modules is detected and the laptop registers only 256MB (262144KB) of RAM instead of 512MB (524288KB).
Just a side note. In the computer world 1MB=1024KB. That’s why 256MB=262144KB and 512MB=524288KB.
I tried reseating both memory modules but it didn’t help.
After that I tried installing both memory modules in both memory slots one by one and here’s what I found. The laptop worked absolutely fine when both memory modules were installed into the slot A, but failed to boot with both memory modules installed into the slot B.
Apparently, there is nothing wrong with the memory modules and the laptop has a faulty memory slot B. The memory slot is permanently soldered on the motherboard. If one of the slots fails you’ll have to replace the whole motherboard or use the laptop with only one working slot.
Buying a new motherboard for this older laptop wouldn’t make any sense because it’s too expensive, but the laptop is still in a good working condition except the faulty memory slot B, so I continued playing with that trying to find the solution.
I noticed that the laptop start normally with the memory module installed into the faulty slot if I slightly press on the module with my thumb. And this gave me an idea.
This guitar pick is going to fix my laptop. 🙂
I installed both RAM modules back into the slots and then placed the guitar pick over the module in the slot B as it shown on the picture.
I thought if I close the RAM door it will press on the guitar pick/memory module and it will have the same effect as pressing on the module with my thumb. And it worked!
Both memory modules were detected properly and the laptop registered all 512MB. After “the fix” I tested memory with Memtest86+ and the laptop passed the test.
I wouldn’t call it the best solution for fixing a faulty memory slot but in some cases it will work.
By the way, I didn’t charge the customer for this “repair”, he knows what is going on and how I “fixed” his problem.
Introduction
One of the most common problems in coding is tracking down memory leaks. I remember working at IGT and trying to track down a really nasty problem -- we had some code that seemed to leak a very small amount of memory. On most products you may actually just yell, 'Ship It!' and be done with it but this wasn't an option. The code in question had to run for a very long time -- multiple years depending on the quality of power at the location. A slot machine handles money and having software dealing with money slowly consume all the available memory on a system is not acceptable.Tracking down the offending memory allocation was tedious and time consuming. Reviewing source code and making changes then setting up tests to stress the environment and monitor the memory growth using various system APIs to query available memory. I worked with a great electrical engineer who even spent the extra time to load the data into Excel and come up with graphs. (This didn't really increase our productivity, but it made it look like we were doing something substantial.)
Fast-forward about five years to my work on Microsoft Windows in the Windows Sustained Engineering group. Obviously, memory leaks are still an issue. More importantly, they are trouble for many of our customers. Whenever leaks are reported by customers we need to investigate, find the leak, and fix it. Code review is out of the question for something as substantial as Windows with literally gigabytes of source code. Luckily, there's some great tools available for use on Windows.
User Mode Stack Traces & UMDH
Slot Machine Memory Leak Test Equipment
User Mode Stack Traces can be enabled by the gflags.exe utility available in the Debugging Tools for Windows package.Another option is to use the command-line interface of gflags.
Now that Windows will track the allocations, you can start using UMDH to capture and analyze 'dumps.' UMDH stands for User Mode Dump Heap. UMDH.exe is a handy little utility provided with the Debugging Tools for Windows package which operates in two modes. The first mode creates dumps by accessing the user mode stack trace database windows creates for properly configured processes. The second mode analyzes the differences between any two dumps.
I like to think of UMDH dumps as allocation-state snapshots in time. UMDH allows you to compare two snapshots and view the differences between them. Not only will you see memory allocations but you will also see memory de-allocations.
Putting It Together
With the tools introduction done I can finally get to where the magic happens. Here's an example session using the tools:I can clearly see that leaky!Leaky was called by leaky!main 4 times between the time I took Dump0 and Dump1. I can also see that the amount of memory allocated from these 4 calls was 0x1000 bytes, with a full allocation size including overhead of 0x10d0 bytes. One of the other nice things is I can see this was a C++ 'new' allocation and that visual studio eventually converts a 'new' into a 'malloc' to actually request the memory.Well, that's a very simple example but I've used this same technique for much more complicated memory leaks in the past -- there's just a few more entries in the call stacks list :). Now you know how to track down (and hopefully prevent) all memory leaks in your code. You can learn a lot when interpreting these UMDH logs. I've included the MSDN article for UMDH log interpretation in the references section. Also, because most system resources are backed by some sort of dynamically allocated memory this technique will also work for other resources leaks as well.
Happy coding!