I think I missed something,
Your Gigabyte Easy Saver - mobo power utility driver is causing issues.
Please remove it completely as these utilities are known to cause BSODs.
Code:
Unable to load image \??\C:\Windows\gdrv.sys, Win32 error 0n2
*** WARNING: Unable to verify timestamp for gdrv.sys
*** ERROR: Module load completed but symbols could not be loaded for gdrv.sys
Probably caused by : gdrv.sys ( gdrv+30c7 )
For the sake of debugging I'll do a bit more but you don't have to take this in.
The Gigabyte Easy Saver - mobo power utility driver is causing pool corruption.
Code:
[COLOR="Red"]SPECIAL_POOL_DETECTED_MEMORY_CORRUPTION (c1)[/COLOR]
Special pool has detected memory corruption. Typically the current thread's
stack backtrace will reveal the guilty party.
Arguments:
Arg1: [COLOR="SeaGreen"]fffff98016d0cff0[/COLOR], address trying to free
Arg2: fffff98016d0cffc, address where bits are corrupted
Arg3: 00000000008b000c, (reserved)
Arg4: 0000000000000024, caller is freeing an address where bytes after the end of the allocation have been overwritten
Now we should explore the corrupted pool.
Code:
GetPointerFromAddress: unable to read from fffff80002efd100
Pool page fffff98016d0cff0 region is Unknown
GetUlongFromAddress: unable to read from fffff80002e6ba38
fffff98016d0c000 is not a valid small pool allocation, checking large pool...
unable to get pool big page table - either wrong symbols or pool tagging is disabled
fffff98016d0c000 is freed (or corrupt) pool
Bad previous allocation size @fffff98016d0c000, last size was 0
***
*** An error (or corruption) in the pool was detected;
*** Pool Region unknown (0xFFFFF98016D0C000)
***
*** Use !poolval fffff98016d0c000 for more details.
***
As you can clearly see it's corrupted so let's explore things further.
Code:
Pool page fffff98016d0c000 region is Unknown
Validating Pool headers for pool page: fffff98016d0c000
Pool page [ fffff98016d0c000 ] is __inVALID.
Analyzing linked list...
[ fffff98016d0c000 ]: invalid previous size [ 0xc ] should be [ 0x0 ]
Using the !poolval command we can't see that much useful information so we should look at the pool header.
Code:
+0x000 PreviousSize : [COLOR="Red"]0y00001100 (0xc)[/COLOR]
+0x000 PoolIndex : 0y00000000 (0)
+0x000 BlockSize : 0y10001011 (0x8b)
+0x000 PoolType : [COLOR="SeaGreen"]0y00000000 (0)[/COLOR]
+0x000 Ulong1 : 0x8b000c
+0x004 PoolTag : 0x20206f49
+0x008 ProcessBilled : (null)
+0x008 AllocatorBackTraceIndex : 0
+0x00a PoolTagHash : 0
The previous size is wrong because it should be 0. The reason it should be zero is because 0 = Non-paged pool and 1 = paged pool.
Basically paged pool is where memory is allowed to be paged out onto disk so it frees up the memory until it is needed, when it is needed it can page it back in for use.
Now somethings are so important that they have to stay in the memory at all times and this is called non-paged memory.
An example of things that should be in non-paged memory are device drivers.