Version: unspecified (using KDE 4.5.2) OS: Linux Plasma-desktop crashes after I press Super+Q a bunch of times. Reproducible: Always Steps to Reproduce: Press Super+Q a bunch of times
please provide a backtrace for this bug. It should be present in the crash dialog that shows when plasma crashen. thank you.
Application: Plasma Workspace (plasma-desktop), signal: Segmentation fault [Current thread is 1 (Thread 0x7f1206c63780 (LWP 4225))] Thread 2 (Thread 0x7f11dda7b710 (LWP 4382)): #0 0x00007f12038de779 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0 #1 0x00007f1203b62af2 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4 #2 0x00007f1203b58b78 in ?? () from /usr/lib/libQtCore.so.4 #3 0x00007f1203b6249e in ?? () from /usr/lib/libQtCore.so.4 #4 0x00007f12038d9cb0 in start_thread () from /lib/libpthread.so.0 #5 0x00007f12065a79fd in clone () from /lib/libc.so.6 #6 0x0000000000000000 in ?? () Thread 1 (Thread 0x7f1206c63780 (LWP 4225)): [KCrash Handler] #6 0x00007f1203c61c6f in QObject::removeEventFilter(QObject*) () from /usr/lib/libQtCore.so.4 #7 0x00007f12068617df in ?? () from /usr/lib/libkdeinit4_plasma-desktop.so #8 0x00007f1206861f4e in ?? () from /usr/lib/libkdeinit4_plasma-desktop.so #9 0x00007f1206883da0 in ?? () from /usr/lib/libkdeinit4_plasma-desktop.so #10 0x00007f1206886b91 in ?? () from /usr/lib/libkdeinit4_plasma-desktop.so #11 0x00007f1203c602ff in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #12 0x00007f1202df7ee2 in QAction::triggered(bool) () from /usr/lib/libQtGui.so.4 #13 0x00007f1202df80da in QAction::activate(QAction::ActionEvent) () from /usr/lib/libQtGui.so.4 #14 0x00007f120491d558 in ?? () from /usr/lib/libkdeui.so.5 #15 0x00007f120491fec3 in KGlobalAccel::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libkdeui.so.5 #16 0x00007f1203c602ff in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4 #17 0x00007f1204a10c19 in ?? () from /usr/lib/libkdeui.so.5 #18 0x00007f1204a10ffa in ?? () from /usr/lib/libkdeui.so.5 #19 0x00007f1203f9e18b in ?? () from /usr/lib/libQtDBus.so.4 #20 0x00007f1203fa954f in ?? () from /usr/lib/libQtDBus.so.4 #21 0x00007f1203c5f15a in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4 #22 0x00007f1202dfe564 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #23 0x00007f1202e02fda in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4 #24 0x00007f12048d01f6 in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5 #25 0x00007f1203c4aeac in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4 #26 0x00007f1203c4e695 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4 #27 0x00007f1203c75d83 in ?? () from /usr/lib/libQtCore.so.4 #28 0x00007f11fbb56bf3 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0 #29 0x00007f11fbb573d0 in ?? () from /usr/lib/libglib-2.0.so.0 #30 0x00007f11fbb5766d in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0 #31 0x00007f1203c75f1f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #32 0x00007f1202ea229e in ?? () from /usr/lib/libQtGui.so.4 #33 0x00007f1203c4a242 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #34 0x00007f1203c4a48c in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4 #35 0x00007f1203c4e94b in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4 #36 0x00007f120686dddb in kdemain () from /usr/lib/libkdeinit4_plasma-desktop.so #37 0x00007f12064f7c4d in __libc_start_main () from /lib/libc.so.6 #38 0x00000000004005d9 in _start ()
could you please install the debug packages for plasma? because otherwise the backtrace is nearly useless. thank you!
I can confirm this occurs in Kubuntu 10.10 with KDE 4.5.2 here is a useful backtrace: Application: Plasma Workspace (plasma-desktop), signal: Segmentation fault [Current thread is 1 (Thread 0x7f2f9f8977a0 (LWP 2051))] Thread 5 (Thread 0x7f2f7eb1e710 (LWP 2052)): #0 0x00007f2f9f1aa2b3 in select () at ../sysdeps/unix/syscall-template.S:82 #1 0x00007f2f9c806e8d in QProcessManager::run (this=0x7f2f9cb5cf40) at io/qprocess_unix.cpp:245 #2 0x00007f2f9c73727e in QThreadPrivate::start (arg=0x7f2f9cb5cf40) at thread/qthread_unix.cpp:266 #3 0x00007f2f973e9953 in ?? () from /usr/lib/nvidia-current/libGL.so.1 #4 0x00007f2f9c4ac971 in start_thread (arg=<value optimized out>) at pthread_create.c:304 #5 0x00007f2f9f1b191d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #6 0x0000000000000000 in ?? () Thread 4 (Thread 0x7f2f7dcd9710 (LWP 2057)): #0 pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:212 #1 0x00007f2f9c737da2 in wait (this=<value optimized out>, mutex=0x25dd5a0, time=30000) at thread/qwaitcondition_unix.cpp:86 #2 QWaitCondition::wait (this=<value optimized out>, mutex=0x25dd5a0, time=30000) at thread/qwaitcondition_unix.cpp:160 #3 0x00007f2f9c72cda2 in QThreadPoolThread::run (this=0x25dd6f0) at concurrent/qthreadpool.cpp:140 #4 0x00007f2f9c73727e in QThreadPrivate::start (arg=0x25dd6f0) at thread/qthread_unix.cpp:266 #5 0x00007f2f973e9953 in ?? () from /usr/lib/nvidia-current/libGL.so.1 #6 0x00007f2f9c4ac971 in start_thread (arg=<value optimized out>) at pthread_create.c:304 #7 0x00007f2f9f1b191d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #8 0x0000000000000000 in ?? () Thread 3 (Thread 0x7f2f76eba710 (LWP 2058)): #0 0x00007f2f9f1a51d3 in __poll (fds=<value optimized out>, nfds=<value optimized out>, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:87 #1 0x00007f2f93d8c009 in ?? () from /lib/libglib-2.0.so.0 #2 0x00007f2f93d8c45c in g_main_context_iteration () from /lib/libglib-2.0.so.0 #3 0x00007f2f9c8571e6 in QEventDispatcherGlib::processEvents (this=0x260cc30, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:417 #4 0x00007f2f9c829a02 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149 #5 0x00007f2f9c829dec in QEventLoop::exec (this=0x7f2f76eb9cb0, flags=) at kernel/qeventloop.cpp:201 #6 0x00007f2f9c7342fd in QThread::exec (this=<value optimized out>) at thread/qthread.cpp:490 #7 0x00007f2f9c8095f8 in QInotifyFileSystemWatcherEngine::run (this=0x25f15c0) at io/qfilesystemwatcher_inotify.cpp:248 #8 0x00007f2f9c73727e in QThreadPrivate::start (arg=0x25f15c0) at thread/qthread_unix.cpp:266 #9 0x00007f2f973e9953 in ?? () from /usr/lib/nvidia-current/libGL.so.1 #10 0x00007f2f9c4ac971 in start_thread (arg=<value optimized out>) at pthread_create.c:304 #11 0x00007f2f9f1b191d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #12 0x0000000000000000 in ?? () Thread 2 (Thread 0x7f2f71bfb710 (LWP 2094)): #0 pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:212 #1 0x00007f2f9c737da2 in wait (this=<value optimized out>, mutex=0x2bc2890, time=30000) at thread/qwaitcondition_unix.cpp:86 #2 QWaitCondition::wait (this=<value optimized out>, mutex=0x2bc2890, time=30000) at thread/qwaitcondition_unix.cpp:160 #3 0x00007f2f9c72cda2 in QThreadPoolThread::run (this=0x2bcccc0) at concurrent/qthreadpool.cpp:140 #4 0x00007f2f9c73727e in QThreadPrivate::start (arg=0x2bcccc0) at thread/qthread_unix.cpp:266 #5 0x00007f2f973e9953 in ?? () from /usr/lib/nvidia-current/libGL.so.1 #6 0x00007f2f9c4ac971 in start_thread (arg=<value optimized out>) at pthread_create.c:304 #7 0x00007f2f9f1b191d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #8 0x0000000000000000 in ?? () Thread 1 (Thread 0x7f2f9f8977a0 (LWP 2051)): [KCrash Handler] #6 0x00007f2f9c83f9c3 in size (this=0x2edcd10, obj=0x32a21b0) at ../../include/QtCore/../../src/corelib/tools/qlist.h:94 #7 count (this=0x2edcd10, obj=0x32a21b0) at ../../include/QtCore/../../src/corelib/tools/qlist.h:267 #8 QObject::removeEventFilter (this=0x2edcd10, obj=0x32a21b0) at kernel/qobject.cpp:2090 #9 0x00007f2f9f47947f in ControllerWindow::setGraphicsWidget (this=0x32a21b0, widget=0x30f8d80) at ../../../../plasma/desktop/shell/controllerwindow.cpp:160 #10 0x00007f2f9f47980e in ControllerWindow::showActivityManager (this=0x32a21b0) at ../../../../plasma/desktop/shell/controllerwindow.cpp:414 #11 0x00007f2f9f4a0618 in PlasmaApp::showController (this=0x21d4ec0, screen=0, containment=0x2531b60, widgetExplorerMode=false) at ../../../../plasma/desktop/shell/plasmaapp.cpp:509 #12 0x00007f2f9f4a5261 in PlasmaApp::qt_metacall (this=0x21d4ec0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7ffffc584c80) at ./plasmaapp.moc:146 #13 0x00007f2f9c842b27 in QMetaObject::activate (sender=0x23a5100, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0x7f2f9cb5d120) at kernel/qobject.cpp:3280 #14 0x00007f2f9b96d852 in QAction::triggered (this=0x2edcd10, _t1=false) at .moc/release-shared/moc_qaction.cpp:263 #15 0x00007f2f9b96ef5b in QAction::activate (this=0x23a5100, event=<value optimized out>) at kernel/qaction.cpp:1256 #16 0x00007f2f9d51af70 in trigger (this=<value optimized out>, componentUnique=<value optimized out>, actionUnique=<value optimized out>, timestamp=31223) at /usr/include/qt4/QtGui/qaction.h:218 #17 KGlobalAccelPrivate::_k_invokeAction (this=<value optimized out>, componentUnique=<value optimized out>, actionUnique=<value optimized out>, timestamp=31223) at ../../kdeui/shortcuts/kglobalaccel.cpp:440 #18 0x00007f2f9d51f398 in KGlobalAccel::qt_metacall (this=0x22b5bd0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7ffffc584e90) at ./kglobalaccel.moc:77 #19 0x00007f2f9c842b27 in QMetaObject::activate (sender=0x22b84a0, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0x7f2f9cb5d120) at kernel/qobject.cpp:3280 #20 0x00007f2f9d6275e9 in OrgKdeKglobalaccelComponentInterface::globalShortcutPressed (this=0x2edcd10, _t1=<value optimized out>, _t2=<value optimized out>, _t3=31223) at kglobalaccel_component_interface.moc:150 #21 0x00007f2f9d62794a in OrgKdeKglobalaccelComponentInterface::qt_metacall (this=0x22b84a0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7ffffc585350) at kglobalaccel_component_interface.moc:98 #22 0x00007f2f9cb810ee in QDBusConnectionPrivate::deliverCall (this=<value optimized out>, object=<value optimized out>, msg=<value optimized out>, metaTypes=..., slotIdx=<value optimized out>) at qdbusintegrator.cpp:919 #23 0x00007f2f9cb8c0ef in QDBusCallDeliveryEvent::placeMetaCall (this=0x11, object=0x32a21b0) at qdbusintegrator_p.h:103 #24 0x00007f2f9c83cbde in QObject::event (this=0x22b84a0, e=0x2edcd10) at kernel/qobject.cpp:1219 #25 0x00007f2f9b974fdc in QApplicationPrivate::notify_helper (this=0x21ea440, receiver=0x22b84a0, e=0x330adb0) at kernel/qapplication.cpp:4396 #26 0x00007f2f9b97aaed in QApplication::notify (this=0x21d4ec0, receiver=0x22b84a0, e=0x330adb0) at kernel/qapplication.cpp:4277 #27 0x00007f2f9d4c74d6 in KApplication::notify (this=0x21d4ec0, receiver=0x22b84a0, event=0x330adb0) at ../../kdeui/kernel/kapplication.cpp:310 #28 0x00007f2f9c82acdc in QCoreApplication::notifyInternal (this=0x21d4ec0, receiver=0x22b84a0, event=0x330adb0) at kernel/qcoreapplication.cpp:732 #29 0x00007f2f9c82dc22 in sendEvent (receiver=0x0, event_type=<value optimized out>, data=0x217e560) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215 #30 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=<value optimized out>, data=0x217e560) at kernel/qcoreapplication.cpp:1373 #31 0x00007f2f9c857653 in sendPostedEvents (s=0x21edba0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220 #32 postEventSourceDispatch (s=0x21edba0) at kernel/qeventdispatcher_glib.cpp:277 #33 0x00007f2f93d88342 in g_main_context_dispatch () from /lib/libglib-2.0.so.0 #34 0x00007f2f93d8c2a8 in ?? () from /lib/libglib-2.0.so.0 #35 0x00007f2f93d8c45c in g_main_context_iteration () from /lib/libglib-2.0.so.0 #36 0x00007f2f9c857193 in QEventDispatcherGlib::processEvents (this=0x217e070, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:415 #37 0x00007f2f9ba27a4e in QGuiEventDispatcherGlib::processEvents (this=0x2edcd10, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204 #38 0x00007f2f9c829a02 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149 #39 0x00007f2f9c829dec in QEventLoop::exec (this=0x7ffffc585d90, flags=) at kernel/qeventloop.cpp:201 #40 0x00007f2f9c82debb in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009 #41 0x00007f2f9f488d96 in kdemain (argc=<value optimized out>, argv=<value optimized out>) at ../../../../plasma/desktop/shell/main.cpp:118 #42 0x00007f2f9f0e9d8e in __libc_start_main (main=<value optimized out>, argc=<value optimized out>, ubp_av=<value optimized out>, init=<value optimized out>, fini=<value optimized out>, rtld_fini=<value optimized out>, stack_end=0x7ffffc586158) at libc-start.c:226 #43 0x0000000000400669 in _start ()
thank you for the backtrace
Someone said that not its not reproducable in the current trunk version. Although I didnt check it myself
i can't reproduce it with a trunk build either. seems to be fixed.
Created attachment 53127 [details] New crash information added by DrKonqi plasma-desktop (0.3) on KDE Platform 4.5.3 (KDE 4.5.3) "release 8" using Qt 4.6.3 - What I was doing when the application crashed: This is not fixed for KDE 4.5 as it does still crash for KDE 4.5.3 as you can see in the attached backtrace. To reproduce I pressed meta+q then switched to several activities. On one of those I selected a window and set it to only appear on another activity. After that I pressed meta+q again which made the widgets on the switcher bar/panel (the one with icons for the activities) disappear, yet the background still stayed there. Pressing meta+q again and again did not do anything until suddenly the empty activities icon panel disappeard and plasma crashed. -- Backtrace (Reduced): #6 size (this=0x4940d20, obj=0x47ad800) at ../../src/corelib/tools/qlist.h:90 #7 count (this=0x4940d20, obj=0x47ad800) at ../../src/corelib/tools/qlist.h:261 #8 QObject::removeEventFilter (this=0x4940d20, obj=0x47ad800) at kernel/qobject.cpp:2117 #9 0x00007f540a9a861f in ControllerWindow::setGraphicsWidget (this=0x47ad800, widget=0x4d414a0) at /usr/src/debug/kdebase-workspace-4.5.3/plasma/desktop/shell/controllerwindow.cpp:160 #10 0x00007f540a9cb87e in ControllerWindow::showActivityManager (this=0x47ad800) at /usr/src/debug/kdebase-workspace-4.5.3/plasma/desktop/shell/controllerwindow.cpp:414
So no hope of having a fix for the 4.5 series?
Can anybody please reopen that? Bug is still reproducable in KDE 4.5.3 and Qt 4.7.1.
To reproduce, press Meta+Q, wait for the activity panel to come up, than press meta+q for 5-6 times.
it is fixed in trunk, so the fix is in kde 4.6 and is marked as fixed because of this.
(In reply to comment #12) > it is fixed in trunk, so the fix is in kde 4.6 and is marked as fixed because > of this. If it's reported for 4.5 series, fix _must_ be backported to close the bug as FIXED. Is KDE 4.5 dead? Where is the announcement? Do I always have to eliminate you to make people fix bugs as in bug #252612 ?
the fix must not be backported. it is up to the developer to decide if yes or no it will be backported. Now if you don't agree, i welcome you to join the kde development team, the reason fixes are not backported is often the lack of time to maintain two versions of kde at the same time. Until that changes, the policy stays the same. A bug fixed in trunk is marked as fixed and the backporting depends on the developer time and the size of the fix. If you want to eliminate me, i welcome you to take over my bugtriagin work.
(In reply to comment #14) > the fix must not be backported. it is up to the developer to decide if yes or > no it will be backported. > > Now if you don't agree, I don't agree. > i welcome you to join the kde development team, I'm already trying to be the part of development team with helping[1] knetworkmanager. I want KDE 4.5 to be more stable, and don't think it's necessary to be a part of plasma team to want that. > the > reason fixes are not backported is often the lack of time to maintain two > versions of kde at the same time. Until that changes, the policy stays the > same. If there is not enough man power, policy must be changed, I agree. But if it's said that KDE 4.5 is still supported, than somebody _must_ find the commit that fixes this bug and talk about the effort of backporting it. > A bug fixed in trunk is marked as fixed and the backporting depends on > the developer time and the size of the fix. What is the size of fix here? Who committed the fix to trunk, which commit is that? If you don't know those (no info about those in this bug), you can't close that. > > If you want to eliminate me, i welcome you to take over my bugtriagin work. Saying "Just close that since fixed in 4.6" is not triaging/fixing, believe me and don't try to teach me about triaging[2], I already know what it is. [1] http://svn.reviewboard.kde.org/r/5599/ [2] http://bugs.pardus.org.tr/buglist.cgi?emailassigned_to1=1&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&email1=gokcen%40pardus.org.tr&emailtype1=substring
OK, let's keep it constructive. Some things to note: a) there's no thing like "_must_" in volunteer work; b) while it somehow doesn't happen in 4.6 anymore nobody knows for sure if it's actually fixed in 4.6 or if it's just not triggered because of other code changes. So maybe it's just a WORKSFORME rather than a FIXED; c) it's always reproducible in all combinations of Qt (4.6.x and Qt 4.7.x) and KDE 4.5.x, it's not a bad idea to have a look at it; d) KDE 4.5 is still supported, so it would be nice to have separate states for "FIXED in trunk" and "FIXED in branch" in Bugzilla. Don't know how it would be the best implemented, but sure it would help keeping reports clear.
(In reply to comment #16) > OK, let's keep it constructive. > > Some things to note: > a) there's no thing like "_must_" in volunteer work; Of course there may be problems about manpower, and everything may not be perfect. But, both stability and the promises given (like "KDE 4.5 is supported") are the matter of prestige. In this bug, nobody investigated about which commit fixed that, who committed it, when, how much effort is required to backport that etc. So it's simply wrong to close this as FIXED. Suppose that, all KDE developers try to reproduce all issued bugs(including bugs specific to KDE 4.5) in trunk, and mark the bugs as fixed if they could not reproduce. Than can you say that KDE 4.5 is still supported? At this point, just switching to trunk is not recommended for end users, so how can the users get the fix for this bug? Think that you are a distro maintainer and some user issued a bug in your distro bugzilla about this bug. Will you close the bug as UPSTREAM? > b) while it somehow doesn't happen in 4.6 anymore nobody knows for sure if it's > actually fixed in 4.6 or if it's just not triggered because of other code > changes. So maybe it's just a WORKSFORME rather than a FIXED; OK, let's look at the description of Resolutions here[1]: WORKSFORME: All attempts at reproducing this bug were futile, and reading the code produces no clues as to why the described behavior would occur. If more information appears later, the bug can be reopened. Anybody using KDE 4.5 can easily reproduce this bug, so is WONTFIX OK according to the description given above? FIXED: A fix for this bug is checked into the tree and tested. Is the fix committed to 4.5 tree? No. So why is that fixed? > c) it's always reproducible in all combinations of Qt (4.6.x and Qt 4.7.x) and > KDE 4.5.x, it's not a bad idea to have a look at it; > d) KDE 4.5 is still supported, so it would be nice to have separate states for > "FIXED in trunk" and "FIXED in branch" in Bugzilla. Don't know how it would be > the best implemented, but sure it would help keeping reports clear. Do you know some projects using that kind of resolution in bugzilla? Then think why there is just one fixed. In bugzilla there may some bugs that are reported for KDE 4.5 but fixed only in KDE 4.6 to keep API/ABI compatibility, I can see that but in this bug this is not the reason. There is no reason actually. [1] https://bugs.kde.org/page.cgi?id=fields.html#resolution
*** Bug 252298 has been marked as a duplicate of this bug. ***
marking as duplicate because the other report has the commit that probably fixes it *** This bug has been marked as a duplicate of bug 252210 ***