This sounds like a segment / Boundry issue... how far up does it repeat this action? or have you tried??? is it an even number of blocks that the error does not occur?
I tried this: I added DWORD reserved[N] to SUBHEAP and tested various values of N. Odd numbers trigger an assertion due to 8-byte alignment (or lack thereof). If N is 4 * x, then GR3 crashes. If N is 4 * x + 2, it does not crash. I tested this with the following values: 1 2 3 4 6 8 10 12 14 16 18 20 200 202 204 206 1020 1022 1024 1026. The sizeof (SUBHEAP) is 32 for N=0.
Martin