BoundsChecker 7.2 Visual Studio Edition

## Release Notes

## BoundsChecker 7.2 Visual Studio Edition

#### Copyright © 2004 Compuware Corporation. All rights reserved.

Welcome

What's New

Known Issues

System Requirements

Contacting Technical Support

## Welcome

Welcome to BoundsChecker 7.2. BoundsChecker 7.2 contains new features, support for new operating systems, new development environments, performance enhancements, and bug fixes. The BoundsChecker development team would like your feedback on the new product.

## What's New in BoundsChecker 7.2

- Improved memory leak and resource leak detection.
- Improved support for VARIANTS and Safe Arrays.
- Improved MFC suppressions.
- Added support to detect the following new error:
  "Allocation Conflict: Attempting to call DeleteDC on DC 0x12345678; DC was allocated by GetDC"
  Refer to the Invalid Parameter Errors category in the Help for a complete description of this error.
- Reduced the number of false positives reported in memory leak and FinalCheck analysis.
- Improved run time performance for large memory-intensive applications.
- Minor enhancements to the user interface to improve Section 508 compliance.
- Support for Visual C++ 6.0 SP6
- Preliminary support for Windows Server 2003 SP1.
- Preliminary support for Windows XP SP2.
- Bug Fixes.

## What’s New in BoundsChecker 7.1

BoundsChecker 7.1 introduces the following new features:

Major new features:

- A deadlock analyzer for native applications: BoundsChecker can now search for real and potential deadlocks in your native code. BoundsChecker can also search for questionable uses of system synchronization resources such as critical sections, events, etc.

- A memory and resource viewer: The memory and resource viewer enables you to view all outstanding memory and resources while the program is running. You can use this feature to spot usage patterns and, more importantly, determine what memory and resources remained allocated between two points in an application. Customers who remember this feature from BoundsChecker 6 should be familiar with this feature.

  The memory and resource viewer includes an API to control the collection and display of memory and resource data. The API allows you to easily gather data on memory and resource usage at any point in your application or to report on outstanding memory and resource allocations between two points in your program. For more information on this API refer to the documentation in the `NMApiLib.h` file located in the `BoundsChecker\ERptApi` directory.

- .NET call reporting: BoundsChecker can log method calls and returns within your classes in the managed portion of your application. This includes the parameters and any return values. You can restrict analysis to particular portions of your application to improve the usefulness of the information. This feature can provide valuable insight into how a managed application operates.

- Symbol server support: BoundsChecker will automatically load and use symbols provided by symbol servers in your organization or those provided by third parties such as Microsoft if the symbol server has been included in your symbol path. Symbol server configuration is located in the General settings dialog. BoundsChecker will automatically use your symbol server settings if you are running BoundsChecker integrated into Visual Studio .NET. Information about symbol server support appears in the online help, under the topics General Settings and The Symbol Path Dialog Box.

  Note: The first time you access the Microsoft symbol server, a dialog box will be displayed asking you to read and accept a Microsoft EULA. For more information about symbol servers, refer to:
  http://www.microsoft.com/whdc/ddk/debugging/symbols.mspx

- Option to show leaks and errors only if source code is available: BoundsChecker can be customized to show errors only in modules where source code is available. This feature can be used to automatically suppress errors in portions of your application that are not of interest to you. This feature allows you to quickly exclude errors that occur in system code, third party DLLs or in modules provided by other parts of your organization. This option is located under Modules and Files in the settings dialog.

- Redesigned COM Call Reporting: Methods are selected based on user-selected modules. COM Call Reporting configuration has been modified log object method calls in selected modules (DLLs). This feature allows customers to quickly configure BoundsChecker to monitor only user defined interfaces and methods.

User interface enhancements:

- The General settings have been split into General and Data Collection.
- The Call Reporting settings have been split into API Call Reporting, COM Call Reporting, and .NET Call Reporting.
- You can now customize the size of a tab stop in the source window by altering the settings in the Fonts and Colors settings.
- Many Explain help topics have been re-written and expanded.
- CLR Analysis has been renamed .NET Analysis
- COM interface leak messages now include more detailed information.
- The Memory and Resource Viewer dialog box has been added.

Improved analysis and error reporting:

- BoundsChecker can now detect deadlocks, potential deadlocks, and other synchronization-related errors in native code.
- COM interface tracking has been improved.
- Many validation errors have been corrected.
- A number of error messages have been re-written to make them more understandable.
- Memory leak and pointer detection have been re-worked to correct a number of errors reported by customers.
- Resource leak detection now provides additional information for DC related errors.
- Improved handling of PInvoke calls.
- Garbage Collection notification messages.
- Output buffer filling

Note about Output Buffer Filling: If selected, this feature will pre-fill output buffers with the fill pattern prior to calls to various Windows APIs. This feature is off by default. Output buffer filling depends on BoundsChecker having internal knowledge of input and output parameters. If BoundsChecker incorrectly assumes that a parameter is an output parameter, it may accidentally overwrite your buffer. Please report any issues to technical support and include the Windows call that caused the problem in your report.

Support for new platforms:

- Support for Windows Server 2003
- Support for Visual Studio .NET 2003
- Support for Terminal Server
- Support for IIS 6.0

Back to Contents

## Known Issues

BoundsChecker 7.2 has been tested extensively. However, the following issues are not completely resolved.

- The Fill output arguments before call validation option is currently a work in progress. If you enable this feature, BoundsChecker may overwrite a buffer by mistake. If this occurs, please log a bug report telling us what Windows API was incorrectly processed, then disable the feature.

- BoundsChecker may not start properly or monitor your application if the Microsoft Application Compatibility Toolkit is installed on your system.

- BoundsChecker may reset your BoundsChecker settings the first time you run your application when integrated in Visual Studio .NET 2003. The BoundsChecker development team is working with Microsoft to correct this problem.

- If the path in the NLB File Directory field (under General in the Settings or Options dialog box) does not match the directory containing the application executable, error detection may not correctly collect COM and .NET call reporting information.
  To solve this problem, change the path in the NLB file directory field to the directory that contains the application executable. This problem will be corrected in a future version of DevPartner error detection.

- TrackRecord integration from SmartCheck is no longer supported.

### Invalid License Error When Installing BoundsChecker

During the installation of a concurrent license for BoundsChecker, you might receive an error message that the BoundsChecker license file is invalid. If you receive this message, ignore it and continue installing the license.

The message is caused by a problem in the DLM License Server software that does not recognize the DUP_GROUP=D attribute used by BoundsChecker concurrent licenses.

### Upgraded License File Needed for License Borrowing

You must obtain a version 7.2 license in order to use license borrowing. If you do not plan to use license borrowing, your version 7.1 license file will allow you to install and run DevPartner Studio 7.2.

### Using NMCL or NMLINK directly from the Command Line

When using NMCL or NMLINK directly from the Command Line, you must add the directory containing these utilities to your path. For example, if you installed the product into the default directory, add the following directory to your path:

C:\Program Files\Common Files\Compuware\NMShared

### Failure to Analyze a Service

BoundsChecker may fail to analyze a service. A common cause is one (or more) of the directories used to monitor the process is not writable to the process being created. The following directories must be writable:

- The TMP and TEMP environment variables must reference a directory that is writable to the process. If you have configured your service to run the LOCAL_SYSTEM context, you will need to assign these environment variables system wide.
- The service must have write access to the NLB File directory.
- The service may require write access to the working directory.

Back to Contents

## System Requirements

Operating Systems:

- Windows 2000 Professional, Service Pack 4
- Windows 2000 Server Editions, Service Pack 4
- Windows XP Professional, Service Pack 1
- Windows Server 2003

Environments:

- Visual Studio 6, Service Pack 6
- Visual Studio .NET 2002
- Visual Studio .NET 2003

BoundsChecker supports Visual Studio .NET 2002 and 2003 running “side by side”.

System Configuration:

- Pentium III 500 MHz
- 128 MB memory
- 220 MB disk space

If you intend to use BoundsChecker integrated with Visual Studio .NET, additional memory may be required. Consult the Visual Studio .NET hardware requirements for details.

BoundsChecker is not designed to operate on Itanium-based systems using the WOW64 emulator.

Back to Contents

## Contacting Compuware Technical Support

You can contact Technical Support by e-mail, telephone, fax, or on the Internet.

E-Mail

Send as many details as possible to nashua.support@compuware.com

World Wide Web

Submit issues and access our support knowledge base at
http://frontline.compuware.com/nashua/

Telephone

Telephone support is available as a paid* Priority Support Service from 8:30 am to 5:30 pm EST, Monday through Friday. Have product version information ready.

In the U.S. and Canada, call: 888 686 3427

International customers, call: +1 603 578 8100

* Technical Support handles installation and setup issues free of charge.

Fax

Send as many details as possible to 603 578 8401.

Back to Contents

BoundsChecker Release Notes

Copyright © 2004, Compuware Corporation