Re: EnterCriticalSection() is corrupting my heap
In my outside code:
{
CAutoLock(&m_cs);
// Some code
}
CAutoLock::CAutoLock(CRITICALSECTION *pCS)
{
m_pCS = pCS; <= This assignement is not working correctly and after
assignment m_pCS points to some garbage memory location
EnterCriticalSection(m_pCS);
}
So any idea what is wrong?
There can be a problem with the way the function is called (I mean the function
that instantiates CAutoLock object). It could be that it is called via a bad object
pointer, as a result "this" pointer passed to the function contains wrong value,
and so on. The next time you reproduce the problem, take a look at the value
of "this" passed to that function, and check if it's correct.
I mean something like this:
class CObj
{
...
CRITICAL_SECTION m_cs;
void YourFunc(); // instantiates CAutoLock and passes it &m_cs
}
CObj pObj; // not initialized, for example
pObj->YourFunc(); // when it is called, "this" pointer is bad, and thus pointers to
// its data members will also be bad
Generic safety checks for heap corruptions with PageHeap would not harm too,
try to enable it as described here:
http://www.debuginfo.com/tips/userbpntdll.html
Oleg