assembly - Why EAX register content suddenly changed and leads to crash -
in following screenshot can see disassembly of cstring function getlength()
lead crash. taken dumpfile, post mortem. crash caused sudden change of register eax 0.
how can 6a6a4547 6a6a4549 register eax changed. in 6a6a4547 should have been set 0x6a8e7054 (0x38324964 {0x6a8e7054}). can see in watch window. in 6a6a4549 eax "0".
why , how? can find out cause?
side information:
- call stack looks normal no problems in variables or threads
- its compiled vs2012 compiler
- target platform x86
- its on virtual machine
- program runs many threads
- getlength called millions of times per hour
it of wrote - a race condition.
in more upper part of software object not locked sufficiently. therefore eax became 0 in first assembly line. after thread "corrected" memory , looks eax register has been changed.
so of crashes homemade.
thanks of you!
Comments
Post a Comment