System hang, many thread stalled in CcCanIWrite

Hello,

I have a computer, where many applications are freezing. I asked the user to take a full memory dump.

Inside the dump, I can see that many threads are stalled in CcCanIWrite. I ran !defwrites, here is the ouput :

0: kd> !defwrites
*** Cache Write Throttle Analysis ***

GetUlongFromAddress: unable to read from 0000000000000000
GetUlongFromAddress: unable to read from 0000000000000000
CcTotalDirtyPages:                     0 (       0 Kb)
CcDirtyPageThreshold:                  0 (       0 Kb)
AvailablePages:                   583532 ( 2334128 Kb)
ThrottleTop:                         450 (    1800 Kb)
ThrottleBottom:                       80 (     320 Kb)
ModifiedPages:                     78315 (  313260 Kb)

CcTotalDirtyPages >= CcDirtyPageThreshold, writes throttled

Check these thread(s): CcWriteBehind(LazyWriter)
Check critical workqueue for the lazy writer, !exqueue 16
Unable to get address of CcDeferredWrites

It says that CcDirtyPageThreshold is 0.

I’m wondering, if this information given by windbg is reliable ? Os does

GetUlongFromAddress: unable to read from 0000000000000000

shows that this value could not be read ?

If so, is it normal that it is 0 ? Why would it be 0 ?

Could this be the reason of all those stalled threads ?

Thank you

!defwrites and !exqueue have been broken for a long time due to both public PDB issues and also internal changed to the Cc.

You need to look at the Cc lazy writer threads and figure out why they’re stuck. They’ll all be in the system process:

!process 0 1F System