Hello,
I'm still investigating on the crash problem of winvnc when mirror driver is installed and active, and changing continuosely monitor 1 to 2 and viceversa on Control Panel->All Control Panel Items->Display->Screen Resolution->Change the appearance of your display
the machine where I am testing is a window 7 64bit, two monitors, each monitor has the same resolution of with 1280x1024.
the line where winvnc go in crash is the number 800 of vncbuffer.cpp,
Code: Select all
memcpy(&pScaled[0], &pMain[0], nBytesPerPixel*(ScaledRect.br.x - ScaledRect.tl.x));
with 0xC0000005 error.
It seems that the size to copy oversize the destination buffer, that is pMain.
But what is pMain?
Looking on the source code, pMain is mypVideoMemory+sizeof(CHANGES_BUF);
in fact, pMain is a pointer of m_mainbuff variabile, that is a pointer of m_DIBbits, as confirmed by the log file
Code: Select all
fast blits detected - using DIBsection buffer
but m_DIBbits is a pointer of m_videodriver->myframebuffer, that is
Code: Select all
myframebuffer=mypVideoMemory+sizeof(CHANGES_BUF);
; see videodriver.cpp.
myframebuffer is a pointer of char
but
I dont' know the size of the area memory;
so, pMain is a pointer of mypVideoMemory+sizeof(CHANGES_BUF);
when winvnc will crash, the local buffer
vnclog.Print(LL_INTINFO, VNCLOG("local buffer=%d\n"), m_backbuffsize);
that is m_backfuffsize, grow up from 10588160 to 10690560 value.
memcpy will crash winvnc, probably because the len to copy oversize the destination buffer, that is pMain;
May be myframebuffer (pMain) too low to get 10690560 bytes?
I hope that these information can help the programmers.
Thank you again.