Application: krunner (0.1) KDE Platform Version: 4.3.85 (KDE 4.3.85 (KDE 4.4 Beta2)) Qt Version: 4.6.0 Operating System: Linux 2.6.32.2-desktop-2mnb x86_64 Distribution: "Mandriva Linux 2010.0" -- Information about the crash: Start some program (I choose KWrite). Press CTRL+ESC and find this process. Button "Kill process..." will change color to active, but it not click-able for a moment. Press this button and until this process disappear, press it again on same process -> Krunner crash. The crash can be reproduced everytime. -- Backtrace: Application: Rozhraní pro spouštění programů (kdeinit4), signal: Aborted 82 T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS) The current source language is "auto; currently asm". [Current thread is 1 (Thread 0x7effc1089720 (LWP 12123))] Thread 2 (Thread 0x7effa1c5b710 (LWP 12125)): #0 0x00007effbf32d0bc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0 #1 0x00007effbf5b21db in wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:87 #2 QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159 #3 0x00007effbdd8f8bc in QHostInfoAgent::run (this=0xe09920) at kernel/qhostinfo.cpp:252 #4 0x00007effbf5b1225 in QThreadPrivate::start (arg=0xe09920) at thread/qthread_unix.cpp:244 #5 0x00007effbf328a5d in start_thread () from /lib64/libpthread.so.0 #6 0x00007effbe10b0dd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #7 0x0000000000000000 in ?? () Thread 1 (Thread 0x7effc1089720 (LWP 12123)): [KCrash Handler] #5 0x00007effbe061955 in raise (sig=<value optimized out>) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #6 0x00007effbe062f70 in abort () at abort.c:92 #7 0x00007effbf5a9354 in qt_message_output (msgType=QtFatalMsg, buf=<value optimized out>) at global/qglobal.cpp:2226 #8 0x00007effbf5a9532 in qt_message(QtMsgType, const char *, typedef __va_list_tag __va_list_tag *) (msgType=QtFatalMsg, msg=0x7effbf705838 "ASSERT failure in %s: \"%s\", file %s, line %d", ap= 0x7fffe6a08800) at global/qglobal.cpp:2272 #9 0x00007effbf5a96e5 in qFatal (msg=0x2f5b <Address 0x2f5b out of bounds>) at global/qglobal.cpp:2455 #10 0x00007effc0b2a52c in KAuth::BackendsManager::init () at /usr/src/debug/kdelibs-4.3.85/kdecore/auth/BackendsManager.cpp:52 #11 0x00007effc0b2a905 in KAuth::BackendsManager::authBackend () at /usr/src/debug/kdelibs-4.3.85/kdecore/auth/BackendsManager.cpp:59 #12 0x00007effc0b2bd71 in KAuth::Action::Action (this=0x107fe80, name=...) at /usr/src/debug/kdelibs-4.3.85/kdecore/auth/kauthaction.cpp:62 #13 0x00007effb26d609e in KSysGuardProcessList::killProcesses (this=0xdb49e0, pids=<value optimized out>, sig=15) at /usr/src/debug/kdebase-workspace-4.3.85/libs/ksysguard/processui/ksysguardprocesslist.cpp:1205 #14 0x00007effb26d69dd in KSysGuardProcessList::killSelectedProcesses (this=0xdb49e0) at /usr/src/debug/kdebase-workspace-4.3.85/libs/ksysguard/processui/ksysguardprocesslist.cpp:1263 #15 0x00007effb26d8751 in KSysGuardProcessList::qt_metacall (this=0xdb49e0, _c=InvokeMetaMethod, _id=<value optimized out>, _a=0x7fffe6a08e70) at /usr/src/debug/kdebase-workspace-4.3.85/build/libs/ksysguard/processui/ksysguardprocesslist.moc:154 #16 0x00007effbf6b71b3 in QMetaObject::activate (sender=0xe81470, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0xffffffffffffffff) at kernel/qobject.cpp:3286 #17 0x00007effbeee5ca2 in QAbstractButton::clicked (this=0x2f5b, _t1=false) at .moc/release-shared/moc_qabstractbutton.cpp:206 #18 0x00007effbec0368b in QAbstractButtonPrivate::emitClicked (this=0xe814b0) at widgets/qabstractbutton.cpp:546 #19 0x00007effbec0454b in QAbstractButtonPrivate::click (this=0xe814b0) at widgets/qabstractbutton.cpp:539 #20 0x00007effbec047b5 in QAbstractButton::mouseReleaseEvent (this=0xe81470, e=0x7fffe6a09740) at widgets/qabstractbutton.cpp:1118 #21 0x00007effbe8a8b19 in QWidget::event (this=0xe81470, event=0x7fffe6a09740) at kernel/qwidget.cpp:7974 #22 0x00007effbe85342c in QApplicationPrivate::notify_helper (this=0x98d260, receiver=0xe81470, e=0x7fffe6a09740) at kernel/qapplication.cpp:4242 #23 0x00007effbe85a2b1 in QApplication::notify (this=0x98cec0, receiver=0xe81470, e=0x7fffe6a09740) at kernel/qapplication.cpp:3822 #24 0x00007effbfbd84ae in KApplication::notify (this=0x98cec0, receiver=0xe81470, event=0x7fffe6a09740) at /usr/src/debug/kdelibs-4.3.85/kdeui/kernel/kapplication.cpp:302 #25 0x00007effbf6a445c in QCoreApplication::notifyInternal (this=0x98cec0, receiver=0xe81470, event=0x7fffe6a09740) at kernel/qcoreapplication.cpp:704 #26 0x00007effbe859426 in sendEvent (event=<value optimized out>, receiver=<value optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:215 #27 QApplicationPrivate::sendMouseEvent (event=<value optimized out>, receiver=<value optimized out>) at kernel/qapplication.cpp:2956 #28 0x00007effbe8d7605 in QETWidget::translateMouseEvent (this=0xdb49b0, event=<value optimized out>) at kernel/qapplication_x11.cpp:4368 #29 0x00007effbe8d631a in QApplication::x11ProcessEvent (this=<value optimized out>, event=0x7fffe6a0a060) at kernel/qapplication_x11.cpp:3501 #30 0x00007effbe900aa2 in x11EventSourceDispatch (s=0x990af0, callback=<value optimized out>, user_data=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:146 #31 0x00007effbaafd65e in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0 #32 0x00007effbab01028 in ?? () from /usr/lib64/libglib-2.0.so.0 #33 0x00007effbab01150 in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0 #34 0x00007effbf6cda13 in QEventDispatcherGlib::processEvents (this=0x98b740, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:407 #35 0x00007effbe90068e in QGuiEventDispatcherGlib::processEvents (this=0x2f5b, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202 #36 0x00007effbf6a2d82 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149 #37 0x00007effbf6a315c in QEventLoop::exec (this=0x7fffe6a0a390, flags=) at kernel/qeventloop.cpp:201 #38 0x00007effbf6a6e9b in QCoreApplication::exec () at kernel/qcoreapplication.cpp:981 #39 0x00007effb2bc7044 in kdemain (argc=<value optimized out>, argv=<value optimized out>) at /usr/src/debug/kdebase-workspace-4.3.85/krunner/main.cpp:65 #40 0x0000000000406e99 in launch (argc=1, _name=<value optimized out>, args=<value optimized out>, cwd=<value optimized out>, envc=<value optimized out>, envs=<value optimized out>, reset_env=false, tty=0x0, avoid_loops=false, startup_id_str=0x409dd6 "0") at /usr/src/debug/kdelibs-4.3.85/kinit/kinit.cpp:705 #41 0x0000000000407608 in handle_launcher_request (sock=7, who=<value optimized out>) at /usr/src/debug/kdelibs-4.3.85/kinit/kinit.cpp:1197 #42 0x0000000000408281 in handle_requests (waitForPid=0) at /usr/src/debug/kdelibs-4.3.85/kinit/kinit.cpp:1390 #43 0x0000000000408ab0 in main (argc=2, argv=<value optimized out>, envp=<value optimized out>) at /usr/src/debug/kdelibs-4.3.85/kinit/kinit.cpp:1825 Reported using DrKonqi
I don't get a crash, but it does say that the authentication failed and pops up a dialog asking for my password. Is this a bug for you drf?
Please try using the latest polkit-qt release (as found on http://dot.kde.org/2009/12/25/kde-extends-polkit-support-polkit-1 ). Unfortunately on Qt 4.6 that release is needed to fix this kind of behavior (and in fact 4.4 trunk depends on it)
Carth (the reporter), Is it possible for you to upgrade to the latest polkit-qt and check for the bug again?
I installed this RPM from Mandriva: lib64polkit1_0-0.95-1mdv2010.1 polkit-gnome-0.95-1mdv2010.1 polkit-kde-1-debug-0.95.1-1mdv2010.1 polkit-qt-devel-0.9.3-1mdv2010.1 polkit-qt-debug-0.9.3-1mdv2010.1 lib64polkit-qt-agent-10-0.95.1-1mdv2010.1 polkit-kde-1-0.95.1-1mdv2010.1 lib64polkit-qt-core0-0.9.3-1mdv2010.1 polkit-qt-1-devel-0.95.1-1mdv2010.1 lib64polkit-qt-core-10-0.95.1-1mdv2010.1 lib64polkit-devel-0.9-6mdv2010.0 polkit-qt-1-debug-0.95.1-1mdv2010.1 polkit-debug-0.95-1mdv2010.1 lib64polkit-qt-gui0-0.9.3-1mdv2010.1 lib64polkitkdeprivate4-4.3.85-2mdv2010.1 lib64polkit1-devel-0.95-1mdv2010.1 lib64polkit2-0.9-6mdv2010.0 lib64polkit-qt-gui-10-0.95.1-1mdv2010.1 lib64polkit-gnome0-0.9.2-4mdv2010.0 polkit-0.95-1mdv2010.1 But KRunner is crashed again. May be this bug belongs to Mandriva.
Now that I look again at your bug, yes, it's an upstream bug. This is not a crash, more than a forced quit due to a failed assert. The interested line is the following: Q_ASSERT_X(auth, __FUNCTION__, "No AuthBackend found."); Which, of course, should never happen. I suppose it's a packaging problem.
upstream is Mandriva? What should they fix exactly? I don't see how marking this as closed helps anything?
John, it's a packaging bug. And it's unrelated to KSysGuard. I'm marking it as closed because I can't fix packaging mistakes.
I get that. But what is the packaging bug? Where is it? It is a packaging bug with policy-qt? With policy-kit? With ksysguard? How can it be fixed?
*** Bug 221268 has been marked as a duplicate of this bug. ***
Hum, so we still don't have an actual solution for this, right? We think it's a packaging bug, but have no idea what package or how to fix?
*** Bug 222419 has been marked as a duplicate of this bug. ***
i don't see where is the packaging but here. i reproduce with kde 4.3.90 and with polkit qt isntalled. what missing part could lead to this assert ?
Well if polkit-qt isn't installed then I think it will most definitely crash. There's a Q_ASSERT to make it crash if no backends are found :-/
yes but here it is installed and you can see in comment #4 that this is installed too.
Let me add some more details: 1 - The problem is not in polkit-qt being installed or not but more in how kdelibs was compiled and/or packaged. kdelibs generates a static plugin for KAuth which in this case is missing: in fact the assertion means that the static plugin in question is not found 2 - Due to this, this is not a bug in KDE, and I really don't know how to solve this or what hints to give, unless I know how Mandriva packages his stuff. It actually makes me wonder how this could happen, since the buildsystem ALWAYS builds a backend, eventually falling back to the fake one, so there should be something wrong somewhere I am closing this bug again, and please do not open it again unless there is evidence that the problem lies in KDE. However I will be happy to give out some help on Mandriva's tracker. (I got wrong before, distributions are downstream, thanks ossi ^^)
> in fact the assertion means that the static plugin in question is not found Is it possible for me to check if the plugin is found? I don't want ksysguard and krunner crashing if the plugins aren't found - I'd rather just gracefully disable that functionality and give an error. Are there any unit tests for kauth btw? From the first bug report it sounded like it could be triggered by trying to kill two processes rapidly. It would be good to add a unit test for calling kauth twice in a row, just to check for this.
>Is it possible for me to check if the plugin is found? I don't want ksysguard and krunner crashing if the plugins aren't found - I'd rather just gracefully disable that functionality and give an error. No, because it's not a KService plugin. It is compiled inside kdelibs and it should be always present, unless you do some bad tricks > Are there any unit tests for kauth btw? From the first bug report it sounded like it could be triggered by trying to kill two processes rapidly. It would be good to add a unit test for calling kauth twice in a row, just to check for this. I don't recall any unit test but the situation you explained is plain impossible, at least related to this bug, unless somebody initializes KAuth twice, which again is pretty much impossible. Also, the fact that this bug happens only on Mandriva is a proof that the problem lies there.
Could the function return false or something then instead, instead of crashing?
Could this bug be related: https://bugs.kde.org/show_bug.cgi?id=224135 it's a segmentation fault instead, and it's with OpenSuse
>Could the function return false or something then instead, instead of crashing? No, it's an assert notifying a missing component hence it's a critical error that has to lead to a crash. Straight to the point, it should simply never happen. >Could this bug be related: Probably. Knowing what backend those systems are using and the cmake line of kdelibs would probably help figuring out.
Hmm, https://bugs.kde.org/show_bug.cgi?id=222419 My bug report got marked as a duplicate of this bug. I'm op openSUSE though..
Could it be that this is the problem, in #ifndef KDE_USE_FINAL Q_IMPORT_PLUGIN(auth_backend) Q_IMPORT_PLUGIN(helper_proxy) #endif It sounds quite possible that Mandriva compiles with --use-final to reduce binary size, so these wouldn't happen. Would bad things happen in such a case?
It's -DCMAKE_BUILD_TYPE=release not --use-final, but yeah, openSUSE builds with that too.
Thiago says that what Q_IMPORT_PLUGIN does is that it adds the statically-compiled plugin to QPluginLoader's list. So it would indeed return an empty list of instances. Talking to montel and thiago, the long term fix is to remove the whole static plugin code. kdelibs code really should not be doing this. In the short term, adding KDE4_NO_ENABLE_FINAL(kauth) to CMakeLists.txt should fix it.
Oh crap. I didn't commit that line and didn't realize that. However, not so easy. The whole kdecore should actually be added to NO_FINAL, and I guess this is not acceptable. I can come up with something to avoid the need of having static plugins, still solid does that and it's in kdelibs. However, I'm assigning this bug to myself and will try to remove the static plugins. If I come up with something acceptable I'll just commit straight away, otherwise we'll see.
After some additional reasoning and looking at the code again, I await for the issue to be discussed on k-c-d, since the change does not make a lot of sense and other code in kdelibs simply relies on static plugins.
to comment #22, yes we compile with enable final
*** Bug 224460 has been marked as a duplicate of this bug. ***
SVN commit 1081127 by dafre: BUG: 220403 Switch KAuth backend probing to static code compilation without the use of Qt's static plugins. This has some nice side effects: 1. Compilation with KDE4_ENABLE_FINAL works again (see bug in question) 2. The asserts are no longer triggered (they're still there for beauty), since now an error at compile time would occur instead 3. The whole probing is slightly more reliable. It all seems to work but I urge everyone to test since release is near. I'm backporting this commit in minutes M +11 -80 CMakeLists.txt M +0 -1 auth/AuthBackend.h M +29 -17 auth/BackendsManager.cpp M +87 -0 auth/ConfigureChecks.cmake M +0 -1 auth/HelperProxy.h M +3 -7 auth/backends/dbus/DBusHelperProxy.cpp M +1 -2 auth/backends/dbus/DBusHelperProxy.h M +0 -3 auth/backends/fake/FakeBackend.cpp M +0 -2 auth/backends/mac/AuthServicesBackend.cpp M +0 -3 auth/backends/policykit/PolicyKitBackend.cpp M +0 -2 auth/backends/polkit-1/Polkit1Backend.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1081127
SVN commit 1081133 by dafre: CCBUG: 220403 Backporting r1081127 M +11 -80 CMakeLists.txt M +0 -1 auth/AuthBackend.h M +29 -17 auth/BackendsManager.cpp M +87 -0 auth/ConfigureChecks.cmake M +0 -1 auth/HelperProxy.h M +3 -7 auth/backends/dbus/DBusHelperProxy.cpp M +1 -2 auth/backends/dbus/DBusHelperProxy.h M +0 -3 auth/backends/fake/FakeBackend.cpp M +0 -2 auth/backends/mac/AuthServicesBackend.cpp M +0 -3 auth/backends/policykit/PolicyKitBackend.cpp M +0 -2 auth/backends/polkit-1/Polkit1Backend.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1081133
*** Bug 221937 has been marked as a duplicate of this bug. ***
*** Bug 222879 has been marked as a duplicate of this bug. ***