Crash on file selection! (Report inside)

Description: 
Hey Nir, finally it worked getting a decent crash report for you. This problem has been in any client since the beginning of the year, but I never got to catch it. I hope this BT will give you some insight into what could be the culprit... -- bt start -- #1 0x080aba34 in OnFileDoubleClicked () #2 0x081b011d in qt_metacall () #3 0xb72ae6cd in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4 #4 0xb72bd4d0 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #5 0xb7c72a2d in QTreeWidget::itemDoubleClicked(QTreeWidgetItem*, int) () from /usr/lib/libQtGui.so.4 #6 0xb7c72aad in ?? () from /usr/lib/libQtGui.so.4 #7 0xb7c7b0d2 in QTreeWidget::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libQtGui.so.4 #8 0xb72ae6cd in QMetaObject::metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib/libQtCore.so.4 #9 0xb72bd4d0 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #10 0xb7bf52d5 in QAbstractItemView::doubleClicked(QModelIndex const&) () from /usr/lib/libQtGui.so.4 #11 0xb7c42ab4 in QTreeView::mouseDoubleClickEvent(QMouseEvent*) () from /usr/lib/libQtGui.so.4 #12 0xb76b8e8d in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4 #13 0xb7abdbb5 in QFrame::event(QEvent*) () from /usr/lib/libQtGui.so.4 #14 0xb7b4fdc1 in QAbstractScrollArea::viewportEvent(QEvent*) () from /usr/lib/libQtGui.so.4 #15 0xb7bf207c in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/libQtGui.so.4 #16 0xb7c3cbd6 in QTreeView::viewportEvent(QEvent*) () from /usr/lib/libQtGui.so.4 #17 0xb7b52546 in ?? () from /usr/lib/libQtGui.so.4 #18 0xb72a84b6 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4 #19 0xb765e8d2 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #20 0xb766471b in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #21 0xb72a831e in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4 #22 0xb765f8c0 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/libQtGui.so.4 #23 0xb76e942f in ?? () from /usr/lib/libQtGui.so.4 #24 0xb76e83c7 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4 #25 0xb7713f7c in ?? () from /usr/lib/libQtGui.so.4 #26 0xb6dc7305 in g_main_context_dispatch () from /lib/libglib-2.0.so.0 #27 0xb6dcafe8 in ?? () from /lib/libglib-2.0.so.0 #28 0xb6dcb1c8 in g_main_context_iteration () from /lib/libglib-2.0.so.0 #29 0xb72d65d7 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #30 0xb7713b9a in ?? () from /usr/lib/libQtGui.so.4 #31 0xb72a733d in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #32 0xb72a7581 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #33 0xb72abcda in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4 #34 0xb765c784 in QApplication::exec() () from /usr/lib/libQtGui.so.4 #35 0x0805935b in main () -- bt end -- It happens regularly, though not predictable when. It seems to happen if you have selected a couple of a user's files (BROWSING dialog, NOT by search where it always works) and you download these. Now that you select ANOTHER couple of files later, the problem occurs and SlskQt will segfault with a SIGSEGV.
0
Your rating: None
0
No votes yet

Comments

Thanks monsieurX! I'll look into it ASAP.

Wait, wait... this "great" web UI totally messed up my neat report.

So here we go again with pastebin: (should have done that from the beginning my bad)

http://pastebin.com/hVaEiBGm

Ah, this one's flat out a mistake on my part. I accidentally erase information related to file entries in all share browses whenever a new folder is selected in any share browse. I'm really glad you brought this to my attention. Users have been complaining about crashes when browsing a share for a while now, and I suspect this particular bug is what's causing most if not all of them. I'll roll the fix into the next release, you can use this one in the meantime: SoulseekQt-5-19-2012-32bit.tgz.

Thanks, Nir

Thanks for the devel build! I will give it a thorough test and report you back anything that might go wonky in the next days...Glad this could be ironed out - brilliant investigation work.

"Users have been complaining about crashes when browsing a share for a while now"
Yes, I guess so, but it's commonly a minority to give you bug reports or backtraces which can really help you to nail down the bugger instead of just whining around. You're doing your VERY best in support that you ever did (yes I have to say it once and for all, your support had been rather mediocre in those 156 client times), and that's why I too strive to do my very best in helping you iron out these oddities.

I appreciate the kind word and the great deal of help you've given me with developing SoulseekQt. Truly the client would be much worse off right now if it wasn't for your contribution.

I do feel that I have to say something about the assertion that my support of the original client over the years has been, as you put it, mediocre. I know a fair number of Soulseek users have a great deal of pent up rage over the way Soulseek has been handled over the years. One thing one has to understand is that the original Soulseek client has been developed over a period of many, many years. Nearly a decade. A lot has happened over these years that has gotten in the way of me being able to properly support the client. Chronologically, I started writing the client when I had very little actual experience in developing full-lifecycle applications. I did a lot of things and made a lot of design decisions that I would not make today. As a result, the client became very hard to maintain over the years, especially in the area of file transfer. That's just a small part of the story however. The Soulseek forum, our main channel of support for most of Soulseek's existence, had become a very hostile environment very early on. It started with outright lies about us and how much money we make off Soulseek. It was mixed in with a lot of very vicious criticism and harsh, unwarranted personal attacks from a very specific set of users over how we chose to do certain things with the Soulseek client, how certain very important features were missing. A lot of stuff that as far as we could tell was very subjective. See, as I've stated in the past, we're not just tasked with developing a client. The server is pretty big piece of engineering that had to be constantly developed and maintained until just a few years ago. The main piece of it, and where a lot of my development effort went into is the distributed network that's in charge of distributing search requests. As a result of this hostility, the forum became a place where we started becoming very reluctant to go to. To this day, I very rarely get a thank you or any response whatsoever when I help a user on the forum. Bear in mind that Soulseek if a free product. The fact that many users kept donating over the years despite all of these complaints, coupled with the actuality of the many nice things people have said to us over the years showed us that Soulseek was still a good and useful product to most people. Despite these complaints. And through all of this I've actually managed to do a lot of work developing the original client. Once I felt I was happy with the distributed network, I resumed work on the original client in full force. I added a lot of new features, private rooms, private message filtering, and a whole lot more stuff. I've always tried my best to address technical issues that I've become aware of to the last of my energies. One last thing you need to consider is the element of burnout. I'm the only person doing any technical work on Soulseek. I can't do this year in, year out on a day by day basis. Sometimes I have to disconnect. For long periods of time. If Soulseek made us enough money that we could hire people to take care of the system in our absence we would. It doesn't. I'm very committed to developing SoulseekQt right now, but this won't be the case indefinitely. There will come a time when I need to disconnect again, and it'll be like I'm a ghost again. Those are the breaks with a system like Soulseek. In short, I'm just one person developing a system that has been used by millions of people over the years. I can't be there for every complaint and every request, but I've managed to do pretty damn well all things considered.

Thanks, Nir

Whee, that has become a long one. :)

So let me summarize the gist of it:

"I know a fair number of Soulseek users have a great deal of pent up rage over the way Soulseek has been handled over the years.

Well, that's one way to put it. MY only rage was about this ever-missing feature of Unicode support. Back in those days, it reminded me of what I like to call "MySQL thinking":
- "Since I'm a person that can live fine without Unicode, please tell me why should I waste my time in implementing stuff I would never need myself?"

That same "kiss my ass attitude" which we had in the MySQL user forums with "our" umlaut and special characters (let alone those of the Polish!!). They were, albeit on paper, a Swedish company (with their a-circle in the language, to begin with), yet most of the main developers were NOT Swedish (but British or American), and they had the typical Anglo-Saxon thinking: "We don't need these characters with our language, so if you need to have them supported, you're practically on your own." And they did leave us alone with our problems, even forcing some desperate folks to write PHP scripts (!!) that iron out MySQL's shortcomings. Could it be even more pathetic??

That's also how I had felt about Slsk Unicode support. It felt so AWFULLY awkward wanting to search for songs in Hebrew (on Windows 2000 back then) and having to REBOOT the machine each time you needed one of these languages! (since non-Unicode Slsk "Classic" depended on system locale and only system locale. No buts.)

"...harsh, unwarranted personal attacks from a very specific set of users over how we chose to do certain things with the Soulseek client, how certain very important features were missing."

I added a lot of new features, private rooms, private message filtering, and a whole lot more stuff.

Yes, but that's how opinions can differ! To me these "lot of new features" were rather pointless, See, Slsk is file-sharing, not the poor man's IRC replacement! I wanted to have Slsk finally Unicode-capable dammit!! (And get rid of the need of these stupid reboots.) And did anyone notice all our pleads? NOBODY. EVER. Because you were hardly ever there.

"I'm very committed to developing SoulseekQt right now, but this won't be the case indefinitely."

I very well guessed so, that's why I'm sacrificing even some time I actually don't have--- simply to seize your said "commission" you're having. Because now is the chance to iron out major bugs before you disappear into the void again, if not for a ridiculously nerve-stretching long time.

"There will come a time when I need to disconnect again, and it'll be like I'm a ghost again."

...just as you were in the old Slsk forums. :)
Thanks for this essay of statements; hopefully they will also be able to cover FAQs from other people's questionnaires.

The Unicode issue wasn't me adopting a "kiss my ass" attitude. By the time the issue came up it seemed too late to re-engineer the Soulseek protocol and force everyone to update, and as I've admitted before, it was my ignorance of UTF8 as a viable solution that kept me from implementing Unicode in Soulseek. It had nothing to do with me not thinking it wasn't important enough. But I see you're not interested in anything I have to say. You've made up your mind a long time ago and no new information can enter. This sort of thing is exactly the reason I wanted to create a place away from the forum, so I can work in peace without having to worry about self-entitled users like yourself making a complete value judgement based on one thing they didn't like, and I'll be damned if I let you ruin it for me. Don't post here again.