CA Gen 8.6 Toolset add Call External statement crashes with 0xc0000005 in IEFAD.dll
Support confirmed similar behaviour with the customer's file. The Toolset identifies the operation inside the WSDL file but after selecting it and using the Add button the Toolset crashes. Windows Event Viewer shows similar exceptions:
+++
Application Error:
Faulting application name: TOOLSET.EXE, version: 8.6.0.34463, time stamp: 0x5fd273bb
Faulting module name: IEFAD.dll, version: 8.6.0.34463, time stamp: 0x6059b307
Exception code: 0xc0000005
Fault offset: 0x00099d0c
Faulting process id: 0xef4
Faulting application start time: 0x01d74011fe91d1a3
Faulting application path: C:\Program Files (x86)\CA\Gen86\gen\TOOLSET.EXE
Faulting module path: C:\Program Files (x86)\CA\Gen86\gen\IEFAD.dll
Report Id: 34cffa38-2cad-4e70-a0dc-0de0bc0d42fa
Faulting package full name:
Faulting package-relative application ID:
.NET Runtime:
Application: TOOLSET.EXE
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: exception code c0000005, exception address 693C9D0C
Stack:
+++
Release : 8.6
Component : CA Gen Workstation Toolset
The crash is occurring because the wsdl file has no "wsdl:output" operation.
The concept of a one-way operation (either only request or response or fault) is not supported in the original Call External design.
It was designed that way because in the SOAP world the HTTP POST verb is used which requires Call External to send the request to the server and receive some response.
It was always assumed that both "wsdl:input" and "wsdl:output" would be present in the WSDL and for a Gen user the flexibility of what data to use is provided in terms of the optional mapping.
Simply by duplicating the existing "wsdl:input" in the "wsdl:operation" section of the file to add the new "wsdl:output", stops the crash from occurring i.e.
Change:
<wsdl:operation name="...">
<wsdl:documentation/>
<wsp:Policy>
<wsp:PolicyReference URI="..."/>
</wsp:Policy>
<wsdl:input message="p1:xmln...."/>
</wsdl:operation>
To:
<wsdl:operation name="...">
<wsdl:documentation/>
<wsp:Policy>
<wsp:PolicyReference URI="..."/>
</wsp:Policy>
<wsdl:input message="p1:xmln...."/>
<wsdl:output message="p1:xmln...."/>
</wsdl:operation>
The fact that a crash occurs for this scenario rather than it being handled more gracefully is something Gen Engineering will look into changing as a backlog defect.