Set KernelApcPending == TRUE in KiCheckForKernelApcDelivery if we are at APC_LEVEL. This should hopefully fix some of those silent bugs. Thanks to Ignatich for poking me about it.
Modified: trunk/reactos/ntoskrnl/ke/apc.c
--- trunk/reactos/ntoskrnl/ke/apc.c 2006-01-12 21:16:42 UTC (rev 20819) +++ trunk/reactos/ntoskrnl/ke/apc.c 2006-01-12 21:21:19 UTC (rev 20820) @@ -57,6 +57,7 @@
* be delivered now, but after the IRQL is lowered to passive * level again. */
+ KeGetCurrentThread()->ApcState.KernelApcPending = TRUE;
HalRequestSoftwareInterrupt(APC_LEVEL); } }