I work with a single-threaded native C ++ application. It is very difficult to reproduce an error that I cannot reproduce locally. I included a full bunch of pages and debugging information in the executable, and received dumps from the client (which had to use the application for many days to get an error).
What the client reports: the application freezes and never recovers. It must be killed from the task manager. What I see from the dumps: the application gets stuck in an infinite loop.
A loop is a double linked list transition that has become cyclic. There are signs of memory corruption, as many data members have strange values, for example, zero matches, values under 0000FFFF or the linked list itself are reported to be 300 million +, which is not normal.
The only other information I can get from dumps is that the socket read operation failed with 0 data reading. This causes the list to move (now circular).
I have several dumps, all hanging in the same infinite loop. I tried to get a selection stack trace, but! Heap -p -a gives me "ReadMemory error for eeddccee address Use"! The eeddccee address is “to verify the address is correct.” For all addresses I try.
L4 ( , , , C4100, C4511, C4512, , ; , C4244).
DebugDiag ,
" . ". .
, , , , - - .
? ?
?