Index: complete.c =================================================================== --- ntoskrnl/lpc/complete.c (revision 72975) +++ ntoskrnl/lpc/complete.c (working copy) @@ -384,8 +384,12 @@ /* Check if we got here while still having a client thread */ if (ClientThread) { - /* FIXME: Complex cleanup code */ - ASSERT(FALSE); + KeAcquireGuardedMutex(&LpcpLock); + ClientThread->LpcReplyMessage = Message; + LpcpPrepareToWakeClient(ClientThread); + KeReleaseGuardedMutex(&LpcpLock); + LpcpCompleteWait(&ClientThread->LpcReplySemaphore); + ObDereferenceObject(ClientThread); } /* Dereference the client port if we have one, and the process */