From 0cb9e0fd78b069b5155cccd41a69a85443287c2f Mon Sep 17 00:00:00 2001 From: Alex Ionescu Date: Thu, 16 Nov 2006 07:09:37 +0000 Subject: [PATCH] - Purposefully add 6 debug prints to RtlpGetRegistryHandle, which, while ndis.sys is initializing, should BSOD the system. I have seen this "RtlpGetRegistryHandle" BSOD randomly during boot (But always with the same stack trace), and a local HAL patch managed to cause it 100% of the time. I know that the problem had nothing to do with the HAL or registry paths, because it came up before too when I added debug prints to fstub. These 6 prints 100% reproduce the problem on my machine with GCC 3.4.5. It is my hope it will do the same for everyone. This is a nasty bug, either stack related or some critical structure is being damaged. I am breaking trunk because it's been here for a long time, but now I found a way to repro it so that we can work together to try finding it. In a way, trunk was always broken, but this patch should force a freeze. Please help. svn path=/trunk/; revision=24767 --- reactos/lib/rtl/registry.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/reactos/lib/rtl/registry.c b/reactos/lib/rtl/registry.c index 0da9966bba9..13187519e90 100644 --- a/reactos/lib/rtl/registry.c +++ b/reactos/lib/rtl/registry.c @@ -94,6 +94,11 @@ RtlpGetRegistryHandle(IN ULONG RelativeTo, } /* And now append the path */ + DPRINT1("I'm about to crash due to an overwrite problem, Alex thinks\n"); + DPRINT1("I'm about to crash due to a overwrite problem, Alex thinks\n"); + DPRINT1("I'm about to crash due to a overwrite problem, Alex thinks\n"); + DPRINT1("I'm about to crash due to a overwrite problem, Alex thinks\n"); + DPRINT1("I'm about to crash due to a overwrite problem, Alex thinks\n"); if (Path[0] == L'\\' && RelativeTo != RTL_REGISTRY_ABSOLUTE) Path++; // HACK! Status = RtlAppendUnicodeToString(&KeyName, Path); if (!NT_SUCCESS(Status)) return Status;