Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / Managed C++ / January 2007

Tip: Looking for answers? Try searching our database.

Application crashes with a Windows XP error dialog

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Sandy - 25 Jan 2007 02:59 GMT
HI All,
I have created a MFC exe using VC++ .NET 2003 on Windows XP Prof
service pack 2 and it works properly on my machine, but when I run the
same exe on a different machine (Windows XP Prof SP-2), The application

is bought up and after some time its throwing a windows xp error dialog

box saying,

I am also running the same application on 2 more machines there
everything works fine.

Here is thr Windows XP error dialog box that appreas when its crashed
TODO: <File description> has encountered a problem and needs to close.
We are sorry for any inconenience.

If you are in the middle of something, the information you were working

on might be lost.

Please tell Microsoft about this problem.

blab blah....

I have function called OnNotifyNewData (WPARAM wParam, LPARAM lParam)
which appreas to be cauing the problem. When I run the application
commenting this function its didnt crashed.

LRESULT CUserViewFrame::OnNotifyNewData (WPARAM wParam, LPARAM lParam)
{
const char* strVariable("CUserViewFrame::OnNotifyNewData START");
const char* strValue("6");
CUtility::LogDebugInfo( strVariable, strValue);

WRITE_LOG_FUNCTION_ENTRY("LRESULT CUserViewFrame::OnNotifyNewData
(WPARAM wParam, LPARAM lParam)")

PInstData pInstData = (PInstData)wParam;
if (!pInstData) return 0;

CString csText;
char buffer[255];
LVFINDINFO info;
int iIndex = 0;

PSystemSetting pSystemSetting = CSystemSetting::GetObject();

info.flags = LVFI_WRAP|LVFI_STRING;
std::vector<CMarketData>::const_iterator iter;
std::vector<CParticipant>::const_iterator iterpart;

const std::vector<CMarketData> & userListBid =
pInstData->GetMarketDataBid();
for (iter = userListBid.begin(); iter != userListBid.end(); iter++)
{
       const std::vector<CParticipant> & participants =
iter->GetParticipants();
       for (iterpart = participants.begin(); iterpart !=
participants.end();
iterpart++)
       {
                     if (iterpart->GetSize() > 0.0 && iter->GetPrice()
> 0.0)
               {
               memset(&buffer, 0, sizeof(buffer));
               if (sizeof(iterpart->GetUserName()/*.c_str()*/) > 255
                    continue;
               //sprintf(buffer, "%s",
iterpart->GetUserName()/*.c_str()*/);
               info.psz = iterpart->GetUserName();
                       iIndex = m_ctrlUserListCtrl.FindItem(&info);
                       if (iIndex == -1)
                       { // insert the item
                       iIndex = m_ctrlUserListCtrl.GetItemCount();

                       if (sizeof(iterpart->GetUserName()/*.c_str()*/)
> 255
                       continue;
                       //csText.Format(TEXT("%s"),
iterpart->GetUserName()/*.c_str()
                       csText = iterpart->GetUserName(); //Sanjeev
012407
                       int size = iterpart->GetUserName().GetLength();

                       char bufsize[20];
                       memset(&bufsize, 0, sizeof(bufsize));
                       _itoa(size,bufsize,10);
                       CUtility::LogDebugInfo( "OnNotifyNewData - BID
UserName", bufsize);

m_ctrlUserListCtrl.InsertItem(LVIF_TEXT|LVIF_STATE, iIndex, csText,
                                                       0,
LVIS_SELECTED, 0, 0);
                       char * pchText = new char [csText.GetLength() +
1];
                       strcpy(pchText, (LPCTSTR)csText);
                       m_ctrlUserListCtrl.SetItemData(iIndex,
(DWORD)pchText);
                       }
                       if
(sizeof(pInstData->GetInstName()/*.c_str()*/) > 255)
                       continue;
                       //csText.Format(TEXT("%s"),
pInstData->GetInstName()/*.c_str()*/);
csText =
pInstData->GetInstName();
                       m_ctrlUserListCtrl.SetItemText(iIndex,
eUserViewListColumn::BID_INST, csText);

                       memset(&buffer, 0, sizeof(buffer));
                       sprintf(buffer, "%%.%df",
pSystemSetting->GetDecimalSize());
                       csText.Format(buffer, iterpart->GetSize());
                       m_ctrlUserListCtrl.SetItemText(iIndex,
eUserViewListColumn::BID_SIZE, csText);

                       memset(&buffer, 0, sizeof(buffer));
                       sprintf(buffer, "%%.%df",
pSystemSetting->GetDecimalPrice());
                       csText.Format(buffer, iter->GetPrice());
                       m_ctrlUserListCtrl.SetItemText(iIndex,

                    eUserViewListColumn::BID_PRICE,       csText);

                       if (sizeof(iterpart->GetTimestamp().c_str()) >
255)
                       continue;
                       csText.Format("%s",
iterpart->GetTimestamp().c_str());
                       m_ctrlUserListCtrl.SetItemText(iIndex,
eUserViewListColumn::BID_TIME, csText);
                       }
               }
       }

       const std::vector<CMarketData> & userListAsk =
pInstData->GetMarketDataAsk();
       for (iter = userListAsk.begin(); iter != userListAsk.end();
iter++)
       {
               const std::vector<CParticipant> & participants =
iter->GetParticipants();
               for (iterpart = participants.begin(); iterpart !=
participants.end();
iterpart++)
               {
                       if (iterpart->GetSize() > 0.0 &&
iter->GetPrice() > 0.0)
                       {
                       memset(&buffer, 0, sizeof(buffer));
                       if (sizeof(iterpart->GetUserName()/*.c_str()*/)
> 255)
                       continue;
                       //sprintf(buffer, "%s",
iterpart->GetUserName()/*.c_str()*/);
                       int size = iterpart->GetUserName().GetLength();

                       char bufsize[20];
                       memset(&bufsize, 0, sizeof(bufsize));
                       _itoa(size,bufsize,10);
                       CUtility::LogDebugInfo( "OnNotifyNewData - ASK
UserName", bufsize);
                       info.psz = iterpart->GetUserName();
                       iIndex = m_ctrlUserListCtrl.FindItem(&info);
                       if (iIndex == -1)
                       { // insert the item
                       iIndex = m_ctrlUserListCtrl.GetItemCount();
                       if (sizeof(iterpart->GetUserName()/*.c_str()*/)
> 255)
                       continue;
                       //csText.Format(TEXT("%s"),
iterpart->GetUserName()/*.c_str()*/);
                       csText = iterpart->GetUserName();

m_ctrlUserListCtrl.InsertItem(LVIF_TEXT|LVIF_STATE, iIndex, csText,
                                                       0,
LVIS_SELECTED, 0, 0);
                       char * pchText = new char [csText.GetLength() +
1];
                       strcpy(pchText, (LPCTSTR)csText);
                       m_ctrlUserListCtrl.SetItemData(iIndex,
(DWORD)pchText);
                       }
                       if
(sizeof(pInstData->GetInstName()/*.c_str()*/) > 255)
                       continue;
                       //csText.Format(TEXT("%s"),
pInstData->GetInstName().c_str());
                       csText = pInstData->GetInstName();
                       m_ctrlUserListCtrl.SetItemText(iIndex,

                   eUserViewListColumn::ASK_INST, csText);

                       memset(&buffer, 0, sizeof(buffer));
                       sprintf(buffer, "%%.%df",
pSystemSetting->GetDecimalSize());
                       csText.Format(buffer, iterpart->GetSize());
                       m_ctrlUserListCtrl.SetItemText(iIndex,

                    eUserViewListColumn::ASK_SIZE, csText);

                       memset(&buffer, 0, sizeof(buffer));
                       sprintf(buffer, "%%.%df",
pSystemSetting->GetDecimalPrice());
                       csText.Format(buffer, iter->GetPrice());
                       m_ctrlUserListCtrl.SetItemText(iIndex,

                    eUserViewListColumn::ASK_PRICE, csText);

                       if (sizeof(iterpart->GetTimestamp().c_str()) >
255)
                       continue;
                       csText.Format("%s",
iterpart->GetTimestamp().c_str());
                       m_ctrlUserListCtrl.SetItemText(iIndex,

                     eUserViewListColumn::ASK_TIME, csText);
                       }
               }
       }

              VERIFY(m_ctrlUserListCtrl.SortItems( CompareFunction, r

einterpret_cast<DWORD>(&m_ctrlUserListCtrl)));

              WRITE_LOG_FUNCTION_EXIT("LRESULT
CUserViewFrame::OnNotifyNewData (WPARAM wParam,
                                                            PARAM
lParam)")

       const char* strVariable1("CUserViewFrame::OnNotifyNewData
END");
       CUtility::LogDebugInfo( strVariable1, strValue);

       return 0;

}

Is there any chance the sprintf or CString Format function is creating
this problem.

I have spent lot of time it undertsanding this bug with no success. Any

help would be greatly appreciated.

Regards,
Sandy
Ben Voigt - 25 Jan 2007 21:09 GMT
> LRESULT CUserViewFrame::OnNotifyNewData (WPARAM wParam, LPARAM lParam)
> {
[quoted text clipped - 6 lines]
>
> PInstData pInstData = (PInstData)wParam;

dynamic_cast would be appropriate here, and help protect you against random
messages broadcast by other applications.

> if (!pInstData) return 0;
>
[quoted text clipped - 205 lines]
> Regards,
> Sandy

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.