Bug 347817 - Plasma/KWin Crash in KActivities::Manager::serviceOwnerChanged
Summary: Plasma/KWin Crash in KActivities::Manager::serviceOwnerChanged
Status: RESOLVED DOWNSTREAM
Alias: None
Product: plasmashell
Classification: Plasma
Component: general (show other bugs)
Version: 5.3.0
Platform: openSUSE Linux
: NOR crash
Target Milestone: 1.0
Assignee: David Edmundson
URL:
Keywords: drkonqi
: 347924 347963 347995 348020 348212 348289 348465 348772 348791 (view as bug list)
Depends on:
Blocks:
 
Reported: 2015-05-16 22:57 UTC by jeff
Modified: 2015-06-07 06:04 UTC (History)
13 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 jeff 2015-05-16 22:57:49 UTC
Application: plasmashell (5.3.0)

Qt Version: 5.4.1
Operating System: Linux 4.0.1-1-desktop x86_64
Distribution: "openSUSE 20150515 (Tumbleweed) (x86_64)"

-- Information about the crash:
Every reboot - after login Plasma crash notice appears - no menu - just the notification - different threads than most in the buglist starts with thread 5 not 40 something. Upgraded via Thumleweed.

-- Backtrace:
Application: Plasma (plasmashell), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f1ffe660880 (LWP 2002))]

Thread 5 (Thread 0x7f1fe81e2700 (LWP 2004)):
#0  0x00007f1ff81334cd in poll () from /lib64/libc.so.6
#1  0x00007f1ffcf3b322 in ?? () from /usr/lib64/libxcb.so.1
#2  0x00007f1ffcf3cdef in xcb_wait_for_event () from /usr/lib64/libxcb.so.1
#3  0x00007f1fea531c69 in ?? () from /usr/lib64/qt5/plugins/platforms/libqxcb.so
#4  0x00007f1ff87a49ef in QThreadPrivate::start (arg=0x8e24a0) at thread/qthread_unix.cpp:337
#5  0x00007f1ff772f484 in start_thread () from /lib64/libpthread.so.0
#6  0x00007f1ff813ba4d in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7f1fe5ce7700 (LWP 2013)):
#0  0x00007ffc7438bd5e in clock_gettime ()
#1  0x00007f1ff814847d in clock_gettime () from /lib64/libc.so.6
#2  0x00007f1ff8856cd6 in qt_clock_gettime (ts=0x7f1fe5ce6ac0, clock=<optimized out>) at tools/qelapsedtimer_unix.cpp:105
#3  do_gettime (frac=<synthetic pointer>, sec=<synthetic pointer>) at tools/qelapsedtimer_unix.cpp:161
#4  qt_gettime () at tools/qelapsedtimer_unix.cpp:170
#5  0x00007f1ff89d4969 in QTimerInfoList::updateCurrentTime (this=this@entry=0x7f1fd8002ed0) at kernel/qtimerinfo_unix.cpp:84
#6  0x00007f1ff89d4ef5 in QTimerInfoList::timerWait (this=0x7f1fd8002ed0, tm=...) at kernel/qtimerinfo_unix.cpp:379
#7  0x00007f1ff89d610e in timerSourcePrepareHelper (timeout=0x7f1fe5ce6b74, src=<optimized out>) at kernel/qeventdispatcher_glib.cpp:127
#8  timerSourcePrepare (source=<optimized out>, timeout=0x7f1fe5ce6b74) at kernel/qeventdispatcher_glib.cpp:160
#9  0x00007f1ff462149d in g_main_context_prepare () from /usr/lib64/libglib-2.0.so.0
#10 0x00007f1ff4621d70 in ?? () from /usr/lib64/libglib-2.0.so.0
#11 0x00007f1ff4621f6c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#12 0x00007f1ff89d633b in QEventDispatcherGlib::processEvents (this=0x7f1fd80008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:420
#13 0x00007f1ff897cf2b in QEventLoop::exec (this=this@entry=0x7f1fe5ce6d30, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#14 0x00007f1ff879fdba in QThread::exec (this=<optimized out>) at thread/qthread.cpp:503
#15 0x00007f1ffba01f68 in ?? () from /usr/lib64/libQt5Qml.so.5
#16 0x00007f1ff87a49ef in QThreadPrivate::start (arg=0x9aa2c0) at thread/qthread_unix.cpp:337
#17 0x00007f1ff772f484 in start_thread () from /lib64/libpthread.so.0
#18 0x00007f1ff813ba4d in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7f1fd47cc700 (LWP 2015)):
#0  0x00007f1ff773391f in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f1fdead8073 in ?? () from /usr/lib64/dri/r600_dri.so
#2  0x00007f1fdead7927 in ?? () from /usr/lib64/dri/r600_dri.so
#3  0x00007f1ff772f484 in start_thread () from /lib64/libpthread.so.0
#4  0x00007f1ff813ba4d in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f1fce931700 (LWP 2016)):
#0  0x00007ffc7438bd48 in clock_gettime ()
#1  0x00007f1ff814847d in clock_gettime () from /lib64/libc.so.6
#2  0x00007f1ff8856cd6 in qt_clock_gettime (ts=0x7f1fce930ac0, clock=<optimized out>) at tools/qelapsedtimer_unix.cpp:105
#3  do_gettime (frac=<synthetic pointer>, sec=<synthetic pointer>) at tools/qelapsedtimer_unix.cpp:161
#4  qt_gettime () at tools/qelapsedtimer_unix.cpp:170
#5  0x00007f1ff89d4969 in QTimerInfoList::updateCurrentTime (this=this@entry=0x7f1fc8002cd0) at kernel/qtimerinfo_unix.cpp:84
#6  0x00007f1ff89d4ef5 in QTimerInfoList::timerWait (this=0x7f1fc8002cd0, tm=...) at kernel/qtimerinfo_unix.cpp:379
#7  0x00007f1ff89d610e in timerSourcePrepareHelper (timeout=0x7f1fce930b74, src=<optimized out>) at kernel/qeventdispatcher_glib.cpp:127
#8  timerSourcePrepare (source=<optimized out>, timeout=0x7f1fce930b74) at kernel/qeventdispatcher_glib.cpp:160
#9  0x00007f1ff462149d in g_main_context_prepare () from /usr/lib64/libglib-2.0.so.0
#10 0x00007f1ff4621d70 in ?? () from /usr/lib64/libglib-2.0.so.0
#11 0x00007f1ff4621f6c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#12 0x00007f1ff89d633b in QEventDispatcherGlib::processEvents (this=0x7f1fc80008c0, flags=...) at kernel/qeventdispatcher_glib.cpp:420
#13 0x00007f1ff897cf2b in QEventLoop::exec (this=this@entry=0x7f1fce930d30, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#14 0x00007f1ff879fdba in QThread::exec (this=<optimized out>) at thread/qthread.cpp:503
#15 0x00007f1ffba01f68 in ?? () from /usr/lib64/libQt5Qml.so.5
#16 0x00007f1ff87a49ef in QThreadPrivate::start (arg=0xb18780) at thread/qthread_unix.cpp:337
#17 0x00007f1ff772f484 in start_thread () from /lib64/libpthread.so.0
#18 0x00007f1ff813ba4d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f1ffe660880 (LWP 2002)):
[KCrash Handler]
#5  0x00007f1ffd6da807 in at (i=0, this=0x696772614d510028) at /usr/include/qt5/QtCore/qvector.h:389
#6  pointer (this=<optimized out>) at /usr/include/qt5/QtCore/qresultstore.h:107
#7  value (this=<optimized out>) at /usr/include/qt5/QtCore/qresultstore.h:101
#8  resultReference (index=0, this=0x9749b0) at /usr/include/qt5/QtCore/qfutureinterface.h:247
#9  result (this=0x9749b0) at /usr/include/qt5/QtCore/qfuture.h:164
#10 result (this=0x9749a0) at /usr/include/qt5/QtCore/qfuturewatcher.h:122
#11 operator() (__closure=<optimized out>) at /usr/src/debug/kactivities-5.10.0/src/utils/dbusfuture_p.h:169
#12 call (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:494
#13 call<QtPrivate::List<>, void> (arg=<optimized out>, f=...) at /usr/include/qt5/QtCore/qobjectdefs_impl.h:551
#14 QtPrivate::QFunctorSlotObject<DBusFuture::continueWith(const QFuture<T>&, _Continuation&&) [with _ReturnType = QString; _Continuation = KActivities::Manager::serviceOwnerChanged(const QString&, const QString&, const QString&)::__lambda43]::__lambda29, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=<optimized out>, r=<optimized out>, a=<optimized out>, ret=<optimized out>) at /usr/include/qt5/QtCore/qobject_impl.h:192
#15 0x00007f1ff89af656 in QObject::event (this=0x9749a0, e=e@entry=0xd82050) at kernel/qobject.cpp:1245
#16 0x00007f1ff879c932 in QFutureWatcherBase::event (this=<optimized out>, event=0xd82050) at thread/qfuturewatcher.cpp:342
#17 0x00007f1ff9cd4b5c in QApplicationPrivate::notify_helper (this=this@entry=0x8c4550, receiver=receiver@entry=0x9749a0, e=e@entry=0xd82050) at kernel/qapplication.cpp:3720
#18 0x00007f1ff9cd9a26 in QApplication::notify (this=0x7ffc7430d7c0, receiver=0x9749a0, e=0xd82050) at kernel/qapplication.cpp:3503
#19 0x00007f1ff897efd5 in QCoreApplication::notifyInternal (this=0x7ffc7430d7c0, receiver=0x9749a0, event=event@entry=0xd82050) at kernel/qcoreapplication.cpp:935
#20 0x00007f1ff8980e6f in sendEvent (event=0xd82050, receiver=<optimized out>) at kernel/qcoreapplication.h:228
#21 QCoreApplicationPrivate::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x8b9570) at kernel/qcoreapplication.cpp:1552
#22 0x00007f1ff89814a8 in QCoreApplication::sendPostedEvents (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1410
#23 0x00007f1ff89d6ea3 in postEventSourceDispatch (s=0x910650) at kernel/qeventdispatcher_glib.cpp:271
#24 0x00007f1ff4621c74 in g_main_context_dispatch () from /usr/lib64/libglib-2.0.so.0
#25 0x00007f1ff4621ec8 in ?? () from /usr/lib64/libglib-2.0.so.0
#26 0x00007f1ff4621f6c in g_main_context_iteration () from /usr/lib64/libglib-2.0.so.0
#27 0x00007f1ff89d631c in QEventDispatcherGlib::processEvents (this=0x90b900, flags=...) at kernel/qeventdispatcher_glib.cpp:418
#28 0x00007f1ff897cf2b in QEventLoop::exec (this=this@entry=0x7ffc7430d630, flags=..., flags@entry=...) at kernel/qeventloop.cpp:204
#29 0x00007f1ff89845b6 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1188
#30 0x0000000000432878 in main (argc=4, argv=<optimized out>) at /usr/src/debug/plasma-workspace-5.3.0/shell/main.cpp:154

Possible duplicates by query: bug 347655, bug 347592, bug 347587, bug 347494, bug 347423.

Reported using DrKonqi
Comment 1 Marco Martin 2015-05-20 09:55:47 UTC
*** Bug 347924 has been marked as a duplicate of this bug. ***
Comment 2 David Edmundson 2015-05-20 19:08:39 UTC
*** Bug 348020 has been marked as a duplicate of this bug. ***
Comment 3 Bhushan Shah 2015-05-21 03:03:23 UTC
*** Bug 347995 has been marked as a duplicate of this bug. ***
Comment 4 Bhushan Shah 2015-05-21 03:55:11 UTC
*** Bug 347963 has been marked as a duplicate of this bug. ***
Comment 5 Ivan Čukić 2015-05-26 08:11:22 UTC
*** Bug 348212 has been marked as a duplicate of this bug. ***
Comment 6 Ivan Čukić 2015-05-26 13:29:25 UTC
It seems openSUSE people are trying to be smart and co-install kactivitymanagerd from 4 and 5 at the same time. I'll need to write an email to packagers ml. Seems that writing something in the wiki, and discussing it at lengths on mls is not enough...
Comment 7 Jorge Adriano 2015-05-26 14:22:48 UTC
Ivan, that seems to be a separate issue though. 

Firstly let me note, for what is worth, that while the official packages do allow for kactivitymanagerd 4 and 5 to be co-installed, the KDE 4.x workspace and Plasma 5 are not  co-installable. 

Regardless, my system's kactivitymanagerd 5 was a remnant of my previous KF5 installation based on the official packages. It shouldn't be there since I've moved to wolfi's unstable repository. I've now removed kactivitymanagerd. 

So at the moment I am running KDE 4.14, and only have  kactivitymanagerd 4 and no   kactivitymanagerd 5 as wolfi's repository doesn't seem to include one. Okular5's behaviour is still the same.
Comment 8 Ivan Čukić 2015-05-26 16:42:56 UTC
It is not a separate issue.

Plasma 5, Okular '5', KWin 5, Gwenview 5 need KF5 version of libkactivities.
KF5 version of libkactivities, in turn, *require* KF5 version of kactivitymanagerd, and can not work with the old one.

If your distribution allows installing KF5 libkactivities with KDE4 kactivitymanagerd, you'll get these crashes in every application that uses libkactivities.

The requirements are described in https://community.kde.org/Frameworks/Coinstallability
Comment 9 Jorge Adriano 2015-05-26 16:56:19 UTC
I see. Got it.
Comment 10 Bhushan Shah 2015-05-27 11:47:24 UTC
*** Bug 348289 has been marked as a duplicate of this bug. ***
Comment 11 Bhushan Shah 2015-05-31 03:38:19 UTC
*** Bug 348465 has been marked as a duplicate of this bug. ***
Comment 12 Bhushan Shah 2015-06-06 10:25:04 UTC
*** Bug 348772 has been marked as a duplicate of this bug. ***
Comment 13 Stefan Jones 2015-06-06 13:04:51 UTC
Also seen on a Fedora 22 system, upgraded from Fedora 20.

If there is a work-around, I would be grateful to know it.
Comment 14 Ivan Čukić 2015-06-06 15:59:22 UTC
@Stefan Install latest kactivities, and purge all other versions (purge the version from 4.x). And file a bug report to Fedora.
Comment 15 Rex Dieter 2015-06-06 16:00:49 UTC
Upgraders should end up that way, @Stefan, can you post output of:

rpm -q kf5-kactivities

?
Comment 16 Stefan Jones 2015-06-07 01:00:02 UTC
It appears that Fedup (the Fedora updater) was a bit confused about what should stay and what should go. It got rid of older versions of KDE4 libraries but installed not only newer KDE 4 files but what appear to be some kf5 equivalents:

[    47.503] (DD) fedup.depsolve:pkgAdded() kactivities-4.13.3-6.fc20.x86_64: remove (obsoleted)
[    47.507] (DD) fedup.depsolve:pkgAdded() kactivities-libs-4.13.3-6.fc20.x86_64: remove (updated)
[    47.510] (DD) fedup.depsolve:pkgAdded() kactivities-libs-4.13.3-7.fc22.x86_64: install (obsolete)
[    47.526] (DD) fedup.depsolve:pkgAdded() kactivities-nepomuk-4.13.3-6.fc20.x86_64: remove (updated)
[    47.527] (DD) fedup.depsolve:pkgAdded() kactivities-nepomuk-4.13.3-7.fc22.x86_64: install (update)
[    48.623] (DD) fedup.depsolve:pkgAdded() kf5-kactivities-5.10.0-1.fc22.x86_64: install (obsolete)

[   764.263] (II) fedup.cli:inst_open_file() installing kf5-kactivities-libs-5.10.0-1.fc22.x86_64.rpm (1518/2358)
[   764.267] (II) fedup.cli:inst_open_file() installing kf5-kactivities-5.10.0-1.fc22.x86_64.rpm (1527/2358)
[   764.322] (II) fedup.cli:inst_open_file() installing kactivities-libs-4.13.3-7.fc22.x86_64.rpm (1641/2358)
[   764.452] (II) fedup.cli:inst_open_file() installing kactivities-nepomuk-4.13.3-7.fc22.x86_64.rpm (1905/2358)
Comment 17 Bhushan Shah 2015-06-07 02:39:59 UTC
*** Bug 348791 has been marked as a duplicate of this bug. ***
Comment 18 Ivan Čukić 2015-06-07 05:39:27 UTC
Can you post the crash backtrace, debugging output of plasmashell, and output of 'kactivitymanagerd status'? (before that, please install the versions with the debugging symbols)
Comment 19 Stefan Jones 2015-06-07 05:57:59 UTC
Ivan: I am sorry, when I saw the  bug I filed marked as a duplicate, I wanted to move forward. I reinstalled what looks like a consistent version of KDE 5. Unless the problem was due to something else than having older versions of kactivity, I don't think I will be able to reproduce it. 

To confirm: The inclusion of old files occurred during an upgrade (using Fedup) from Fedora 20 to Fedora 22. I removed all plasma and KDE components, and reinstalled KDE 5. I didn't see old versions of the kactivity files.

I do have the backtrace text:

Qt Version: 5.4.1
Operating System: Linux 4.0.4-303.fc22.x86_64 x86_64                                 
Distribution (Platform): Fedora RPMs                                                 
                                                                                     
-- Information about the crash:                                                      
<In detail, tell us what you were doing  when the application crashed.>              

-- Backtrace:
Application: KWin (kwin_x11), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7fbd90cd6900 (LWP 2535))]

Thread 5 (Thread 0x7fbd81660700 (LWP 2550)):
#0  0x000000336a2f666d in poll () from /lib64/libc.so.6
#1  0x000000336ba49dbc in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#2  0x000000336ba4a142 in g_main_loop_run () from /lib64/libglib-2.0.so.0
#3  0x00007fbd82ec4696 in gdbus_shared_thread_func () from /lib64/libgio-2.0.so.0
#4  0x000000336ba710a5 in g_thread_proxy () from /lib64/libglib-2.0.so.0
#5  0x0000003369e07555 in start_thread () from /lib64/libpthread.so.0
#6  0x000000336a301f3d in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7fbd80e5f700 (LWP 2551)):
#0  0x000000336a2f666d in poll () from /lib64/libc.so.6
#1  0x000000336ba49dbc in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#2  0x000000336ba49ecc in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#3  0x000000336ba49f09 in glib_worker_main () from /lib64/libglib-2.0.so.0
#4  0x000000336ba710a5 in g_thread_proxy () from /lib64/libglib-2.0.so.0
#5  0x0000003369e07555 in start_thread () from /lib64/libpthread.so.0
#6  0x000000336a301f3d in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7fbd797fe700 (LWP 2563)):
#0  0x000000336a2f83d3 in select () from /lib64/libc.so.6
#1  0x000000337f4d1dcf in qt_safe_select(int, fd_set*, fd_set*, fd_set*, timespec const*) () from /lib64/libQt5Core.so.5
#2  0x000000337f4d38ce in QEventDispatcherUNIXPrivate::doSelect(QFlags<QEventLoop::ProcessEventsFlag>, timespec*) () from /lib64/libQt5Core.so.5
#3  0x000000337f4d3dfe in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#4  0x000000337f47ca8a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#5  0x000000337f29aff4 in QThread::exec() () from /lib64/libQt5Core.so.5
#6  0x00000039098c3935 in QQmlThreadPrivate::run() () from /lib64/libQt5Qml.so.5
#7  0x000000337f29fede in QThreadPrivate::start(void*) () from /lib64/libQt5Core.so.5
#8  0x0000003369e07555 in start_thread () from /lib64/libpthread.so.0
#9  0x000000336a301f3d in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7fbd5f6c3700 (LWP 2574)):
#0  0x0000003369e0c530 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00000033825806d4 in QTWTF::TCMalloc_PageHeap::scavengerThread() () from /lib64/libQt5Script.so.5
#2  0x0000003382580719 in QTWTF::TCMalloc_PageHeap::runScavengerThread(void*) () from /lib64/libQt5Script.so.5
#3  0x0000003369e07555 in start_thread () from /lib64/libpthread.so.0
#4  0x000000336a301f3d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7fbd90cd6900 (LWP 2535)):
[KCrash Handler]
#5  0x00000038ff017427 in QtPrivate::QFunctorSlotObject<void DBusFuture::continueWith<QString, KActivities::Manager::serviceOwnerChanged(QString const&, QString const&, QString const&)::{lambda(QString const&)#3}>(QFuture<QString> const&, KActivities::Manager::serviceOwnerChanged(QString const&, QString const&, QString const&)::{lambda(QString const&)#3}&&)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) () from /lib64/libKF5Activities.so.5
#6  0x000000337f4b0b11 in QObject::event(QEvent*) () from /lib64/libQt5Core.so.5
#7  0x00000038ff9527cc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#8  0x00000038ff957e70 in QApplication::notify(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#9  0x000000337f47f24b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /lib64/libQt5Core.so.5
#10 0x000000337f481387 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /lib64/libQt5Core.so.5
#11 0x000000337f4d3cc2 in QEventDispatcherUNIX::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#12 0x00007fbd8a3e697d in QUnixEventDispatcherQPA::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt5/plugins/platforms/libqxcb.so
#13 0x000000337f47ca8a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#14 0x000000337f4845fc in QCoreApplication::exec() () from /lib64/libQt5Core.so.5
#15 0x0000003908605967 in kdemain () from /lib64/libkdeinit5_kwin_x11.so
#16 0x000000336a220790 in __libc_start_main () from /lib64/libc.so.6
#17 0x0000000000400bc9 in _start ()
Comment 20 Ivan Čukić 2015-06-07 06:04:42 UTC
No problem. It looks like it was the same issue. Great that it worked out for you now.