Bug 329793 - Krash!
Summary: Krash!
Status: RESOLVED UPSTREAM
Alias: None
Product: konversation
Classification: Unclassified
Component: general (show other bugs)
Version: 1.4
Platform: Ubuntu Packages Linux
: NOR crash (vote)
Target Milestone: ---
Assignee: Konversation Developers
URL:
Keywords: drkonqi
Depends on:
Blocks:
 
Reported: 2014-01-10 05:39 UTC by andy_90254
Modified: 2014-01-16 01:14 UTC (History)
3 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description andy_90254 2014-01-10 05:39:08 UTC
Application: konversation (1.4)
KDE Platform Version: 4.12.0
Qt Version: 4.8.2
Operating System: Linux 3.2.0-58-generic-pae i686
Distribution: Ubuntu 12.04.3 LTS

-- Information about the crash:
- What I was doing when the application crashed:
Typing.  Just typing.  Nothing special.  Just typing.  I hope this backtrace is sufficient to figure it out because this is starting to happen on a regular basis.

-- Backtrace:
Application: Konversation (konversation), signal: Segmentation fault
Using host libthread_db library "/lib/i386-linux-gnu/libthread_db.so.1".
[Current thread is 1 (Thread 0xb76f8780 (LWP 8393))]

Thread 4 (Thread 0xb5a24b40 (LWP 8394)):
#0  0x006c8c64 in __pthread_mutex_unlock_usercnt () from /lib/i386-linux-gnu/libpthread.so.0
#1  0x02d62714 in pthread_mutex_unlock () from /lib/i386-linux-gnu/libc.so.6
#2  0x0127e430 in g_mutex_unlock () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3  0x0123eb36 in g_main_context_check () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4  0x0123f002 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#5  0x0123f1c1 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#6  0x028e9de7 in QEventDispatcherGlib::processEvents (this=0xb5100468, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#7  0x028b56ad in QEventLoop::processEvents (this=0xb5a24200, flags=...) at kernel/qeventloop.cpp:149
#8  0x028b5949 in QEventLoop::exec (this=0xb5a24200, flags=...) at kernel/qeventloop.cpp:204
#9  0x0279ea1c in QThread::exec (this=0x926ca48) at thread/qthread.cpp:501
#10 0x02892cfd in QInotifyFileSystemWatcherEngine::run (this=0x926ca48) at io/qfilesystemwatcher_inotify.cpp:248
#11 0x027a1eb0 in QThreadPrivate::start (arg=0x926ca48) at thread/qthread_unix.cpp:307
#12 0x006c5d4c in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#13 0x02d54bae in clone () from /lib/i386-linux-gnu/libc.so.6

Thread 3 (Thread 0xb45ffb40 (LWP 8396)):
#0  0x00419416 in __kernel_vsyscall ()
#1  0x02d4425b in read () from /lib/i386-linux-gnu/libc.so.6
#2  0x0127d6ce in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3  0x0123eb92 in g_main_context_check () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4  0x0123f002 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#5  0x0123f52b in g_main_loop_run () from /lib/i386-linux-gnu/libglib-2.0.so.0
#6  0x014a44aa in ?? () from /usr/lib/i386-linux-gnu/libgio-2.0.so.0
#7  0x01262673 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#8  0x006c5d4c in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#9  0x02d54bae in clone () from /lib/i386-linux-gnu/libc.so.6

Thread 2 (Thread 0xb4f15b40 (LWP 8410)):
#0  0x02d626e0 in pthread_mutex_unlock () from /lib/i386-linux-gnu/libc.so.6
#1  0x0127e430 in g_mutex_unlock () from /lib/i386-linux-gnu/libglib-2.0.so.0
#2  0x0123ec38 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#3  0x0123f0e5 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#4  0x0123f1c1 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#5  0x028e9de7 in QEventDispatcherGlib::processEvents (this=0xb46088b8, flags=...) at kernel/qeventdispatcher_glib.cpp:426
#6  0x028b56ad in QEventLoop::processEvents (this=0xb4f15200, flags=...) at kernel/qeventloop.cpp:149
#7  0x028b5949 in QEventLoop::exec (this=0xb4f15200, flags=...) at kernel/qeventloop.cpp:204
#8  0x0279ea1c in QThread::exec (this=0x9f2b718) at thread/qthread.cpp:501
#9  0x02892cfd in QInotifyFileSystemWatcherEngine::run (this=0x9f2b718) at io/qfilesystemwatcher_inotify.cpp:248
#10 0x027a1eb0 in QThreadPrivate::start (arg=0x9f2b718) at thread/qthread_unix.cpp:307
#11 0x006c5d4c in start_thread () from /lib/i386-linux-gnu/libpthread.so.0
#12 0x02d54bae in clone () from /lib/i386-linux-gnu/libc.so.6

Thread 1 (Thread 0xb76f8780 (LWP 8393)):
[KCrash Handler]
#7  ref (this=0x482c90a0) at ../../include/QtCore/../../src/corelib/arch/qatomic_i386.h:120
#8  QList (l=..., this=0xa2c4120) at ../../include/QtCore/../../src/corelib/tools/qlist.h:122
#9  QTextOptionPrivate (this=0xa2c4120) at text/qtextoption.cpp:48
#10 QTextOption::QTextOption (this=0xbfff51d0, o=...) at text/qtextoption.cpp:112
#11 0x06fa662f in QTextLayout::textOption (this=0x9117908) at text/qtextlayout.cpp:436
#12 0x06ff61b3 in QTextDocumentLayoutPrivate::layoutFlow (this=0x9903a40, it=..., layoutStruct=0xbfff53d0, layoutFrom=0, layoutTo=0, width=...) at text/qtextdocumentlayout.cpp:2406
#13 0x06ff2fb3 in QTextDocumentLayoutPrivate::layoutFrame (this=0x9903a40, f=0x9903da8, layoutFrom=0, layoutTo=0, frameWidth=..., frameHeight=..., parentY=...) at text/qtextdocumentlayout.cpp:2143
#14 0x06ff354d in QTextDocumentLayoutPrivate::layoutFrame (this=0x9903a40, f=0x9903da8, layoutFrom=1210880160, layoutTo=1210880160, parentY=...) at text/qtextdocumentlayout.cpp:2049
#15 0x06ff37f0 in QTextDocumentLayout::doLayout (this=0x9903a30, from=0, oldLength=59, length=0) at text/qtextdocumentlayout.cpp:2939
#16 0x06ff47b4 in QTextDocumentLayout::documentChanged (this=0x9903a30, from=0, oldLength=59, length=0) at text/qtextdocumentlayout.cpp:2902
#17 0x06fd2433 in QTextDocumentPrivate::finishEdit (this=0x99020f0) at text/qtextdocument_p.cpp:1220
#18 0x06fd290b in QTextDocumentPrivate::ensureMaximumBlockCount (this=0x99020f0) at text/qtextdocument_p.cpp:1725
#19 0x06fd25b9 in QTextDocumentPrivate::finishEdit (this=0x99020f0) at text/qtextdocument_p.cpp:1227
#20 0x06ffcb58 in QTextCursor::endEditBlock (this=0xbfff582c) at text/qtextcursor.cpp:2509
#21 0x06f8c76a in QTextControlPrivate::append (this=0x9902064, text=..., format=Qt::AutoText) at text/qtextcontrol.cpp:2935
#22 0x06f8c852 in QTextControl::append (this=0x9902000, text=...) at text/qtextcontrol.cpp:2941
#23 0x0720017c in QTextEdit::append (this=0x98ff828, text=...) at widgets/qtextedit.cpp:2621
#24 0x08175ea6 in IRCView::doRawAppend (this=0x98ff828, newLine=..., rtl=false) at ../../src/viewer/ircview.cpp:856
#25 0x08176049 in IRCView::doAppend (this=0x98ff828, newLine=..., rtl=false, self=false) at ../../src/viewer/ircview.cpp:827
#26 0x0817e097 in IRCView::append (this=0x98ff828, nick=..., message=...) at ../../src/viewer/ircview.cpp:560
#27 0x081063ed in Channel::append (this=0x98f07b0, nickname=..., message=...) at ../../src/irc/channel.cpp:2655
#28 0x0813a1a9 in InputFilter::parsePrivMsg (this=0x95152d4, prefix=..., parameterList=...) at ../../src/irc/inputfilter.cpp:2286
#29 0x0813bfb0 in InputFilter::parseClientCommand (this=0x95152d4, prefix=..., command=..., parameterList=...) at ../../src/irc/inputfilter.cpp:487
#30 0x0814bb3c in InputFilter::parseLine (this=0x95152d4, line=...) at ../../src/irc/inputfilter.cpp:153
#31 0x080eaf6f in Server::processIncomingData (this=0x9515230) at ../../src/irc/server.cpp:1115
#32 0x080fb4ed in Server::qt_metacall (this=0x9515230, _c=QMetaObject::InvokeMetaMethod, _id=93, _a=0xbfff6220) at ./server.moc:430
#33 0x028be19d in metacall (argv=0xbfff6220, idx=97, cl=QMetaObject::InvokeMetaMethod, object=0x9515230) at kernel/qmetaobject.cpp:245
#34 QMetaObject::metacall (object=0x9515230, cl=QMetaObject::InvokeMetaMethod, idx=97, argv=0xbfff6220) at kernel/qmetaobject.cpp:240
#35 0x028cdebd in QMetaObject::activate (sender=0x9515268, m=0x2a154d8, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3566
#36 0x02920b25 in QTimer::timeout (this=0x9515268) at .moc/release-shared/moc_qtimer.cpp:148
#37 0x028d6a66 in QTimer::timerEvent (this=0x9515268, e=0xbfff672c) at kernel/qtimer.cpp:280
#38 0x028d1fc4 in QObject::event (this=0x9515268, e=0xbfff672c) at kernel/qobject.cpp:1157
#39 0x06d09df4 in notify_helper (e=0xbfff672c, receiver=0x9515268, this=0x8fdfae0) at kernel/qapplication.cpp:4556
#40 QApplicationPrivate::notify_helper (this=0x8fdfae0, receiver=0x9515268, e=0xbfff672c) at kernel/qapplication.cpp:4528
#41 0x06d0f15d in QApplication::notify (this=0xbfff672c, receiver=0x9515268, e=0xbfff672c) at kernel/qapplication.cpp:4285
#42 0x065f3161 in KApplication::notify (this=0xbfff6a3c, receiver=0x9515268, event=0xbfff672c) at ../../kdeui/kernel/kapplication.cpp:311
#43 0x028b6e0e in QCoreApplication::notifyInternal (this=0xbfff6a3c, receiver=0x9515268, event=0xbfff672c) at kernel/qcoreapplication.cpp:915
#44 0x028ebe90 in sendEvent (event=0xbfff672c, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:231
#45 QTimerInfoList::activateTimers (this=0x8fe5d34) at kernel/qeventdispatcher_unix.cpp:611
#46 0x028e95f8 in timerSourceDispatch (source=0x8fe5d00) at kernel/qeventdispatcher_glib.cpp:186
#47 timerSourceDispatch (source=0x8fe5d00) at kernel/qeventdispatcher_glib.cpp:180
#48 0x0123ed46 in g_main_context_dispatch () from /lib/i386-linux-gnu/libglib-2.0.so.0
#49 0x0123f0e5 in ?? () from /lib/i386-linux-gnu/libglib-2.0.so.0
#50 0x0123f1c1 in g_main_context_iteration () from /lib/i386-linux-gnu/libglib-2.0.so.0
#51 0x028e9d87 in QEventDispatcherGlib::processEvents (this=0x8fe3960, flags=...) at kernel/qeventdispatcher_glib.cpp:424
#52 0x06dc2a1a in QGuiEventDispatcherGlib::processEvents (this=0x8fe3960, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#53 0x028b56ad in QEventLoop::processEvents (this=0xbfff6994, flags=...) at kernel/qeventloop.cpp:149
#54 0x028b5949 in QEventLoop::exec (this=0xbfff6994, flags=...) at kernel/qeventloop.cpp:204
#55 0x028bb34a in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1187
#56 0x06d079c4 in QApplication::exec () at kernel/qapplication.cpp:3817
#57 0x0807f8cb in main (argc=0, argv=0x0) at ../../src/main.cpp:120

Reported using DrKonqi
Comment 1 Christoph Feck 2014-01-14 01:53:06 UTC
The crash happens deep in the Qt library. I suggest to update Qt to version 4.8.5. While you are using newest KDE 4.12, you are still using a quite old Qt 4.8.2.
Comment 2 andy_90254 2014-01-14 09:54:36 UTC
Please provide details as to how to update Qt in ubuntu 12.04.3  I run apt-get update daily and install all updates.  I don't know why it wouldn't have come down if it was there...

Thank you
Comment 3 Christoph Feck 2014-01-14 11:19:05 UTC
Please ask in Ubuntu forums how to update to Qt 4.8.5.
Comment 4 andy_90254 2014-01-14 19:07:08 UTC
I'm told to compile the source.  Quite strange to me that I should need to go through these gyrations. Working on compiling it now.
Comment 5 andy_90254 2014-01-15 00:55:17 UTC
Basic XLib functionality test failed!
 You might need to modify the include and library search paths by editing
 QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /usr/local/src/qt-everywhere-opensource-src-4.8.5/mkspecs/linux-g++.

This is where I get off the boat.   For a user to have to be a developer to use a simple IRC client is ridiculous.  Bug is NOT resolved.
Comment 6 Eike Hein 2014-01-15 01:03:49 UTC
Here are the facts we know:

- The crash information in your bug report tells us the crash occurs inside the Qt library used by Konversation.

- Your version of the Qt library is almost two years old.

- There are many Konversation users, but you're the only one reporting this crash.

This leads us to conclude that the bug is unlikely to be in Konversation, and unlikely to be something Konversation can affect.

It also seems likely the bug would go away for you if you used newer software, since otherwise we'd be seeing more crash reports like this.

For any Konversation developer to be able to do anything about this bug, we'd have to be able to reproduce it, but we can't reproduce it with the available information, nor do we have such old Qt versions ourselves to test with.

Hence there's nothing we can do, and while I understand you're frustrated the app is crashing for you, there's no immediate use for this ticket to stay open.
Comment 7 andy_90254 2014-01-15 05:44:16 UTC
What I object to is the message you're sending.  The problem has not been resolved in any sense of the word.  "Deflected" would be closer to the truth.  "Won't fix" is also reasonable nomenclature for this situation.  "Resolved" implies fixed.  While that may be what you consider it as far as the application code proper is concerned, it is not an accurate reflection of the status of the problem from my point of view.

There are facts, and then there is customer service.  If you wouldn't say it to your grandmother, then you shouldn't say it to anyone else, especially not a customer.  And yes, anyone using the software is a customer aka user.

The fact that nobody else is willing to go out of their way to take the time and energy I put forth, along with the knowledge required to make it all the way to this point speaks not to the solidity of the software, but of the tenaciousness of the user.  I spent over 8 hours today alone chasing this down trying to get it resolved.  The vast majority of users - especially those of a non-technical background - wouldn't put up with, nor spend their time on this kind of nonsense.  First the application would get dumped for something else, and failing satisfaction with that - then abandonment for a different OS entirely where the support system doesn't force the user to be a tech guru.

I've been using Linux for years and I've been as big an evangelist as anyone.  But quite frankly I'm embarrassed to recommend it to anyone without a strong technical background because of exactly this kind of issue and associated attitude.

I do appreciate that the problem is not strictly within the konversation code proper, but instead within a component used by konversation, but that doesn't mean there's nothing you can do.  To say "nor do we have such old Qt versions ourselves to test with" is patently false, because I didn't go out of my way to downgrade to this version.  This is what came with the system and is readily available to anyone that wants it as I installed it fresh not one month ago - the one labeled "LTS" - Long Term Support as you well know.  Do I expect you to go out of your way to test with an older version when something newer and more exciting is available?  No, not really and I can appreciate that there is a newer library component which may or may not fix the issue.

While upgrading to newer software (where "software" could mean a wide variety of things from just the library to the entire OS) might be the proper solution from your point of view - and I'm not necessarily objecting to that as the solution (upgrading the library, not the OS), what I do object to is the general "it's not my problem you're on your own" attitude.  Which leads me back to - is that what you'd tell your grandmother?

The proper way to have handled this would have been to take ownership of the problem - whether it's truly your area of responsibility or not - and guide me as far as you're able.  That means this response "The crash happens deep in the Qt library. I suggest to update Qt to version 4.8.5. While you are using newest KDE 4.12, you are still using a quite old Qt 4.8.2." was a very good start and I applaud Cristoph for it, but could have gone one small step further with "Do you need help with how to do that?" and then a bit of handholding through the process; even if you didn't know how and it meant figuring it out yourself.  Instead that was the end of it as far as your team were concerned.  As the process failed (locating a pre-built library as well as compiling one), I should have then been helped with reporting the issue to the proper place; personally "walked" to the next link in the chain so that I didn't feel abandoned.

Finding that place - and procedure -took me all day today, when with a bit of help from someone knowledgeable like yourselves, that time could have very well been reduced to minutes.  And that's the real issue here - the "we really don't care because it works for us so go figure it out for yourself" mentality.

No response is expected, just do better next time.  For granny's sake.  It's just the right way to treat people.  Do unto others as you would have them do unto you.

Thanks
Comment 8 Eike Hein 2014-01-15 06:13:34 UTC
> There are facts, and then there is customer service.

This website is not a customer service venue, it's a developer tool. The goal is to do well by our users, but to do so we have to operate with efficiency, and keeping the bug database in a condition useful to developers helps with that.

Yes, we could kiss your arse and hand you chocolates and all the other trappings of traditional customer relations, but the relation we prefer is to treat you as our equal in the participative endeavour that open source development is (the fruits of which you also got for free, by the way). As our equal we hope you would mind the same broader concerns we need to mind, such as spending our resources wisely. With that in mind I did not deflect anything, instead I offered reason. I'm sorry you felt not respected, but I hope you can see the respect that is in transparency of that kind.


> To say "nor do we have such old Qt versions ourselves to test with" is patently false, because I didn't go out of my way to downgrade to this version.

None of the Konversation developers uses Kubuntu/Ubuntu. Konversation nor KDE are affiliated with that distro. "LTS" is a promise made by your system vendor; you should inquire why they don't support you by supplying bugfixes that already exist.
Comment 9 Christoph Feck 2014-01-15 11:54:09 UTC
> "Resolved" implies fixed.

"Resolved" means, there is no further work to be done by KDE developers in this bug tracker.

This is either because the bug is fixed by KDE developers, or has to be fixed elsewhere. If you want your distribution to supply newer Qt versions, please report this to the bug tracker of your distribution.
Comment 10 Harald Sitter 2014-01-15 12:26:25 UTC
(In reply to comment #8)
> you should inquire why they don't support you by supplying bugfixes
> that already exist.

Where's the bugfix?
Comment 11 Eike Hein 2014-01-15 13:35:16 UTC
> Where's the bugfix?

I was referring to the dozens (if not hundreds) of bug fixes listed in the Qt 4.8.3 - 4.8.5 maintenance release changelogs.
Comment 12 Harald Sitter 2014-01-15 14:01:27 UTC
The reason in that case is: Last someone (not me) checked, KDE did not claim to support Qt versions released after the release of a given KDE SC version (in fact I seem to recall an incident where mixing  a newer Qt maintenance release with an older plasma-desktop release actually went south). Or more generally put, because changing the entire version of a toolkit library has too great potential to go wrong only selective fix backporting is done. So, since Kubuntu 12.04 contains KDE SC 4.8 it uses Qt 4.8.1.

On that note, the report is definitely not from an actually supported Kubuntu 12.04 because it indicates Qt 4.8.2... handling this in the new downstream report though.
Comment 13 Eike Hein 2014-01-15 14:03:31 UTC
Thanks Harald.
Comment 14 andy_90254 2014-01-15 23:44:29 UTC
(In reply to comment #8)
> > There are facts, and then there is customer service.
> 
> This website is not a customer service venue, it's a developer tool. The

Really.  So then you're NOT interested in bug reports from users.  Good to know.

> goal is to do well by our users, but to do so we have to operate with
> efficiency, and keeping the bug database in a condition useful to developers
> helps with that.

And how are my previous suggestions at odds with "keeping the bug database in a condition useful to developers"?  While "resolved" may satisfy your needs, there's no reason an additional flag couldn't be added.  Something like "Dependency Broken" perhaps.  I'm sure you can think of something appropriate that would satisfy everyone's needs.

> Yes, we could kiss your arse and hand you chocolates and all the other
> trappings of traditional customer relations, but the relation we prefer is
> to treat you as our equal in the participative endeavour that open source

I don't need kisses or candy, but it's a symbiotic relationship.  I'm not a Konversation developer, I'm a Konversation user.   Without users there is little reason to have the product.  That means we have an equal interest, it does not necessarily mean we have equal skills or knowledge.  The developers are intimate with the product and it's components, the users are not - nor should that be a requirement of usage.  You are strongly implying I should have the same skills & knowledge as a developer of your product, if I want to use your product.  If that's true, then this isn't the right product for me as I want to use the product, not troubleshoot it.


> [...] Kubuntu/Ubuntu. Konversation nor
> KDE are affiliated with that distro. 

Well that I find to be a fascinating statement, which puts an interesting perspective on the situation.  It means K/ubuntu bares responsibility for making KDE and Konversation work on Ubuntu, which I suppose makes sense.  But it does require the user to be knowledgeable about the situation.  The average user doesn't care who is responsible, s/he simply wants to have a working system.  If the system doesn't work, the user generally goes elsewhere if at all possible.  Users tend to gravitate towards the path of least pain.

"LTS" is a promise made by your system
> vendor; you should inquire why they don't support you by supplying bugfixes
> that already exist.

And you are absolutely right that bugfixes should be supplied by the vendor.  Unfortunately the problem is one of complexity.  Once again, you are requiring the user to be intimately familiar with a highly complex system that is comprised of an overwhelming number of similarly complex pieces.  The user cannot be expected to understand the details of the relationship between subsystems, and so it falls to the developer to notify and interact with the system vendor, else it is likely that the problem will not get fixed.

Here's what will typically happen instead 
Newbie: "So I'm looking for an IRC client for Kubuntu.  Any recommendations?"  
Voice of Experience: "Yes.  Whatever you do, avoid Konversation because it keeps crashing and the developer doesn't care."  

I would hope that's not the result you want to see, and I don't think you understand that is in fact the result that you'll start getting if it happens too often.  When someone takes the time and trouble to report a bug - and I can promise you that it is a HUGE HASSLE to report bugs - it should be handled with all the importance of your product's reputation in the marketplace - free or not.   

Now if you don't care, I certainly can't force you to care.  If you have a different opinion, you are entitled to it just as I'm entitled to mine.  I've taken the time to share my thoughts with you in the hope to convince you - and others watching - that I think there's a better and more proper way to do things.  As you well know, I can't force you to do anything you don't want to do.

I moved from Quassel to Konversation recently because I didn't like the way that product handled certain features.  I put up with it because I didn't know there was another choice.  I was able to make the move because someone on an IRC channel made an offhand comment about Konversation while talking to someone else.  I didn't even know about Konversation's existence before that.  And that's how most products survive, thrive or die - by referral or the lack thereof.  I like Konversation, but if I can't use it then what's the point?

I made the effort to help keep your product alive on Kubuntu, by finding the proper place to report the problem, so this particular incident is moot.  However next time I just may not bother.  I can only hope my words are heard and taken to heart by any of the unknown number of people reading this.  Thanks for listening.
Comment 15 Christoph Feck 2014-01-16 00:03:13 UTC
> While "resolved" may satisfy your needs, there's no reason an additional flag couldn't be added.

There is an additional flag, the bug status is "resolved UPSTREAM", which means the bug is in a component not in control of KDE developers, this time the Qt library developed by the Qt project. Before going to point you to the bug tracker of the Qt project, I wanted to make sure the bug is still reproducible with Qt 4.8.5.

For more information, please read http://www.kde.org/code-of-conduct/
Comment 16 andy_90254 2014-01-16 00:06:15 UTC
(In reply to comment #9)
If you want your distribution to supply newer Qt versions,
> please report this to the bug tracker of your distribution.

This gets to the heart of the problem.  You should be the one to take responsibility for reporting it.  It took me an entire day and part of my night to figure out 1) that I needed to report it, 2) where and how to report it.  With an additional 5 minutes of your time you would have saved me 10 hours of mine.

Eike stated "As our equal we hope you would mind the same broader concerns we need to mind, such as spending our resources wisely."

Yet here we have an example where this is blatantly not true.  I'm not being treated as an equal, because you've decided that 5 minutes of your time is more valuable than 10 hours of my time.  You saved 5 minutes of your time and squandered 10 hours of mine.  How is that equal?  Or fair?
Comment 17 Eike Hein 2014-01-16 00:22:06 UTC
> So then you're NOT interested in bug reports from users.

On the contrary, I'm very interested in bug reports from users. But bug reports are contributions to a participative development process, not a customer service inquiry. You're informing us you've noticed what may be a bug; we're going to use this information as we see fit to make our software better.


> While "resolved" may satisfy your needs, there's no reason an additional flag couldn't be added. Something like "Dependency Broken" perhaps.

That's exactly what "RESOLVED UPSTREAM" means. As a developer I agree that Bugzilla could be improved for our needs, by the way, and by extension the needs of our users, but this ticket isn't the place to discuss Bugzilla improvements.


> You are strongly implying I should have the same skills & knowledge as a developer of your product, if I want to use your product. 

No, I think you misread that. I don't think you should need to have the same skills and knowledge as I do (in fact Konversation stands to benefit more if you bring different skills and knowledge to the table). I do expect you to be aware of the mode in which Konversation is developed (by volunteers, non-commercially, in the open) and have more than your own needs on your agenda, e.g. the need for us to triage reports and decide where to spend finite resources to help the most users. If you can't do that, I recommend switching to a product that offers a different kind of relation with you indeed.

I've spent 8 years and hundreds of hours on improvements to Konversation, most of them due to suggestions or inquiries by users. Some of my fellow developers have been around even longer. I have a very clean conscience about my contributions to the bottom line here.


> The average user doesn't care who is responsible, s/he simply wants to have a working system. 

That might accurately reflect the status-quo, but isn't a desirable state of things, partly because it's not sustainable. We don't have the resources to hide the complexity of the development process from users or succeed without your help. If we did, we'd also fail to recruit new developers to replace those who move on. We also feel that doing so does users a disservice in the long run, since you don't have the full picture to make useful decisions.


> The user cannot be expected to understand the details of the relationship between subsystems, and so it falls to the developer to notify and interact with the system vendor, else it is likely that the problem will not get fixed.

This is true, and you'll be relieved to hear that this communication happens all the time. The Konversation team (as well as many other people in KDE) maintain strong relations with many distros, and many bugfixes that distros end up pushing to users also in lower-level components are the result of us asking them to ship them. We talk literally every day, and improving this communication (e.g. by linking bug trackers to maintain upstream/downstream references for the same problem) is an active topic of conversation.

However, in this case it's not reasonable from a resource POV to do this until the bug has been confirmed to exist with a more recent version of Qt. The vast majority of our users use a newer Qt and we're not seeing the same crash report from them. Nothing in this report allows me to reproduce the crash with the software I have. I could spend hours setting up a system with Qt 4.8.2 and try to reproduce it there only to find out that it's been fixed in Qt 4.8.3, or I can't reproduce it at all and we're none the wiser.

These are the kinds of decisions I need to make all the time when deciding where to spend a finite amount of time to address the needs and concerns of many users. I'm not saying you should have been born with an awareness of that, I'm just trying to explain the background to the reaction you felt was offensive to you, and hope you can understand it better.


> "Whatever you do, avoid Konversation because it keeps crashing and the developer doesn't care."

I know this to be false; I care greatly.


> I would hope that's not the result you want to see

You might also be interested to learn that guilting people and blackmailing them with threats tends to have the opposite effect of what you think it has, especially with volunteer-driven development. Instead of being spurned by their honor to help you, people instead become depressed and burn out. In fact, protecting fellow developers from people who maintain their human relationships in this fashion is a particular concern of mine.
Comment 18 Eike Hein 2014-01-16 00:56:10 UTC
> Yet here we have an example where this is blatantly not true. I'm not being treated as an equal, because you've decided that 5 minutes of your time is more valuable than 10 hours of my time. You saved 5 minutes of your time and squandered 10 hours of mine. How is that equal? Or fair?

This is simply not an accurate reflection of how it went down -- Christoph did refer you to the next proper venue to inquire about the availability of a newer version of Qt for your system to test with: Ubuntu forums. The people there are more effective at helping with Ubuntu-specific problems than we are, i.e. you're likely overestimating our knowledge there. For example, I have honestly no idea if there is a newer Qt available for your Ubuntu version anywhere. I'd have to ask someone else or ask a search engine, too.

Christoph in particular triages tons and tons and tons of user reports almost every day, and it's not reasonable to expect him to write long step-by-step tutorials in every response that take into account all the variables you might encounter and that he would need to research himself. His time is better spent doing exactly what he did here, and exactly what you request: He used the knowledge and time he does have available to interpret and classify your problem, and tell you where to go with it. There's no reason to assume he wasn't acting in good faith and to the best of what his circumstances would allow.
Comment 19 Eike Hein 2014-01-16 01:14:01 UTC
I'm sorry for the mail spam, everyone, but an attempt to summarize this before I close out the day, in the hopes we can all move on: Your point that developers should have empathy for their users is well taken. I do understand the frustration you experienced, and I regret that this became somewhat adversarial. I'm also genuinely grateful that you did take the time and effort to report a bug at all, as said earlier I consider that a contribution to Konversation, and all contributions deserve respect.

Your contribution isn't moot, either. The problem on your end isn't resolved immediately, but you know now how it fits into the larger picture (-> no similar crash reports, so updating software looks like a good bet), and we won't forget either. If we get a similar report again, we have more to go on, and more to tell.

However, empathy has to go both ways; it's important for users to have empathy for the situation of developers, too, in particular with this mode of software development. Customer service is an ill-suited concept here since we are not, in fact, servants. Both kinds of empathy have to exist to grease the wheels of this process.