images\oops.gifPure message (Error Detection)

Related Topics

This message indicates an internal Purify error. The message identifies the version of Purify and the operating system you are running. Purify also displays a trace table and the call stack and memory location where the error occurred, if possible.

This message can result from conditions that you can correct. Attempt to correct the error by performing the following steps, then rerun your application with Purify:

1.    Check for errors preceding the Pure message
Some application errors (such as IPRs, ABWs, EXUs) can have negative, cascading effects. If you see errors preceding the Pure message, attempt to resolve them.

2.    Check for instrumentation problems
Look for instrumentation notes, warnings, or errors in the Purify log file and resolve them if possible. For information about how to view the log file, click images\shortcut.gif.

3.    Clear the Purify cache
An instrumented file may become out-of-date with respect to the original, uninstrumented module, or changes in instrumentation options may not properly trigger re-instrumentation of a module. Clearing the cache forces all files to be re-instrumented. For information about how to clear the cache, click images\shortcut.gif.

4.    Check your application build settings
For Purify to work correctly, a number of settings are required when building your application. For information about the recommended settings for Visual Studio, click images\shortcut.gif. For information about the recommended settings for Visual Studio 6, click images\shortcut.gif.

5.    Rebuild (without incremental linking) your application
Occasionally, debug information within a .pdb file can become inconsistent with its associated code in a .exe or .dll file. Rebuilding the application can resynchronize the code and debug information. For information about how Purify uses debug data, click images\shortcut.gif.

Other possible causes that you can check for and correct include the following:

§    Unsupported compilers
Purify supports the Microsoft Visual C/C++ compiler. If an application consists of modules that are not built with the Microsoft compiler, Purify runtime failures can occur. Purify provides a special instrumentation mode, called Exclude mode, that you can use to significantly limit the code insertion done for a given module. For information about how to instrument a module in Exclude mode, click images\shortcut.gif.

§           Custom memory management
Purify supports the standard memory management routines such as malloc and free. Attempting to override these routines with custom memory managers can cause Purify to misinterpret the state of allocated memory blocks. If you experience spurious errors, try disabling the custom memory management code.

§    Handwritten assembly code
Purify does not support handwritten assembly code. If a module contains handwritten assembly and the program is not functioning properly, instrument the module in Exclude mode.

§    Use of SetWindowsHookEx
Purify does not support modules containing procedures that are registered using SetWindowsHookEx. In order for Purify to function properly, these modules must be instrumented in Exclude mode. While many modules known to contain these "hook" procedures are automatically instrumented in Exclude mode, there may be others that are not known to Purify.

§      Use of third-party libraries

Occasionally there are special considerations when dealing with third-party libraries. You might want to check in the Technotes as detailed below.

§      DIA dll not installed

A .dll from the Microsoft Debugger Interface Access SDK is used to collect debug data from pdb files generated by Visual Studio 2005 and Visual Studio 2008. Refer to the Recommended Settings for Visual Studio topic for details.

Should the above troubleshooting tips fail to resolve the Pure message and you would like Rational Customer Service to contact you, please submit a Support Request Form. For details on how to submit a support request, click images\shortcut.gif

(C) Copyright IBM Corporation 1992, 2010.