unattended crash

Left soulseekQT open all day while at work and it had crashed when I got home. Visual Studio gave me the following details:

Unhandled exception at 0x6a257fea in SoulseekQt.exe: 0xC0000005: Access violation reading location 0x00000008.

Unfortunately, I was not able to break into the code, but visual studio told me the call stack location was:

QTCore4.dll!6a257fea()

Running on 32bit Win7

windows showed the problem signature as:

Problem signature:
Problem Event Name: APPCRASH
Application Name: SoulseekQt.exe
Application Version: 0.0.0.0
Application Timestamp: 4e44e86e
Fault Module Name: QtCore4.dll
Fault Module Version: 4.7.3.0
Fault Module Timestamp: 4da6c16f
Exception Code: c0000005
Exception Offset: 00097fea
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 2057
Additional Information 1: 7d28
Additional Information 2: 7d28d6be379bcbab91ff646fc9c29d12
Additional Information 3: 0dca
Additional Information 4: 0dcac1c80069252963d82753fa6bce7a

You'll need Dr. MingW installed as your just-in-time debugger to make sense of the crash, there are instructions for installing and removing it here.

Hi. I think i know the cause of the crash - I left a search running. I did the same thing a little later and got the same crash results (just a different memory address). I did try and get Dr. MingW running before. I'll try again a bit later to get you a detailed crash report.

A readable crash report would be great if you can manage to get one. I've been slaving the last week over an unbelievably elusive bug relating to Qt's TCP socket class that may or may not have something to do with your crash as well.

will try and get one. Having a bit of trouble with the debugger. It's saying its registered as the default debugger, but didn't appear in the debugger list when the app crashed - still tried to use visual studio. I'll keep trying, but its about 8 hours between crashes, so it may take a few days. Does drmingw give you the detailed report with the later versions of the client or do you need to use that specific version?

SoulseekQt.exe caused an Access Violation at location 6a2588f8 in module QtCore4.dll Reading from location 000076b5.

Registers:
eax=00007665 ebx=00000000 ecx=00000000 edx=000000dd esi=094a8369 edi=000000dd
eip=6a2588f8 esp=0022cfa0 ebp=0022cff8 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:
6A2588F8 QtCore4.dll:6A2588F8 _ZN9QIODevice5writeEPKcx
0043EBEC SoulseekQt.exe:0043EBEC PeerMessenger::SendMessage PeerMessenger.cpp:830
bool PeerMessenger::SendMessage(
struct PeerMessenger * this = &(indirect),
struct QTcpSocket * ip_socket = &(indirect),
struct MemStream * i_message = ,
struct OutputStream OutputStream = {
__vtbl_ptr_type * _vptr.OutputStream = 0x005b2438
},
struct rcptr mp_buffer = {
struct Buffer * mp_object = 0x0b62b778,
int32 * mp_referenceCount = 0x09651320
}
}
)
0044ACA9 SoulseekQt.exe:0044ACA9 PeerMessenger::SendMessage stl_tree.h:614
void PeerMessenger::SendMessage(
struct PeerMessenger * this = &(indirect),
string * i_user = },
__builtin_va_list _M_p = 0x10a7ba7c
}
},
struct MemStream * i_message = ,
struct OutputStream OutputStream = {
__vtbl_ptr_type * _vptr.OutputStream = 0x005b2438
},
struct rcptr mp_buffer = {
struct Buffer * mp_object = 0x0b62b778,
int32 * mp_referenceCount = 0x09651320
}
}
)
00467797 SoulseekQt.exe:00467797 SharedFoldersManager::ProcessSearch SharedFoldersManager.cpp:572
void SharedFoldersManager::ProcessSearch(
struct SharedFoldersManager * this = &(indirect),
string * i_user = },
__builtin_va_list _M_p = 0x10a7ba7c
}
},
quint32 i_req = 9054,
string * i_searchText = },
__builtin_va_list _M_p = 0x09daeaa4
}
}
)
004686CA SoulseekQt.exe:004686CA SharedFoldersManager::OnDNetSearchRequest SharedFoldersManager.cpp:435
void SharedFoldersManager::OnDNetSearchRequest(
struct SharedFoldersManager * this = &(indirect),
string * i_user = },
__builtin_va_list _M_p = 0x10a7ba7c
}
},
quint32 i_req = 9054,
string * i_searchText = },
__builtin_va_list _M_p = 0x09daeaa4
}
}
)
004D33F2 SoulseekQt.exe:004D33F2 SharedFoldersManager::qt_metacall moc_SharedFoldersManager.cpp:172
int32 SharedFoldersManager::qt_metacall(
struct SharedFoldersManager * this = },
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 = 0x01f0aa68,
struct _Rb_tree_node_base * _M_left = 0x01f0aa08,
struct _Rb_tree_node_base * _M_right = 0x01f1f258
},
size_t _M_node_count = 3
}
}
}
},
struct QMetaObject staticMetaObject = {
struct ._18 d = {
struct QMetaObject * superdata = 0x005b1928,
int8 * stringdata = 0x01cf6258,
uint * data = 0x005b1960,
void * extradata = 0x00000001
}
},
struct QThread m_MP3ScanThread = (indirect),
struct MP3Scanner m_MP3Scanner = (indirect),
int32 m_sharedFilesAdded = 1895,
int32 m_sharedFilesRemoved = 73
},
Call _c = InvokeMetaMethod,
int32 _id = 7,
void * * _a = &0x00000000
)
6A2C73F9 QtCore4.dll:6A2C73F9 _ZN11QMetaObject8activateEP7QObjectPKS_iPPv
004D4D7C SoulseekQt.exe:004D4D7C DNetManager::DNetSearchRequest moc_DNetManager.cpp:121
void DNetManager::DNetSearchRequest(
struct DNetManager * this = },
bool m_messageLengthRead = True,
int32 m_messageLength = 51,
struct MemStream m_readBuffer = {
struct InputStream InputStream = (indirect),
struct OutputStream OutputStream = (indirect),
struct rcptr mp_buffer = {
struct Buffer * mp_object = 0x01f00738,
int32 * mp_referenceCount = 0x01d267e0
}
}
},
string * _t1 = },
__builtin_va_list _M_p = 0x10a7ba7c
}
},
quint32 _t2 = 9054,
string * _t3 = },
__builtin_va_list _M_p = 0x09daeaa4
}
}
)
004B4CC9 SoulseekQt.exe:004B4CC9 DNetManager::HandleMessage DNetManager.cpp:227
void DNetManager::HandleMessage(
struct DNetManager * this = &(indirect),
struct QTcpSocket * ip_socket = &(indirect)
)
004B4E83 SoulseekQt.exe:004B4E83 DNetManager::OnSocketReadyToRead DNetManager.cpp:157
void DNetManager::OnSocketReadyToRead(
struct DNetManager * this = &(indirect)
)
004D4F10 SoulseekQt.exe:004D4F10 DNetManager::qt_metacall moc_DNetManager.cpp:105
int32 DNetManager::qt_metacall(
struct DNetManager * this = },
bool m_messageLengthRead = True,
int32 m_messageLength = 51,
struct MemStream m_readBuffer = {
struct InputStream InputStream = (indirect),
struct OutputStream OutputStream = (indirect),
struct rcptr mp_buffer = {
struct Buffer * mp_object = 0x01f00738,
int32 * mp_referenceCount = 0x01d267e0
}
}
},
Call _c = InvokeMetaMethod,
int32 _id = 12,
void * * _a = &0x00000000
)
6A2C73F9 QtCore4.dll:6A2C73F9 _ZN11QMetaObject8activateEP7QObjectPKS_iPPv
6A3048BD QtCore4.dll:6A3048BD _ZN9QIODevice9readyReadEv
6FF7CD67 QtNetwork4.dll:6FF7CD67 _ZN15QAbstractSocket9writeDataEPKcx
6FF6DCF7 QtNetwork4.dll:6FF6DCF7 _ZN20QNetworkProxyFactory19systemProxyForQueryERK18QNetworkProxyQuery
6510FA38 QtGui4.dll:6510FA38 _ZN19QApplicationPrivate13notify_helperEP7QObjectP6QEvent
651182EB QtGui4.dll:651182EB _ZN12QApplication6notifyEP7QObjectP6QEvent
6A2B419C QtCore4.dll:6A2B419C _ZN16QCoreApplication14notifyInternalEP7QObjectP6QEvent
6A2D6C86 QtCore4.dll:6A2D6C86 _ZN21QEventDispatcherWin3221registerEventNotifierEP17QWinEventNotifier
773CC4E7 USER32.dll:773CC4E7 gapfnScSendMessage
773CC5E7 USER32.dll:773CC5E7 gapfnScSendMessage
773CCC19 USER32.dll:773CCC19 gapfnScSendMessage
773CCC70 USER32.dll:773CCC70 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
00401478 SoulseekQt.exe:00401478 qMain main.cpp:18
int32 qMain(
int32 argc = 1,
__builtin_va_list * argv = &0x01c608f1
)
004D6015 SoulseekQt.exe:004D6015 qrc_Resource.cpp:11586
004D5CD8 SoulseekQt.exe:004D5CD8 qrc_Resource.cpp:11586
0040124B SoulseekQt.exe:0040124B
004012B8 SoulseekQt.exe:004012B8
76CAED6C kernel32.dll:76CAED6C BaseThreadInitThunk
77BD37F5 ntdll.dll:77BD37F5 RtlInitializeExceptionChain
77BD37C8 ntdll.dll:77BD37C8 RtlInitializeExceptionChain

Thank you for going to the trouble of getting this crash report. It looks like a peer messaging socket that's been destroyed is being utilized here to send search results. I've never had this crash myself, so I set up a number of traps in the code to see if I can capture the circumstances that might lead to such a crash. It's been running since last night and so far no luck. I'm not sure if this is the crash you're getting on a regular basis, but I'll post a version of the client later tonight that at least makes said circumstances impossible to arrive at and hope for the best. Thanks, Nir

Thanks Nir. This is happening regularly, but isn't causing me major problems (eg about once per day). I checked a second and third crash report and both had pretty much the same details in as above (just different address references), so its definitely the same thing. Good news is that Dr MingW seems to work well, so any future crashes i get can get reported easily.

Thanks again.

SQuizz.

I'm glad to hear it's the same bug causing the crash at least. Here is the build I promised. I've also posted it as a new nightly build as it contains many additions to the search distribution network module, and what fixes I've applied that might affect the crashes you're reporting probably can't hurt either. Hopefully said additions won't create any new problems. Thanks! Nir

Thanks very much. I really appreciate the quick turn around time on these bugs. It makes the new client well worth sticking with :)

Thanks again.

Squizz