From e60561fb17e72e6de377f08ad8c2fc2ea9bc1fe3 Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Sat, 23 Apr 2005 16:16:59 +0000 Subject: [PATCH] Move removing process from active list to PspDeleteProcess instead of PspExitProcess. This way we don't have to do it manually after ObInsertObject failure in PspCreateProces. Also, set the Process Query Time at the end of Process Creation, since the process doesn't really exist before then. Thanks to Hartmut for finding the bus. svn path=/trunk/; revision=14777 --- reactos/ntoskrnl/ps/process.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/reactos/ntoskrnl/ps/process.c b/reactos/ntoskrnl/ps/process.c index 107ef8379ce..1999b566876 100644 --- a/reactos/ntoskrnl/ps/process.c +++ b/reactos/ntoskrnl/ps/process.c @@ -287,8 +287,6 @@ PspCreateProcess(OUT PHANDLE ProcessHandle, /* Clean up the Object */ DPRINT("Cleaning Process Object\n"); RtlZeroMemory(Process, sizeof(EPROCESS)); - - KeQuerySystemTime(&Process->CreateTime); /* Inherit stuff from the Parent since we now have the object created */ if (pParentProcess) @@ -411,13 +409,13 @@ PspCreateProcess(OUT PHANDLE ProcessHandle, if (!NT_SUCCESS(Status)) { DPRINT1("Could not get a handle to the Process Object\n"); - ExAcquireFastMutex(&PspActiveProcessMutex); - RemoveEntryList(&Process->ProcessListEntry); - ExReleaseFastMutex(&PspActiveProcessMutex); ObDereferenceObject(Process); goto exitdereferenceobjects; } + /* Set the Creation Time */ + KeQuerySystemTime(&Process->CreateTime); + DPRINT("Done. Returning handle: %x\n", hProcess); _SEH_TRY {