R. E. Cook
If you work with your own extern functions, you will discover RPC errors long
before you learn how to interpret them, recover from them, and best of all,
avoid them in the first place. I hope this brief excerpt from the RunningShoes
documentation will save you some of the grief we've all experienced when working
with extern functions.
RPC (Remote Procedure Call) refers to the process WinRunner uses to access
functions in a DLL. The RPC error message indicates only that some error
occurred at some point in the call.
The dreaded RPC error message is utterly uninformative, but it must be taken
seriously. It can refer to a variety of problems, some of which are:
The function isn't defined. The function has been declared as extern, so
WinRunner knows it is not a TSL function, but WinRunner cannot find a matching
function in any DLL that is currently loaded. That can mean the DLL isn't
loaded, the function is not properly exported from the DLL, or simply that the
function name is mispelled. It is safe to continue without restarting WinRunner after
correcting this problem.
function declaration does not match the function definition. At best, an
incorrect declaration can simply prevent WinRunner from being able to call the
function, if the number of parameters is wrong. At worst, a parameter of mode
"out" or "inout" that is incorrectly declared "in"
can corrupt the stack, causing a crash
requiring rebooting the PC. To avoid this error with the RunningShoes library,
DO NOT EDIT ANY OF THE RUNNINGSHOES SCRIPTS!
Parameter overflow. This overflow is caused by violating the string parameter
constraints (passing string parameters that are too long either into or out of
an extern function. (See the note on extern (DLL) functions and
strings.) This error requires following the recovery process below to
Memory access violation. This is completely out of control of the WinRunner
user. This is caused by a programming defect within the DLL, such as a pointer
out of bounds or a memory allocation error. This error will usually result in a
memory access message appearing after the RPC error message. The memory access
error will probably say something to the effect that an instruction tried to
access memory at a given address (a large hex number).
Recovering from an RPC error
Recovering from an RPC error is often possible, but it can be messy. The
following works with WinRunner 6.0 and 7.0 under Windows 2000. Other versions
Close WinRunner. You are likely to see some messages about tests not being
saved or otherwise handled properly. This is one of the reasons you should
always save WinRunner tests before running them.
Make sure the WinRunner icon is gone from the task bar. Right-click the icon
and choose Close WinRunner. You'll probably have to do that more than once.
Press Ctrl-Alt-Del to open the Windows Task Manager. On the Processes tab,
select six_agnt.exe and press the End Process button. Do the same with
wowexec.exe. Close the Task Manager.
If all goes well WinRunner can now be restarted. If not, reboot the PC.