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

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);
     }
 }