New programmers sometimes ask why the debugger stopped at a ‘user breakpoint’ exception in their program. The exception dialog will come up and say something like:
Unhandled exception at 0x77f75a58 in CoruptHeap.exe: User breakpoint.
The callstack might be something like:
Or if you have symbols:
ntdll.dll!RtlpValidateHeapEntry(_HEAP *, _HEAP_ENTRY *, char *)
ntdll.dll!RtlDebugFreeHeap(void *, unsigned long, void *)
ntdll.dll!RtlFreeHeapSlowly(void *, unsigned long, void *)
ntdll.dll!RtlFreeHeap(void *, unsigned long, void *)
The problem is that your program has corrupted the heap. This usually happens when writing to freed memory, or when writing past the end of a buffer. Use pageheap to try and figure out where your program went wrong.