aMule Forum

Please login or register.

Login with username, password and session length
Advanced search  

News:

We're back! (IN POG FORM)

Author Topic: Assertion in Recalculate Hash  (Read 6197 times)

phoenix

  • Evil respawning bird from aMule Dev Team
  • Developer
  • Hero Member
  • *****
  • Karma: 44
  • Offline Offline
  • Posts: 2503
  • The last shadow you'll ever see
Assertion in Recalculate Hash
« on: August 06, 2009, 07:44:28 PM »

Code: [Select]
ASSERT INFO:
SHAHashSet.cpp(154): assert "!( (m_pLeftTree != __null) ^ (m_pRightTree != __null))" failed in ReCalculateHash().

BACKTRACE:
[1] wxOnAssert(wchar_t const*, int, char const*, wchar_t const*, wchar_t const*)
[2] CAICHHashTree::ReCalculateHash(CAICHHashAlgo*, bool) /home/user/amule/trunk5/src/SHAHashSet.cpp:155
[3] CAICHHashTree::VerifyHashTree(CAICHHashAlgo*, bool) /home/user/amule/trunk5/src/SHAHashSet.cpp:199
[4] CAICHHashTree::VerifyHashTree(CAICHHashAlgo*, bool) /home/user/amule/trunk5/src/SHAHashSet.cpp:240
[5] CAICHHashSet::VerifyHashTree(bool) /home/user/amule/trunk5/src/SHAHashSet.cpp:817
[6] CAICHHashSet::ReadRecoveryData(unsigned long long, CMemFile*) /home/user/amule/trunk5/src/SHAHashSet.cpp:601
[7] CUpDownClient::ProcessAICHAnswer(unsigned char const*, unsigned int) /home/user/amule/trunk5/src/DownloadClient.cpp:1599
[8] CClientTCPSocket::ProcessExtPacket(unsigned char const*, unsigned int, unsigned char) /home/user/amule/trunk5/src/ClientTCPSocket.cpp:1649
[9] CClientTCPSocket::PacketReceived(CPacket*) /home/user/amule/trunk5/src/ClientTCPSocket.cpp:2061
[10] CEMSocket::OnReceive(int) /home/user/amule/trunk5/src/EMSocket.cpp:328
[11] CClientTCPSocket::OnReceive(int) /home/user/amule/trunk5/src/ClientTCPSocket.cpp:1965
[12] CClientTCPSocketHandler::ClientTCPSocketHandler(wxSocketEvent&) /home/user/amule/trunk5/src/ClientTCPSocket.cpp:101
[13] wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) cons)
[14] wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
[15] wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*)
[16] wxEvtHandler::ProcessEvent(wxEvent&)
[17] wxEvtHandler::ProcessPendingEvents()
[18] wxAppConsole::ProcessPendingEvents()
[19] wxAppBase::ProcessIdle()
[20] g_main_context_dispatch()
[21] g_main_context_iteration()
[22] gtk_main_iteration()
[23] wxWindow::DoPopupMenu(wxMenu*, int, int)
[24] wxWindowBase::PopupMenu(wxMenu*, int, int) /home/user/usr/wxWidgets-2.8.9/include/wx-2.8/wx/window.h:926
[25] MuleExtern::wxGenericListCtrl::DoPopupMenu(wxMenu*, int, int) /home/user/amule/trunk5/src/extern/wxWidgets/listctrl.cpp:5811
[26] wxWindowBase::PopupMenu(wxMenu*, wxPoint const&) /home/user/usr/wxWidgets-2.8.10/include/wx-2.8/wx/window.h:924
[27] CDownloadListCtrl::OnMouseRightClick(wxListEvent&) /home/user/amule/trunk5/src/DownloadListCtrl.cpp:1021
[28] wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) cons)
[29] wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
[30] wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*)
[31] wxEvtHandler::ProcessEvent(wxEvent&)
[32] MuleExtern::wxListMainWindow::SendNotify(unsigned int, int, wxPoint const&) /home/user/amule/trunk5/src/extern/wxWidgets/listctrl.cpp:2944
[33] MuleExtern::wxListMainWindow::OnMouse(wxMouseEvent&) /home/user/amule/trunk5/src/extern/wxWidgets/listctrl.cpp:3244
[34] wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) cons)
[35] wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
[36] wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*)
[37] wxEvtHandler::ProcessEvent(wxEvent&)
[38] wxEvtHandler::ProcessEvent(wxEvent&)
[39] wxScrollHelperEvtHandler::ProcessEvent(wxEvent&)
[40] wxWindow::GTKProcessEvent(wxEvent&) cons)
[41] g_closure_invoke()
[42] g_signal_emit_valist()
[43] g_signal_emit()
[44] gtk_propagate_event()
[45] gtk_main_do_event()
[46] g_main_context_dispatch()
[47] g_main_context_iteration()
[48] gtk_main_iteration()
[49] wxWindow::DoPopupMenu(wxMenu*, int, int)
[50] wxWindowBase::PopupMenu(wxMenu*, int, int) /home/user/usr/wxWidgets-2.8.9/include/wx-2.8/wx/window.h:926
[51] MuleExtern::wxGenericListCtrl::DoPopupMenu(wxMenu*, int, int) /home/user/amule/trunk5/src/extern/wxWidgets/listctrl.cpp:5811
[52] wxWindowBase::PopupMenu(wxMenu*, wxPoint const&) /home/user/usr/wxWidgets-2.8.10/include/wx-2.8/wx/window.h:924
[53] CDownloadListCtrl::OnMouseRightClick(wxListEvent&) /home/user/amule/trunk5/src/DownloadListCtrl.cpp:1021
[54] wxAppConsole::HandleEvent(wxEvtHandler*, void (wxEvtHandler::*)(wxEvent&), wxEvent&) cons)
[55] wxEvtHandler::ProcessEventIfMatches(wxEventTableEntryBase const&, wxEvtHandler*, wxEvent&)
[56] wxEventHashTable::HandleEvent(wxEvent&, wxEvtHandler*)
[57] wxEvtHandler::ProcessEvent(wxEvent&)
[58] MuleExtern::wxListMainWindow::SendNotify(unsigned int, int, wxPoint const&) /home/user/amule/trunk5/src/extern/wxWidgets/listctrl.cpp:2944
[59] MuleExtern::wxListMainWindow::OnMouse(wxMouseEvent&) /home/user/amule/trunk5/src/extern/wxWidgets/listctrl.cpp:3244
Logged

phoenix

  • Evil respawning bird from aMule Dev Team
  • Developer
  • Hero Member
  • *****
  • Karma: 44
  • Offline Offline
  • Posts: 2503
  • The last shadow you'll ever see
Re: Assertion in Recalculate Hash
« Reply #1 on: August 06, 2009, 07:45:03 PM »

Code: [Select]
(gdb) bt
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb764c6a7 in poll () from /lib/libc.so.6
#2  0xb7bb5146 in wxapp_poll_func (ufds=0x142db0d0, nfds=8, timeout=19) at ./src/gtk/app.cpp:259
#3  0xb6e40f12 in ?? () from /usr/lib/libglib-2.0.so.0
#4  0xb6e415a2 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#5  0xb7239755 in gtk_dialog_run () from /usr/lib/libgtk-x11-2.0.so.0
#6  0xb7be6370 in wxGUIAppTraits::ShowAssertDialog (this=0x8cc1ba8, msg=@0xbfa7b338) at ./src/gtk/utilsgtk.cpp:387
#7  0xb78b2826 in ShowAssertDialog (szFile=0x885883c, nLine=154, szFunc=0x15bbf754, szCond=0x88589c4, szMsg=0x0, traits=0x8cc1ba8)
    at ./src/common/appbase.cpp:836
#8  0xb78b2bf4 in wxAppConsole::OnAssertFailure (this=0x8c9bac8, file=0x885883c, line=154, func=0x15bbf754, cond=0x88589c4, msg=0x0)
    at ./src/common/appbase.cpp:445
#9  0xb7bb4495 in wxApp::OnAssertFailure (this=0x8c9bac8, file=0x885883c, line=154, func=0x15bbf754, cond=0x88589c4, msg=0x0)
    at ./src/gtk/app.cpp:556
#10 0x0808761e in CamuleApp::OnAssertFailure (this=0x8c9bac8, file=0x885883c, line=154, func=0x15bbf754, cond=0x88589c4, msg=0x0) at amule.cpp:1391
#11 0xb78b295e in wxOnAssert (szFile=0x885883c, nLine=154, szFunc=0x885ad54 "ReCalculateHash", szCond=0x88589c4, szMsg=0x0)
    at ./src/common/appbase.cpp:711
#12 0x083d6b9e in CAICHHashTree::ReCalculateHash (this=0xe8377b8, hashalg=0x154a3b78, bDontReplace=true) at SHAHashSet.cpp:154
#13 0x083d7543 in CAICHHashTree::VerifyHashTree (this=0x14596658, hashalg=0x154a3b78, bDeleteBadTrees=true) at SHAHashSet.cpp:197
#14 0x083d78e2 in CAICHHashTree::VerifyHashTree (this=0xa521aec, hashalg=0x154a3b78, bDeleteBadTrees=true) at SHAHashSet.cpp:240
#15 0x083d9053 in CAICHHashSet::VerifyHashTree (this=0xa521ab0, bDeleteBadTrees=true) at SHAHashSet.cpp:817
#16 0x083d98f5 in CAICHHashSet::ReadRecoveryData (this=0xa521ab0, nPartStartPos=272384000, fileDataIn=0xbfa7b80c) at SHAHashSet.cpp:601
#17 0x0810bd6a in CUpDownClient::ProcessAICHAnswer (this=0x14469a40, packet=0x15e78a18 "����\021�", size=1340) at DownloadClient.cpp:1599
#18 0x080e98d0 in CClientTCPSocket::ProcessExtPacket (this=0x15b39910, buffer=0x15e78a18 "����\021�", size=1340, opcode=156 '\234')
    at ClientTCPSocket.cpp:1649
#19 0x080f77b2 in CClientTCPSocket::PacketReceived (this=0x15b39910, packet=0x123afa10) at ClientTCPSocket.cpp:2061
#20 0x0815d755 in CEMSocket::OnReceive (this=0x15b39910, nErrorCode=0) at EMSocket.cpp:328
#21 0x080ece90 in CClientTCPSocket::OnReceive (this=0x15b39910, nErrorCode=0) at ClientTCPSocket.cpp:1963
#22 0x080f924d in CClientTCPSocketHandler::ClientTCPSocketHandler (this=0x8a6a320, event=@0x15631c70) at ClientTCPSocket.cpp:101
#23 0xb78b22fd in wxAppConsole::HandleEvent (this=0x8c9bac8, handler=0x8a6a320,
    func=0x80f902c <CClientTCPSocketHandler::ClientTCPSocketHandler(wxSocketEvent&)>, event=@0x15631c70) at ./src/common/appbase.cpp:322
#24 0xb79793e0 in wxEvtHandler::ProcessEventIfMatches (entry=@0x8a6a2e0, handler=0x8a6a320, event=@0x15631c70) at ./src/common/event.cpp:1231
#25 0xb797b179 in wxEventHashTable::HandleEvent (this=0x8a6a2c0, event=@0x15631c70, self=0x8a6a320) at ./src/common/event.cpp:906
#26 0xb797b2cd in wxEvtHandler::ProcessEvent (this=0x8a6a320, event=@0x15631c70) at ./src/common/event.cpp:1293
#27 0xb7979c24 in wxEvtHandler::ProcessPendingEvents (this=0x8a6a320) at ./src/common/event.cpp:1191
#28 0xb78b3673 in wxAppConsole::ProcessPendingEvents (this=0x8c9bac8) at ./src/common/appbase.cpp:294
#29 0xb7c84cde in wxAppBase::ProcessIdle (this=0x8c9bac8) at ./src/common/appcmn.cpp:435
#30 0xb7bb5239 in wxapp_idle_callback () at ./src/gtk/app.cpp:206
#31 0xb6e3ba91 in ?? () from /usr/lib/libglib-2.0.so.0
#32 0xb6e3d9c8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#33 0xb6e41083 in ?? () from /usr/lib/libglib-2.0.so.0
#34 0xb6e41241 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#35 0xb72b7684 in gtk_main_iteration () from /usr/lib/libgtk-x11-2.0.so.0
#36 0xb7c62600 in wxWindow::DoPopupMenu (this=0xa077bb8, menu=0xee6d360, x=289, y=190) at ./src/gtk/menu.cpp:1730
#37 0x086e6d07 in wxWindowBase::PopupMenu (this=0xa077bb8, menu=0xee6d360, x=289, y=190)
    at /home/user/usr/wxWidgets-2.8.9/include/wx-2.8/wx/window.h:926
#38 0x086d57f2 in MuleExtern::wxGenericListCtrl::DoPopupMenu (this=0xa076b78, menu=0xee6d360, x=289, y=190) at extern/wxWidgets/listctrl.cpp:5807
#39 0x083095a4 in wxWindowBase::PopupMenu (this=0xa076b78, menu=0xee6d360, pos=@0xbfa7c9b4)
    at /home/user/usr/wxWidgets-2.8.10/include/wx-2.8/wx/window.h:924
#40 0x08316eba in CDownloadListCtrl::OnMouseRightClick (this=0xa076b78, evt=@0xbfa7cb54) at DownloadListCtrl.cpp:1021
#41 0xb78b22fd in wxAppConsole::HandleEvent (this=0x8c9bac8, handler=0xa076b78,
    func=0x8314a8a <CDownloadListCtrl::OnMouseRightClick(wxListEvent&)>, event=@0xbfa7cb54) at ./src/common/appbase.cpp:322
#42 0xb79793e0 in wxEvtHandler::ProcessEventIfMatches (entry=@0x8c54918, handler=0xa076b78, event=@0xbfa7cb54) at ./src/common/event.cpp:1231
#43 0xb797b179 in wxEventHashTable::HandleEvent (this=0x8c548e0, event=@0xbfa7cb54, self=0xa076b78) at ./src/common/event.cpp:906
#44 0xb797b2cd in wxEvtHandler::ProcessEvent (this=0xa076b78, event=@0xbfa7cb54) at ./src/common/event.cpp:1293
#45 0x086dbb21 in MuleExtern::wxListMainWindow::SendNotify (this=0xa077bb8, line=63, command=10061, point=@0xbfa7cd04)
    at extern/wxWidgets/listctrl.cpp:2944
#46 0x086dfc46 in MuleExtern::wxListMainWindow::OnMouse (this=0xa077bb8, event=@0xbfa7cf68) at extern/wxWidgets/listctrl.cpp:3239
#47 0xb78b22fd in wxAppConsole::HandleEvent (this=0x8c9bac8, handler=0xa077bb8,
    func=0x86df36c <MuleExtern::wxListMainWindow::OnMouse(wxMouseEvent&)>, event=@0xbfa7cf68) at ./src/common/appbase.cpp:322
#48 0xb79793e0 in wxEvtHandler::ProcessEventIfMatches (entry=@0x8c5d510, handler=0xa077bb8, event=@0xbfa7cf68) at ./src/common/event.cpp:1231
#49 0xb797b179 in wxEventHashTable::HandleEvent (this=0x8c5d460, event=@0xbfa7cf68, self=0xa077bb8) at ./src/common/event.cpp:906
#50 0xb797b2cd in wxEvtHandler::ProcessEvent (this=0xa077bb8, event=@0xbfa7cf68) at ./src/common/event.cpp:1293
#51 0xb797b30b in wxEvtHandler::ProcessEvent (this=0xa077ee8, event=@0xbfa7cf68) at ./src/common/event.cpp:1300
#52 0xb7d59767 in wxScrollHelperEvtHandler::ProcessEvent (this=0xa077ee8, event=@0xbfa7cf68) at ./src/generic/scrlwing.cpp:208
#53 0xb7be9754 in wxWindow::GTKProcessEvent (this=0xa077bb8, event=@0xbfa7cf68) at ./src/gtk/window.cpp:1433
#54 0xb7bf2f95 in gtk_window_button_press_callback (widget=0x9fbf470, gdk_event=0xc8cca90, win=0xa077bb8) at ./src/gtk/window.cpp:1632
#55 0xb72bd4b6 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#56 0xb6ee8cb8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#57 0xb6eff12d in ?? () from /usr/lib/libgobject-2.0.so.0
#58 0xb6f006bb in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#59 0xb6f00cb6 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#60 0xb73d29fe in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#61 0xb72b5fcc in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#62 0xb72b7497 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#63 0xb713f6ca in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#64 0xb6e3d9c8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#65 0xb6e41083 in ?? () from /usr/lib/libglib-2.0.so.0
#66 0xb6e41241 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#67 0xb72b7684 in gtk_main_iteration () from /usr/lib/libgtk-x11-2.0.so.0
#68 0xb7c62600 in wxWindow::DoPopupMenu (this=0xa077bb8, menu=0xc4b70e8, x=332, y=330) at ./src/gtk/menu.cpp:1730
#69 0x086e6d07 in wxWindowBase::PopupMenu (this=0xa077bb8, menu=0xc4b70e8, x=332, y=330)
    at /home/user/usr/wxWidgets-2.8.9/include/wx-2.8/wx/window.h:926
#70 0x086d57f2 in MuleExtern::wxGenericListCtrl::DoPopupMenu (this=0xa076b78, menu=0xc4b70e8, x=332, y=330) at extern/wxWidgets/listctrl.cpp:5807
#71 0x083095a4 in wxWindowBase::PopupMenu (this=0xa076b78, menu=0xc4b70e8, pos=@0xbfa7d804)
    at /home/user/usr/wxWidgets-2.8.10/include/wx-2.8/wx/window.h:924
#72 0x08316eba in CDownloadListCtrl::OnMouseRightClick (this=0xa076b78, evt=@0xbfa7d9a4) at DownloadListCtrl.cpp:1021
#73 0xb78b22fd in wxAppConsole::HandleEvent (this=0x8c9bac8, handler=0xa076b78,
    func=0x8314a8a <CDownloadListCtrl::OnMouseRightClick(wxListEvent&)>, event=@0xbfa7d9a4) at ./src/common/appbase.cpp:322
#74 0xb79793e0 in wxEvtHandler::ProcessEventIfMatches (entry=@0x8c54918, handler=0xa076b78, event=@0xbfa7d9a4) at ./src/common/event.cpp:1231
#75 0xb797b179 in wxEventHashTable::HandleEvent (this=0x8c548e0, event=@0xbfa7d9a4, self=0xa076b78) at ./src/common/event.cpp:906
#76 0xb797b2cd in wxEvtHandler::ProcessEvent (this=0xa076b78, event=@0xbfa7d9a4) at ./src/common/event.cpp:1293
#77 0x086dbb21 in MuleExtern::wxListMainWindow::SendNotify (this=0xa077bb8, line=61, command=10061, point=@0xbfa7db54)
    at extern/wxWidgets/listctrl.cpp:2944
#78 0x086dfc46 in MuleExtern::wxListMainWindow::OnMouse (this=0xa077bb8, event=@0xbfa7ddb8) at extern/wxWidgets/listctrl.cpp:3239
#79 0xb78b22fd in wxAppConsole::HandleEvent (this=0x8c9bac8, handler=0xa077bb8,
    func=0x86df36c <MuleExtern::wxListMainWindow::OnMouse(wxMouseEvent&)>, event=@0xbfa7ddb8) at ./src/common/appbase.cpp:322
#80 0xb79793e0 in wxEvtHandler::ProcessEventIfMatches (entry=@0x8c5d510, handler=0xa077bb8, event=@0xbfa7ddb8) at ./src/common/event.cpp:1231
#81 0xb797b179 in wxEventHashTable::HandleEvent (this=0x8c5d460, event=@0xbfa7ddb8, self=0xa077bb8) at ./src/common/event.cpp:906
#82 0xb797b2cd in wxEvtHandler::ProcessEvent (this=0xa077bb8, event=@0xbfa7ddb8) at ./src/common/event.cpp:1293
#83 0xb797b30b in wxEvtHandler::ProcessEvent (this=0xa077ee8, event=@0xbfa7ddb8) at ./src/common/event.cpp:1300
#84 0xb7d59767 in wxScrollHelperEvtHandler::ProcessEvent (this=0xa077ee8, event=@0xbfa7ddb8) at ./src/generic/scrlwing.cpp:208
#85 0xb7be9754 in wxWindow::GTKProcessEvent (this=0xa077bb8, event=@0xbfa7ddb8) at ./src/gtk/window.cpp:1433
#86 0xb7bf2f95 in gtk_window_button_press_callback (widget=0x9fbf470, gdk_event=0xc8ccc18, win=0xa077bb8) at ./src/gtk/window.cpp:1632
#87 0xb72bd4b6 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#88 0xb6ee8cb8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#89 0xb6eff12d in ?? () from /usr/lib/libgobject-2.0.so.0
#90 0xb6f006bb in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#91 0xb6f00cb6 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#92 0xb73d29fe in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#93 0xb72b5fcc in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#94 0xb72b7497 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#95 0xb713f6ca in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#96 0xb6e3d9c8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#97 0xb6e41083 in ?? () from /usr/lib/libglib-2.0.so.0
#98 0xb6e41241 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#99 0xb72b7684 in gtk_main_iteration () from /usr/lib/libgtk-x11-2.0.so.0
#100 0xb7c62600 in wxWindow::DoPopupMenu (this=0xa077bb8, menu=0xfa8d070, x=329, y=233) at ./src/gtk/menu.cpp:1730
#101 0x086e6d07 in wxWindowBase::PopupMenu (this=0xa077bb8, menu=0xfa8d070, x=329, y=233)
    at /home/user/usr/wxWidgets-2.8.9/include/wx-2.8/wx/window.h:926
#102 0x086d57f2 in MuleExtern::wxGenericListCtrl::DoPopupMenu (this=0xa076b78, menu=0xfa8d070, x=329, y=233) at extern/wxWidgets/listctrl.cpp:5807
#103 0x083095a4 in wxWindowBase::PopupMenu (this=0xa076b78, menu=0xfa8d070, pos=@0xbfa7e654)
    at /home/user/usr/wxWidgets-2.8.10/include/wx-2.8/wx/window.h:924
#104 0x08316eba in CDownloadListCtrl::OnMouseRightClick (this=0xa076b78, evt=@0xbfa7e7f4) at DownloadListCtrl.cpp:1021
#105 0xb78b22fd in wxAppConsole::HandleEvent (this=0x8c9bac8, handler=0xa076b78,
    func=0x8314a8a <CDownloadListCtrl::OnMouseRightClick(wxListEvent&)>, event=@0xbfa7e7f4) at ./src/common/appbase.cpp:322
#106 0xb79793e0 in wxEvtHandler::ProcessEventIfMatches (entry=@0x8c54918, handler=0xa076b78, event=@0xbfa7e7f4) at ./src/common/event.cpp:1231
#107 0xb797b179 in wxEventHashTable::HandleEvent (this=0x8c548e0, event=@0xbfa7e7f4, self=0xa076b78) at ./src/common/event.cpp:906
#108 0xb797b2cd in wxEvtHandler::ProcessEvent (this=0xa076b78, event=@0xbfa7e7f4) at ./src/common/event.cpp:1293
#109 0x086dbb21 in MuleExtern::wxListMainWindow::SendNotify (this=0xa077bb8, line=20, command=10061, point=@0xbfa7e9a4)
    at extern/wxWidgets/listctrl.cpp:2944
#110 0x086dfc46 in MuleExtern::wxListMainWindow::OnMouse (this=0xa077bb8, event=@0xbfa7ec08) at extern/wxWidgets/listctrl.cpp:3239
#111 0xb78b22fd in wxAppConsole::HandleEvent (this=0x8c9bac8, handler=0xa077bb8,
    func=0x86df36c <MuleExtern::wxListMainWindow::OnMouse(wxMouseEvent&)>, event=@0xbfa7ec08) at ./src/common/appbase.cpp:322
#112 0xb79793e0 in wxEvtHandler::ProcessEventIfMatches (entry=@0x8c5d510, handler=0xa077bb8, event=@0xbfa7ec08) at ./src/common/event.cpp:1231
#113 0xb797b179 in wxEventHashTable::HandleEvent (this=0x8c5d460, event=@0xbfa7ec08, self=0xa077bb8) at ./src/common/event.cpp:906
#114 0xb797b2cd in wxEvtHandler::ProcessEvent (this=0xa077bb8, event=@0xbfa7ec08) at ./src/common/event.cpp:1293
#115 0xb797b30b in wxEvtHandler::ProcessEvent (this=0xa077ee8, event=@0xbfa7ec08) at ./src/common/event.cpp:1300
#116 0xb7d59767 in wxScrollHelperEvtHandler::ProcessEvent (this=0xa077ee8, event=@0xbfa7ec08) at ./src/generic/scrlwing.cpp:208
#117 0xb7be9754 in wxWindow::GTKProcessEvent (this=0xa077bb8, event=@0xbfa7ec08) at ./src/gtk/window.cpp:1433
#118 0xb7bf2f95 in gtk_window_button_press_callback (widget=0x9fbf470, gdk_event=0xc8ccb80, win=0xa077bb8) at ./src/gtk/window.cpp:1632
#119 0xb72bd4b6 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#120 0xb6ee8cb8 in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#121 0xb6eff12d in ?? () from /usr/lib/libgobject-2.0.so.0
#122 0xb6f006bb in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#123 0xb6f00cb6 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#124 0xb73d29fe in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#125 0xb72b5fcc in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#126 0xb72b7497 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#127 0xb713f6ca in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#128 0xb6e3d9c8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#129 0xb6e41083 in ?? () from /usr/lib/libglib-2.0.so.0
#130 0xb6e41241 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#131 0xb72b7684 in gtk_main_iteration () from /usr/lib/libgtk-x11-2.0.so.0
#132 0xb7c62600 in wxWindow::DoPopupMenu (this=0xa077bb8, menu=0xdbb52f0, x=377, y=210) at ./src/gtk/menu.cpp:1730
#133 0x086e6d07 in wxWindowBase::PopupMenu (this=0xa077bb8, menu=0xdbb52f0, x=377, y=210)
    at /home/user/usr/wxWidgets-2.8.9/include/wx-2.8/wx/window.h:926
#134 0x086d57f2 in MuleExtern::wxGenericListCtrl::DoPopupMenu (this=0xa076b78, menu=0xdbb52f0, x=377, y=210) at extern/wxWidgets/listctrl.cpp:5807
#135 0x083095a4 in wxWindowBase::PopupMenu (this=0xa076b78, menu=0xdbb52f0, pos=@0xbfa7f4a4)
    at /home/user/usr/wxWidgets-2.8.10/include/wx-2.8/wx/window.h:924
#136 0x08316eba in CDownloadListCtrl::OnMouseRightClick (this=0xa076b78, evt=@0xbfa7f644) at DownloadListCtrl.cpp:1021
#137 0xb78b22fd in wxAppConsole::HandleEvent (this=0x8c9bac8, handler=0xa076b78,
    func=0x8314a8a <CDownloadListCtrl::OnMouseRightClick(wxListEvent&)>, event=@0xbfa7f644) at ./src/common/appbase.cpp:322
#138 0xb79793e0 in wxEvtHandler::ProcessEventIfMatches (entry=@0x8c54918, handler=0xa076b78, event=@0xbfa7f644) at ./src/common/event.cpp:1231
#139 0xb797b179 in wxEventHashTable::HandleEvent (this=0x8c548e0, event=@0xbfa7f644, self=0xa076b78) at ./src/common/event.cpp:906
#140 0xb797b2cd in wxEvtHandler::ProcessEvent (this=0xa076b78, event=@0xbfa7f644) at ./src/common/event.cpp:1293
#141 0x086dbb21 in MuleExtern::wxListMainWindow::SendNotify (this=0xa077bb8, line=19, command=10061, point=@0xbfa7f7f4)
    at extern/wxWidgets/listctrl.cpp:2944
#142 0x086dfc46 in MuleExtern::wxListMainWindow::OnMouse (this=0xa077bb8, event=@0xbfa7fa58) at extern/wxWidgets/listctrl.cpp:3239
#143 0xb78b22fd in wxAppConsole::HandleEvent (this=0x8c9bac8, handler=0xa077bb8,
    func=0x86df36c <MuleExtern::wxListMainWindow::OnMouse(wxMouseEvent&)>, event=@0xbfa7fa58) at ./src/common/appbase.cpp:322
#144 0xb79793e0 in wxEvtHandler::ProcessEventIfMatches (entry=@0x8c5d510, handler=0xa077bb8, event=@0xbfa7fa58) at ./src/common/event.cpp:1231
#145 0xb797b179 in wxEventHashTable::HandleEvent (this=0x8c5d460, event=@0xbfa7fa58, self=0xa077bb8) at ./src/common/event.cpp:906
#146 0xb797b2cd in wxEvtHandler::ProcessEvent (this=0xa077bb8, event=@0xbfa7fa58) at ./src/common/event.cpp:1293
#147 0xb797b30b in wxEvtHandler::ProcessEvent (this=0xa077ee8, event=@0xbfa7fa58) at ./src/common/event.cpp:1300
#148 0xb7d59767 in wxScrollHelperEvtHandler::ProcessEvent (this=0xa077ee8, event=@0xbfa7fa58) at ./src/generic/scrlwing.cpp:208
#149 0xb7be9754 in wxWindow::GTKProcessEvent (this=0xa077bb8, event=@0xbfa7fa58) at ./src/gtk/window.cpp:1433
#150 0xb7bf2f95 in gtk_window_button_press_callback (widget=0x9fbf470, gdk_event=0xc8cc950, win=0xa077bb8) at ./src/gtk/window.cpp:1632
#151 0xb72bd4b6 in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#152 0xb6ee8d8b in g_closure_invoke () from /usr/lib/libgobject-2.0.so.0
#153 0xb6eff12d in ?? () from /usr/lib/libgobject-2.0.so.0
#154 0xb6f006bb in g_signal_emit_valist () from /usr/lib/libgobject-2.0.so.0
#155 0xb6f00cb6 in g_signal_emit () from /usr/lib/libgobject-2.0.so.0
#156 0xb73d29fe in ?? () from /usr/lib/libgtk-x11-2.0.so.0
#157 0xb72b5fcc in gtk_propagate_event () from /usr/lib/libgtk-x11-2.0.so.0
#158 0xb72b7497 in gtk_main_do_event () from /usr/lib/libgtk-x11-2.0.so.0
#159 0xb713f6ca in ?? () from /usr/lib/libgdk-x11-2.0.so.0
#160 0xb6e3d9c8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#161 0xb6e41083 in ?? () from /usr/lib/libglib-2.0.so.0
#162 0xb6e415a2 in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#163 0xb72b7829 in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#164 0xb7bd53b0 in wxEventLoop::Run (this=0xabe7b10) at ./src/gtk/evtloop.cpp:76
#165 0xb7c84719 in wxAppBase::MainLoop (this=0x8c9bac8) at ./src/common/appcmn.cpp:312
#166 0xb7c8442d in wxAppBase::OnRun (this=0x8c9bac8) at ./src/common/appcmn.cpp:367
#167 0xb78fd2cd in wxEntry (argc=@0xb7a1666c, argv=0x8c8a480) at ./src/common/init.cpp:460
#168 0xb78fd4f3 in wxEntry (argc=@0xbfa80140, argv=0xbfa801c4) at ./src/common/init.cpp:472
#169 0x082bb414 in main (argc=Cannot access memory at address 0x8
) at amule-gui.cpp:94
(gdb) f 12
#12 0x083d6b9e in CAICHHashTree::ReCalculateHash (this=0xe8377b8, hashalg=0x154a3b78, bDontReplace=true) at SHAHashSet.cpp:154
154             wxASSERT ( !( (m_pLeftTree != NULL) ^ (m_pRightTree != NULL)) );
(gdb) l
149     // calculates missing hash fromt he existing ones
150     // overwrites existing hashs
151     // fails if no hash is found for any branch
152     bool CAICHHashTree::ReCalculateHash(CAICHHashAlgo* hashalg, bool bDontReplace)
153     {
154             wxASSERT ( !( (m_pLeftTree != NULL) ^ (m_pRightTree != NULL)) );
155             if (m_pLeftTree && m_pRightTree) {
156                     if ( !m_pLeftTree->ReCalculateHash(hashalg, bDontReplace) || !m_pRightTree->ReCalculateHash(hashalg, bDontReplace) ) {
157                             return false;
158                     }
Logged

btkaos

  • Global Moderator
  • Sr. Member
  • *****
  • Karma: 110
  • Offline Offline
  • Posts: 486
  • Kaos is infinite!
Re: Assertion in Recalculate Hash
« Reply #2 on: September 07, 2009, 02:28:06 AM »

Oh my god! A 169 frames-long backtrace.

Something is very broken in the wx/gtk design in order to reach this. Call between layers going forth and back.

Logged

Stu Redman

  • Administrator
  • Hero Member
  • *****
  • Karma: 214
  • Offline Offline
  • Posts: 3739
  • Engines screaming
Re: Assertion in Recalculate Hash
« Reply #3 on: November 01, 2011, 06:17:21 PM »

I think I can see what is happening.
A hashtree is not necessarily fully populated. See CAICHHashTree::FindHash() which recurses and populates tree items on demand.
CUpDownClient::ProcessAICHAnswer() receives hash items for a tree of a single part.
It calls CAICHHashSet::ReadRecoveryData(), and here is the problem:
Although the data applies to a single part only, hashes are inserted happily into the complete tree (without even checking if they belong to our part, although this is data from remote!), and then the complete tree is checked - not only the part we just downloaded.

How is this supposed to work?  ???

I was triggered by this post, but here we have a backtrace to see what is actually happening. This is vanilla eMule code as far as I see. But eMule has no debug mode of course to show the problem.
Logged
The image of mother goddess, lying dormant in the eyes of the dead, the sheaf of the corn is broken, end the harvest, throw the dead on the pyre -- Iron Maiden, Isle of Avalon

Stu Redman

  • Administrator
  • Hero Member
  • *****
  • Karma: 214
  • Offline Offline
  • Posts: 3739
  • Engines screaming
Re: Assertion in Recalculate Hash
« Reply #4 on: November 01, 2011, 07:13:21 PM »

OK - CAICHHashTree::CreatePartRecoveryData() sends a valid hash tree, starting on top, with both sub hashes per item or none. This includes hashes from outside of our part too of course. So strike my idea of checking if the hash address was inside the part.
So there are two possible causes of the problem:
1) Client sent bad data. Nothing we can do about that.
2) Our hash tree somehow ended up with singularly populated tree items which bite us now.
Maybe we should cleanup our tree first when we read recovery data?
Logged
The image of mother goddess, lying dormant in the eyes of the dead, the sheaf of the corn is broken, end the harvest, throw the dead on the pyre -- Iron Maiden, Isle of Avalon