Dr. Mingw crash report

Hi Nir,

I was running SoulseekQT for about three days straight without problems when today it finally crashed.

It seemed to happen when I closed a browsed share, but I am unsure. That share must have been somewhat large because it took more one minute to retrieve. At the time of the crash, I think that only one (very low speed) download and one (low speed) upload were active.

Win 7 x86 (32 bit) fully patched running on 2GB RAM.
- SoulseekQT.exe latest version
- MinGW libs as suggested in http://www.slsknet.org/news/node/200, not updated since the time of that thread
- QT libs version 4.7.3.0 because I didn't realise you had bundled a more recent version with the installer

Dr. Mingw debug report is pasted below. Happy bug hunting.

SoulseekQt.exe caused an Access Violation at location 00413bd8 in module SoulseekQt.exe Reading from location 00000431.

Registers:
eax=000003d1 ebx=0022cce0 ecx=00000000 edx=0022cc50 esi=1d8f5660 edi=0022cc50
eip=00413bd8 esp=0022cc20 ebp=0022cc78 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00210206
Call stack:
00413BD8 SoulseekQt.exe:00413BD8 Item::GetItems Data.cpp:1389
void Item::GetItems(
struct Item * this = &{
struct Type * mp_type = 0x000003d1,
string m_value = (indirect),
TypeItemsMap m_typeItemsMap = {
struct _Rb_tree _M_t = {
struct _Rb_tree_impl _M_impl = {
struct allocator allocator = {
struct new_allocator new_allocator = {

}
},
struct less _M_key_compare = {
struct binary_function binary_function = {

}
},
struct _Rb_tree_node_base _M_header = {
_Rb_tree_color _M_color = 1919251317,
struct _Rb_tree_node_base * _M_parent = 0x6168735f,
struct _Rb_tree_node_base * _M_left = 0x745f6572,
struct _Rb_tree_node_base * _M_right = 0x1d006261
},
size_t _M_node_count = 0
}
}
}
},
int8 * ip_typeName = "user_share_folder",
struct ItemSet * o_items = &{
struct set set = {
struct _Rb_tree _M_t = {
struct _Rb_tree_impl _M_impl = {
struct allocator allocator = {
struct new_allocator new_allocator = {

}
},
struct less _M_key_compare = {
struct binary_function binary_function = {

}
},
struct _Rb_tree_node_base _M_header = {
_Rb_tree_color _M_color = _S_red,
struct _Rb_tree_node_base * _M_parent = 0x00000000,
struct _Rb_tree_node_base * _M_left = 0x0022cce4,
struct _Rb_tree_node_base * _M_right = 0x0022cce4
},
size_t _M_node_count = 0
}
}
}
}
)
00413EFD SoulseekQt.exe:00413EFD ItemPtr::GetItems Data.cpp:1608
struct ItemSet ItemPtr::GetItems(
struct ItemPtr * this = &{
struct Item * mp_item = 0x1d8f5660
},
int8 * ip_typeName = "user_share_folder"
)
0042E734 SoulseekQt.exe:0042E734 ShareForm::Delete ShareForm.cpp:122
void ShareForm::Delete(
struct ShareForm * this = &{
struct Ui_ShareForm Ui_ShareForm = {
struct QHBoxLayout * horizontalLayout_2 = 0x005e1d48,
struct QVBoxLayout * verticalLayout = 0x13aa75b8,
struct QSplitter * splitter = 0x005e1e30,
struct QTreeWidget * folderTree = 0x72650000,
struct QTreeWidget * fileList = 0x13aa7670,
struct QHBoxLayout * horizontalLayout = 0x0bf788d8,
struct QLabel * SearchFilterSpacer = 0x1d8f5660,
struct QPushButton * pushButton = 0x00000003,
struct QLineEdit * filterEdit = 0x00000000
}
}
)
004F4918 SoulseekQt.exe:004F4918 SharesForm::qt_metacall moc_SharesForm.cpp:80
int32 SharesForm::qt_metacall(
struct SharesForm * this = &{
struct QWidget QWidget = (indirect),
struct DataHandler DataHandler = {
__vtbl_ptr_type * _vptr.DataHandler = 0x005df9d4,
struct set m_handlerSet = {
struct _Rb_tree _M_t = {
struct _Rb_tree_impl _M_impl = {
struct allocator allocator = {
struct new_allocator new_allocator = {

}
},
struct less _M_key_compare = {
struct binary_function binary_function = {

}
},
struct _Rb_tree_node_base _M_header = {
_Rb_tree_color _M_color = _S_red,
struct _Rb_tree_node_base * _M_parent = 0x028d4ba8,
struct _Rb_tree_node_base * _M_left = 0x028d4ba8,
struct _Rb_tree_node_base * _M_right = 0x028d4ba8
},
size_t _M_node_count = 1
}
}
}
},
struct QMetaObject staticMetaObject = {
struct ._18 d = {
struct QMetaObject * superdata = 0x005df8c8,
int8 * stringdata = 0x01f7db48,
uint * data = 0x005df9b0,
void * extradata = 0x01ef0000
}
},
struct SharesForm * ui = 0x01f855a0
},
Call _c = InvokeMetaMethod,
int32 _id = 27,
void * * _a = &0x00000000
)
6A2C73F9 QtCore4.dll:6A2C73F9 _ZN11QMetaObject8activateEP7QObjectPKS_iPPv
654F4CCE QtGui4.dll:654F4CCE _ZN10QTabWidget17tabCloseRequestedEi
654F6888 QtGui4.dll:654F6888 _ZN10QTabWidget11qt_metacallEN11QMetaObject4CallEiPPv
004F6AAE SoulseekQt.exe:004F6AAE TabWidget::qt_metacall moc_TabWidget.cpp:68
int32 TabWidget::qt_metacall(
struct TabWidget * this = &{
struct QTabWidget QTabWidget = (indirect),
struct QMetaObject staticMetaObject = {
struct ._18 d = {
struct QMetaObject * superdata = 0x005e1e68,
int8 * stringdata = 0x01f8f418,
uint * data = 0x005e1f58,
void * extradata = 0x01f80000
}
}
},
Call _c = InvokeMetaMethod,
int32 _id = 28,
void * * _a = &0x00000000
)
6A2C73F9 QtCore4.dll:6A2C73F9 _ZN11QMetaObject8activateEP7QObjectPKS_iPPv
654EBCE6 QtGui4.dll:654EBCE6 _ZN7QTabBar17tabCloseRequestedEi
654EC270 QtGui4.dll:654EC270 _ZN7QTabBarD2Ev
654F0FCF QtGui4.dll:654F0FCF _ZN7QTabBar11qt_metacallEN11QMetaObject4CallEiPPv
6A2C73F9 QtCore4.dll:6A2C73F9 _ZN11QMetaObject8activateEP7QObjectPKS_iPPv
656D2D88 QtGui4.dll:656D2D88 _ZN15QAbstractButton7clickedEb
6544F2B9 QtGui4.dll:6544F2B9 _ZN15QAbstractButton5eventEP6QEvent
654505E9 QtGui4.dll:654505E9 _ZN15QAbstractButton13keyPressEventEP9QKeyEvent
6545081B QtGui4.dll:6545081B _ZN15QAbstractButton17mouseReleaseEventEP11QMouseEvent
65159F40 QtGui4.dll:65159F40 _ZN7QWidget5eventEP6QEvent
6510FA38 QtGui4.dll:6510FA38 _ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent
65118CB1 QtGui4.dll:65118CB1 _ZN12QApplication6notifyEP7QObjectP6QEvent
6A2B419C QtCore4.dll:6A2B419C _ZN16QCoreApplication14notifyInternalEP7QObjectP6QEvent
651135BB QtGui4.dll:651135BB _ZN19QApplicationPrivate14sendMouseEventEP7QWidgetP11QMouseEventS1_S1_PS1_R8QPointerIS0_Eb
651771AB QtGui4.dll:651771AB _ZN19QApplicationPrivate19translateTouchEventERK6tagMSG
6517A7F7 QtGui4.dll:6517A7F7 _ZN19QApplicationPrivate27initializeWidgetPaletteHashEv
77A2C4E7 USER32.dll:77A2C4E7 gapfnScSendMessage
77A2C5E7 USER32.dll:77A2C5E7 gapfnScSendMessage
77A2CC19 USER32.dll:77A2CC19 gapfnScSendMessage
77A2CC70 USER32.dll:77A2CC70 DispatchMessageW
6A2D9801 QtCore4.dll:6A2D9801 _ZN21QEventDispatcherWin3213processEventsE6QFlagsIN10QEventLoop17ProcessEventsFlagEE
65174B00 QtGui4.dll:65174B00 _ZN19QApplicationPrivate14enterModal_sysEP7QWidget
6A2B3072 QtCore4.dll:6A2B3072 _ZN10QEventLoop13processEventsE6QFlagsINS_17ProcessEventsFlagEE
6A2B3403 QtCore4.dll:6A2B3403 _ZN10QEventLoop4execE6QFlagsINS_17ProcessEventsFlagEE
6A2B71AB QtCore4.dll:6A2B71AB _ZN16QCoreApplication4execEv
004014ED SoulseekQt.exe:004014ED qMain main.cpp:67
int32 qMain(
int32 argc = 1,
__builtin_va_list * argv = &0x01ed07e9
)
004F7005 SoulseekQt.exe:004F7005 qrc_Resource.cpp:11696
004F6CC8 SoulseekQt.exe:004F6CC8 qrc_Resource.cpp:11696
0040124B SoulseekQt.exe:0040124B
004012B8 SoulseekQt.exe:004012B8
7797ED6C kernel32.dll:7797ED6C BaseThreadInitThunk
77CE37F5 ntdll.dll:77CE37F5 RtlInitializeExceptionChain
77CE37C8 ntdll.dll:77CE37C8 RtlInitializeExceptionChain

Thank you for submitting this crash report. I think I know what's going on here, but it should take me a little while to verify it. I'll post a fix as soon as I can.

I can see exactly where the crash occurs, but not the circumstances that are creating it. Generally this shouldn't happen unless the bit of code where the crash occurs is being invoked twice, for which I can't find a reason. Still, I can at least try to work around the problem. This version of the client tries very hard to ensure that said bit of code won't run twice under any circumstances: SoulseekQt-share-browse-crash-workaround.zip. I know there's no way for you to reliably reproduce the problem, although you are right in assuming that the crash happened as a result of a share browse window being closed. Please let me know if the problem persists. Hopefully whatever crash report would be generated in that case would give us further clues as to the cause.

Thanks, Nir