If a test fixture is being run in a different process (using nunit-agent), every now and then nunit-console will print out the results of the tests and exit, but the nunit-agent process will hang around indefinitely.
I believe the issue is with .NET Remoting, specifically the TestAgent/RemoteTestAgent.Stop operations. Stop is marked as a one-way call, which tells the .NET Framework that the call can be completed asynchronously. However, this also means that when nunit-console exits immediately after calling Stop, the message may never actually be sent to the nunit-agent.
Recommend removing the OneWay attribute so that the call is completed synchronously and thereby guaranteed to be delivered.