View Issue Details

IDProjectCategoryView StatusLast Update
0004029.NET APIApi Changepublic2018-03-16 11:12
ReporterEd Hume Assigned To 
PrioritynormalSeveritycrashReproducibilityalways
Status newResolutionopen 
PlatformWindows x64OSWindowsOS Version10
Summary0004029: 64 bit DA3 Client heap corruption crash with IOPCBrowse::Browse
Description

When connected to the DA3 .net reference server with a 64bit C++ client, the Browse call always crashes with a heap corruption exception. The 64bit app works fine for other API calls, and the same app compiled as 32bit works fine. I believe the issue is an API flaw, that the OPCBROWSEELEMENT is not typed as a long pointer to a long pointer. Under the debugger, the 64 bit client is passing a 64 bit pointer, and the 32 bit client is passing a 32 bit pointer as the OPCBROWSEELEMENT . Therefore, the server is likely working with the argument as a 32 bit pointer and writing into an invalid address causing the crash.

Steps To Reproduce

Compile a DA client as a 64 bit app. Connect to a DA 3 server. Make the Browse call.

Additional Information

The issue can be worked around by using version 2 BrowseServerAddressSpace calls. It is too late to fix the IDL since every server in existence is using 32 bit pointers for the OPCBROWSEELEMENT ** argument. The OPC Errata document should be updated.

TagsNo tags attached.

Activities

There are no notes attached to this issue.

Issue History

Date Modified Username Field Change
2017-10-23 15:01 Ed Hume New Issue
2018-03-16 11:12 Paul Hunkar Project Classic DA Client => .NET API
2018-03-16 11:12 Paul Hunkar Category Spec => Api Change