Techniques are provided for making call outs from a multi-threaded virtual
machine to a server running in a master native thread. When a virtual machine thread
that is not running in the master native thread (a "non-master VM thread") encounters
code that requires a call to be made to a server routine, the non-master VM thread
transfers control to the master native thread for making the call. The master native
thread is then used to make the call out to the specified server routine. If the
call returns without an error, then the non-master VM thread switches back to using
a non-master native thread.