Danke ich probier das mit dem Testprogramm mal aus

ich stehe gerade vor dem Problem, dass Asuro sich nach einigen malen Turn aufhängt:

Code:
int g_iTurnVal = 90;
...
void MoveOn(void)
{
	if(g_iFieldCounter % 7 == 0)
	{
		Turn(g_iTurnVal, 100);
		Go(FIELDSIZE, 100);
		g_iFieldCounter++;
		AnalyseField();
		SerWrite("Turning: ", 9);
		PrintInt(g_iTurnVal);
		Turn(g_iTurnVal, 100); //HIER hängt er sich auf und dreht sich ununterbrochen 
		SerWrite("Got It", 6);
		g_iTurnVal *= (-1);
	}
	Go(FIELDSIZE, 100);
	g_iFieldCounter++;
}
Das Problem kommt immer nur vor, wenn eine andere Variable g_iRow der wert 7 annimmt. g_iRow wird auch benutzt um ein Array als Index anzusprechen.
g_iRow hat jedoch überhaupt nichts mit Turn(g_iTurnval, 100) zu tun, oder liege ich da falsch?

können Zugriffsverletzungen an anderen Stellen im Program dazu führen, dass Asuro bei Turn() "durchdreht"?

Ich bin ratlos
Habt ihr eine Idee?