Ok I've got new data. I've included 2 uint64 fences (same size as void*) around m_wndTaskbarNotifier in amuleDlg.h (aMule 2.2.2)
m_fence1( 0L ),
m_wndTaskbarNotifier(NULL),
m_fence2 ( 0L ),
and then added a check on them in ShowTransferRate
if (m_fence1 || m_fence2) {
AddLogLine(true , CFormat( _("BROKEN FENCE: %x,%x" )) % m_fence1 % m_fence2);
}
wxASSERT((m_wndTaskbarNotifier != NULL) == thePrefs::UseTrayIcon());
if (m_wndTaskbarNotifier) {
// set trayicon-icon
int percentDown = (int)ceil((kBpsDown*100) / thePrefs::GetMaxGraphDownloadRate());
UpdateTrayIcon( ( percentDown > 100 ) ? 100 : percentDown);
wxString buffer2;
if ( theApp->IsConnected() ) {
buffer2 = CFormat(_("aMule (%s | Connected)")) % buffer;
} else {
buffer2 = CFormat(_("aMule (%s | Disconnected)")) % buffer;
}
m_wndTaskbarNotifier->SetTrayToolTip(buffer2);
}
I was really surprised as I was unable to repeat the crash for a while, finally I selected the transfers window and send another message, and this is the result:
2009-02-20 01:12:07: BaseClient.cpp(2140): ED2k Client: 'http://emule-project.net' has passed the secure identification, V2 State: 0
2009-02-20 01:12:08: ClientTCPSocket.cpp(803): New message from 'wires' (IP:192.168.1.33)
2009-02-20 01:12:08: BROKEN FENCE: 0,10000000000
m_fence2 has that nasty 0x10000000000, so is it possible that CamuleDlg::SetActiveDialog is causing the crash?
grep SetActiveDialog *cpp
amuleDlg.cpp: SetActiveDialog(DT_TRANSFER_WND, m_transferwnd);
amuleDlg.cpp:void CamuleDlg::SetActiveDialog(DialogType type, wxWindow* dlg)
amuleDlg.cpp: SetActiveDialog(DT_NETWORKS_WND, m_serverwnd);
amuleDlg.cpp: SetActiveDialog(DT_SEARCH_WND, m_searchwnd);
amuleDlg.cpp: SetActiveDialog(DT_TRANSFER_WND, m_transferwnd);
amuleDlg.cpp: SetActiveDialog(DT_SHARED_WND, m_sharedfileswnd);
amuleDlg.cpp: SetActiveDialog(DT_CHAT_WND, m_chatwnd);
amuleDlg.cpp: SetActiveDialog(DT_STATS_WND, m_statisticswnd);
ChatWnd.cpp: theApp->amuledlg->SetActiveDialog(CamuleDlg::DT_CHAT_WND, this);
ChatWnd has the only invocation of this function outside amuleDlg.
Regards