Bug in Xtrem Toolkit 11.1.0 -> Calendar Demo crash |
Post Reply |
Author | ||
inforapid
Groupie Joined: 31 March 2006 Status: Offline Points: 38 |
Post Options
Thanks(0)
Posted: 18 April 2007 at 7:24pm |
|
There is a bug in Xtreme Toolkit version 11.1.0 which occures when you statically link the calendar demo sample with the MFC dll and the XTreme Toolkit dll. I'm using Visual Studio .Net 2003. In CCalendarDemoView::OnOfficeThemeChanged, a new CXTPCalendarThemeOffice2007 is created. This leads to a crash in CXTPCalendarThemePart::RefreshMetrics. Please help me soon, so that I don't have to switch back to version 10.4.2.
Thanks in advance Ingo |
||
inforapid
Groupie Joined: 31 March 2006 Status: Offline Points: 38 |
Post Options
Thanks(0)
|
|
Sorry, I meant
"which occures when you statically link the calendar demo sample with the MFC LIB and the XTreme Toolkit LIB"."
Ingo
|
||
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
|
Hello,
Sorry, can't reproduce it, what line of code in CXTPCalendarThemePart::RefreshMetrics has problem? Guess its something with resources related.
btw. Why you wrote it in SkinFramework forum. May be you somehow modified sample before run?
|
||
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
||
inforapid
Groupie Joined: 31 March 2006 Status: Offline Points: 38 |
Post Options
Thanks(0)
|
|
Hello Oleg,
The only thing I have changed is that I have switched the project settings from dynamically linking the MFC dll to statically linking the MFC library. I have used Visual Studio .Net 2003.
The exception occures in line 597 of xtpcalendartheme.cpp (int nCount = m_arMembers.GetCount();). When I set a breakpoint on this line, the crash occures the second time when the line is passed at program start.
The call stack is:
> CalendarDemoD.exe!CXTPCalendarThemePart::RefreshMetrics(int bRefreshChildren=1) Zeile 597 + 0xe C++
CalendarDemoD.exe!CXTPCalendarTheme::CTOHeader::RefreshMetrics(int bRefreshChildren=1) Zeile 1479 C++ CalendarDemoD.exe!CXTPCalendarThemeOffice2007::CTOHeader::RefreshMetrics(int bRefreshChildren=1) Zeile 747 C++ CalendarDemoD.exe!CXTPCalendarThemePart::RefreshMetrics(int bRefreshChildren=1) Zeile 603 + 0xf C++ CalendarDemoD.exe!CXTPCalendarThemeOffice2007::RefreshMetrics(int bRefreshChildren=1) Zeile 572 C++ CalendarDemoD.exe!CXTPCalendarThemeOffice2007::CXTPCalendarThemeOffice2007() Zeile 331 C++ CalendarDemoD.exe!CCalendarDemoView::OnOfficeThemeChanged(int nTheme=6) Zeile 1298 + 0x36 C++ CalendarDemoD.exe!CCalendarDemoView::OnInitialUpdate() Zeile 549 + 0x12 C++ CalendarDemoD.exe!CWnd::OnWndMsg(unsigned int message=868, unsigned int wParam=0, long lParam=0, long * pResult=0x0012f9d4) Zeile 2023 C++ CalendarDemoD.exe!CWnd::WindowProc(unsigned int message=868, unsigned int wParam=0, long lParam=0) Zeile 1745 + 0x1e C++ CalendarDemoD.exe!AfxCallWndProc(CWnd * pWnd=0x012eaea8, HWND__ * hWnd=0x000b03d8, unsigned int nMsg=868, unsigned int wParam=0, long lParam=0) Zeile 241 + 0x1a C++ CalendarDemoD.exe!CWnd::SendMessageToDescendants(HWND__ * hWnd=0x000e03c8, unsigned int message=868, unsigned int wParam=0, long lParam=0, int bDeep=1, int bOnlyPerm=1) Zeile 2771 C++ CalendarDemoD.exe!CWnd::SendMessageToDescendants(unsigned int message=868, unsigned int wParam=0, long lParam=0, int bDeep=1, int bOnlyPerm=1) Zeile 155 + 0x20 C++ CalendarDemoD.exe!CFrameWnd::InitialUpdateFrame(CDocument * pDoc=0x012e5ad8, int bMakeVisible=1) Zeile 752 C++ CalendarDemoD.exe!CDocTemplate::InitialUpdateFrame(CFrameWnd * pFrame=0x012e5b70, CDocument * pDoc=0x012e5ad8, int bMakeVisible=1) Zeile 328 C++ CalendarDemoD.exe!CSingleDocTemplate::OpenDocumentFile(const char * lpszPathName=0x00000000, int bMakeVisible=1) Zeile 203 C++ CalendarDemoD.exe!CDocManager::OnFileNew() Zeile 854 C++ CalendarDemoD.exe!CWinApp::OnFileNew() Zeile 25 C++ CalendarDemoD.exe!_AfxDispatchCmdMsg(CCmdTarget * pTarget=0x00cf8180, unsigned int nID=57600, int nCode=0, void (void)* pfn=0x006babdc, void * pExtra=0x00000000, unsigned int nSig=53, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 89 C++ CalendarDemoD.exe!CCmdTarget::OnCmdMsg(unsigned int nID=57600, int nCode=0, void * pExtra=0x00000000, AFX_CMDHANDLERINFO * pHandlerInfo=0x00000000) Zeile 396 + 0x27 C++ CalendarDemoD.exe!CWinApp::ProcessShellCommand(CCommandLineInfo & rCmdInfo={...}) Zeile 27 + 0x1e C++ CalendarDemoD.exe!CCalendarDemoApp::InitInstance() Zeile 170 + 0xc C++ CalendarDemoD.exe!AfxWinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151f10, int nCmdShow=1) Zeile 39 + 0xb C++ CalendarDemoD.exe!WinMain(HINSTANCE__ * hInstance=0x00400000, HINSTANCE__ * hPrevInstance=0x00000000, char * lpCmdLine=0x00151f10, int nCmdShow=1) Zeile 25 C++ CalendarDemoD.exe!WinMainCRTStartup() Zeile 251 + 0x30 C kernel32.dll!7c816fd7() ntdll.dll!7c9206eb() The exception is:
Unbehandelte Ausnahme bei 0x00938079 in CalendarDemoD.exe: 0xC0000005: Zugriffsverletzung-Leseposition 0x00000058. I hope this will help you to locate the bug.
You're right, I should have posted it in the calendar control forum.
Kind Regards
Ingo
|
||
inforapid
Groupie Joined: 31 March 2006 Status: Offline Points: 38 |
Post Options
Thanks(0)
|
|
Hello Oleg,
Maybe the cause for the exception is how you're using the embedded class CTOHeader and how you cast it to CXTPCalendarThemePart. When the function m_arMembers.GetCount() is called, the instruction pointer doesn't jump into the function, it goes into the nirvana. I have seen a similar bug long time ago when a class, which has been derived from multiple other classes by multiple inheritance, wasn't casted correctly to the appropriate base class. An other possible cause may be a bug in the version 2003 of visual studio .net.
Kind Regards
Ingo
|
||
Oleg
Admin Group Joined: 21 May 2003 Location: United States Status: Offline Points: 11234 |
Post Options
Thanks(0)
|
|
Hello,
Thanks, Ingo, I reproduced exactly same error :( Strange that all work with vc6 and vc 2005, I will ask our Calendar developer to find reason ASAP.
Thanks.
|
||
Oleg, Support Team
CODEJOCK SOFTWARE SOLUTIONS |
||
sserge
Moderator Group Joined: 01 December 2004 Status: Offline Points: 1297 |
Post Options
Thanks(0)
|
|
Guys,
The easiest way to fix this problem is to install Visual Studio .NET 2003 Service Pack 1. Look at http://www.microsoft.com/downloads/details.aspx?familyid=69d2219f-ce82-46a5-8aec-072bd4bb955e If you'd like to know what happened -- the problem is that TBase::RefreshMetrics was called with wrong 'this' pointer value. When you change a code like below - it works fine:
For this case we can simply comment this call because it does nothing in the base class (and rebuild the toolkit):
-- WBR, Serge |
||
inforapid
Groupie Joined: 31 March 2006 Status: Offline Points: 38 |
Post Options
Thanks(0)
|
|
Hello Serge,
Thank you very much for your fast reply, changing the code to
TBase* pBase = this;
pBase->TBase::RefreshMetrics(bRefreshChildren); as you suggested fixed the bug for me. Will you include it in the next release?
You also suggested to install Service Pack 1. This doesn't have an effect, because I had already installed Service Pack 1 when the error occured.
One last question: Which Visual Studio version do you use at Codejock for development? Do you think it would be better for me to switch to Visual Studio 2005?
Kind Regards
Ingo
|
||
sserge
Moderator Group Joined: 01 December 2004 Status: Offline Points: 1297 |
Post Options
Thanks(0)
|
|
Ingo,
Yes, the fix is already included in sources of next versions. Regarding Visual Studio versions -- we do use different ones, but main targets are VS6 +SP6 (without .NET), VS2003 + SP1 (.NET 1.x), and VS2005 (.NET 2.x). But we do like to install all latest Visual Studio updates -- WBR, Serge |
||
Post Reply | |
Tweet
|
Forum Jump | Forum Permissions You cannot post new topics in this forum You cannot reply to topics in this forum You cannot delete your posts in this forum You cannot edit your posts in this forum You cannot create polls in this forum You cannot vote in polls in this forum |