I think the 'StackInitialised' flag is never set to a different value and the 'tempArcStack' stack is initialized multiple times (every time FBLatFirstPass() is called). This is where it happens in HArc.c: void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ [...] if(!StackInitialised) CreateHeap(&tempArcStack,"tempArcStore",MSTAK, 1, 0.5, 1000,10000); [...] And I think it should be: void ArcFromLat(ArcInfo *aInfo, HMMSet *hset){ [...] if(!StackInitialised) { CreateHeap(&tempArcStack,"tempArcStore",MSTAK, 1, 0.5, 1000,10000); StackInitialised = TRUE; } [...]