On Sat, Jan 31, 2009 at 5:55 PM, David T. Lewis lewis@mail.msen.com wrote:
Maybe as a next step you can break out the calculation further: int argToAlign = oldLimit - heap + delta; int align = valign(argToAlign); int newSize= min(align, heapLimit);
Also printing the values of heap and heapLimit might give a clue.
int argToAlign = oldLimit - heap + delta; int align = valign(argToAlign); int newSize= min(align, heapLimit); int newDelta= newSize - heapSize; [...] if(newDelta < 0) fprintf(stderr, "oldLimit=%p\ndelta=%d\nnewSize=%d\nnewDelta=%d\nalign=%d\nargToAlign=%d\nheap=%d\nheapLimit=%d\n",oldLimit,delta,newSize,newDelta,align,argToAlign,heap,heapLimit);
oldLimit=0x79288fe8 delta=0 newSize=23293952 newDelta=-4096 align=23293952 argToAlign=23298024 heap=2009403392 heapLimit=1073741824