-/* $Id: kill.c,v 1.48 2001/11/07 02:16:25 ekohl Exp $
+/* $Id: kill.c,v 1.51 2002/03/05 11:33:12 ekohl Exp $
*
* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS kernel
DPRINT("PsProcessType %x\n", PsProcessType);
DPRINT("Reaping thread %x\n", current);
- DPRINT("Ref count %d\n", ObGetReferenceCount(Process));
+ DPRINT("Pointer count %d\n", ObGetObjectPointerCount(Process));
current->Tcb.State = THREAD_STATE_TERMINATED_2;
RemoveEntryList(¤t->Tcb.ProcessThreadListEntry);
if (IsListEmpty(&Process->ThreadListHead))
PiTerminateProcess(Process, Status);
KeAcquireSpinLock( &PiThreadListLock, &oldIrql );
}
- DPRINT("Ref count %d\n", ObGetReferenceCount(Process));
+ DPRINT("Pointer count %d\n", ObGetObjectPointerCount(Process));
KeReleaseSpinLock(&PiThreadListLock, oldIrql);
ObDereferenceObject(current);
KeAcquireSpinLock(&PiThreadListLock, &oldIrql);
CurrentThread->ExitStatus = ExitStatus;
Thread = KeGetCurrentThread();
KeCancelTimer(&Thread->Timer);
+ KeReleaseSpinLock(&PiThreadListLock, oldIrql);
/* abandon all owned mutants */
current_entry = Thread->MutantListHead.Flink;
CurrentThread->Tcb.DispatcherHeader.SignalState = TRUE;
KeDispatcherObjectWake(&CurrentThread->Tcb.DispatcherHeader);
KeReleaseDispatcherDatabaseLock(FALSE);
-
+
+ KeAcquireSpinLock(&PiThreadListLock, &oldIrql);
PsDispatchThreadNoLock(THREAD_STATE_TERMINATED_1);
KeBugCheck(0);
}
PiTerminateProcess(PEPROCESS Process,
NTSTATUS ExitStatus)
{
- DPRINT("PiTerminateProcess(Process %x, ExitStatus %x) RC %d HC %d\n",
- Process, ExitStatus, ObGetReferenceCount(Process),
- ObGetHandleCount(Process));
+ DPRINT("PiTerminateProcess(Process %x, ExitStatus %x) PC %d HC %d\n",
+ Process, ExitStatus, ObGetObjectPointerCount(Process),
+ ObGetObjectHandleCount(Process));
if (InterlockedExchange((PLONG)&Process->Pcb.State,
PROCESS_STATE_TERMINATED) ==