http://bugs.winehq.org/show_bug.cgi?id=14465
Summary: NdrClientCall2 is unaware of comm_status and fault_status variables Product: Wine Version: CVS/GIT Platform: Other OS/Version: other Status: UNCONFIRMED Severity: critical Priority: P2 Component: rpc AssignedTo: wine-bugs@winehq.org ReportedBy: winesku@googlemail.com
Created an attachment (id=14783) --> (http://bugs.winehq.org/attachment.cgi?id=14783) Test project (VS2005) of a simple RPC client/server to repro the problem
Rpc clients that specify variables or the return value as a comm_status or fault_status variable normally do not guard their RPC call with a SEH try-except clause. After all, using comm_status or fault_status variables is usually done, because with these variables, SEH try-except can be omitted, as any exception from the client side or server side part of the call is transformed into an error value that is assigned to the comm or fault status variable. However, the current implementation of NdrClientCall2 unconditionally raises exceptions, which an RPC client using comm_status and fault_status variables is not prepared or expected to handle. As a result, such RPC clients crash immediately if any error occurs during the course of an RPC call. Find attached a VS2005 project of a simple RPC client and server that can call a variety of RPCs with different comm and fault status behaviour on client and server side, that can be used to reproduce the problem. Start the server using
rpcsrv.exe portnumber
Start the client interactively and choose the RPC variant of choice.