SmartHeap Problems & Solutions

Determining which app on your system is using SmartHeap

This problem usually comes up when a computer user gets SmartHeap error messages (MEM_BAD_POINTER is a common message). The user has several applications running and is uncertain which one of the apps is responsible for the error message.

There are several ways to solve this. In order of preference they are:

  1. Run each suspect application in isolation. If no other app is running (per task manager or a similar utility) and you get the SmartHeap error message, then most likely you have found the culprit?
  2. Contact the software vendors whose products are associated with the error and ask them if their product uses SmartHeap.
  3. If 1 and 2 above don't work, then the following procedure can be used. Note that there is some risk involved any time you rename a file in your system directory. It's possible (though quite unlikely) that renaming the SmartHeap DLL will cause serious problems on your system. It's also possible that you could accidentally rename the wrong file, with unforseen consequences. PROCEED WITH CAUTION AND AT YOUR OWN RISK!!

    If the misbehaving application is using the SmartHeap DLL you can determine which app it is by renaming the SmartHeap DLL: the app that uses it will then refuse to initialize and you'll see an error message about a missing DLL. First, close the applications that are suspect. Then you need to determine if there is a SmartHeap DLL in your system directory (either winnt\system32, windows\system or windows\system32). Search the system directory on your machine for sh*w32.dll and see if you get a match for any of the following: shw32.dll, sh31w32.dll, sh32w32.dll, sh33w32.dll, sh34w32.dll. If you find one or more of these, rename them or move them out of the system directory. Remember to make a note of your changes so you can undo them when you're finished testing.

    Now try to start these apps again. Hopefully one of them will fail with an error message: now you know who's using SmartHeap.

    To clean up, just restore the original names to the DLLs you changed. Then contact the appropriate software vendor about the error.
  4. If you do not find a SmartHeap DLL in your system directory, you might try searching your entire hard drive(s): it's possible that the DLL is stored in some subdirectory of the application. In that case you can probably determine what app uses SmartHeap by knowing which app owns that subdirectory.
  5. If you don't find any SmartHeap DLLs on your system, that probably indicates that the app you're looking for is statically linked to SmartHeap. There is no convenient way for you to determine if an app is statically linked to SmartHeap, so contact the various vendors and ask them.