Application: ksudoku (1.0) KDE Platform Version: 4.8.00 (4.8.0 Qt Version: 4.8.0 Operating System: Linux 3.2.0-2-desktop x86_64 Distribution: "openSUSE 12.2 Milestone 1 (x86_64)" -- Information about the crash: - What I was doing when the application crashed: 1. Start KSudoku by clicking its icon from the menu. 2. Change the 'Difficulty' (or the 'Symmetry') in the drop-down box in the lower-right corner. 3. Segmentation Fault. - Workaround: 1. Start KSudoku. 2. Start a game by clicking the [Generate A Puzzle] button. 3. Start a new game by either clicking the [New] button or selecting 'Game > New' from the menu. 4. Change the 'Difficulty' (or the 'Symmetry') in the drop-down box in the lower-right corner. - Notes: 1. The SegFault only happens when changing the 'Difficulty' or 'Symmetry' immediately after start-up. Once a single puzzle has been generated, changing the 'Difficulty' or 'Symmetry' works fine. 2. Choosing the type of Sudoku game works fine. 3. The listed Backtrace is when changing the 'Difficulty'. The crash can be reproduced every time. -- Backtrace: Application: KSudoku (ksudoku), signal: Segmentation fault [KCrash Handler] #6 ksudoku::SymbolItem::setSize (this=0x4545454545454591, size=26) at /usr/src/debug/kdegames-4.8.0/ksudoku/src/gui/views/valuelistwidget.cpp:63 #7 0x0000000000437b40 in ksudoku::ValueListWidget::resizeEvent (this=0x71ad00) at /usr/src/debug/kdegames-4.8.0/ksudoku/src/gui/views/valuelistwidget.cpp:165 #8 0x00007ff85ea9d5da in QWidget::event (this=0x71ad00, event=0x7fffbc286850) at kernel/qwidget.cpp:8515 #9 0x00007ff85ee596a6 in QFrame::event (this=0x71ad00, e=0x7fffbc286850) at widgets/qframe.cpp:557 #10 0x00007ff85f083b1b in QGraphicsView::viewportEvent (this=0x71ad00, event=0x7fffbc286850) at graphicsview/qgraphicsview.cpp:2866 #11 0x00007ff85f8e3a28 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>, receiver=0x889100, event=0x7fffbc286850) at kernel/qcoreapplication.cpp:986 #12 0x00007ff85ea4ceaf in notify_helper (e=0x7fffbc286850, receiver=0x889100, this=0x683c80) at kernel/qapplication.cpp:4546 #13 QApplicationPrivate::notify_helper (this=0x683c80, receiver=0x889100, e=0x7fffbc286850) at kernel/qapplication.cpp:4522 #14 0x00007ff85ea51d63 in QApplication::notify (this=0x7fffbc2886b0, receiver=0x889100, e=0x7fffbc286850) at kernel/qapplication.cpp:4411 #15 0x00007ff8605ba786 in KApplication::notify (this=0x7fffbc2886b0, receiver=0x889100, event=0x7fffbc286850) at /usr/src/debug/kdelibs-4.8.0/kdeui/kernel/kapplication.cpp:311 #16 0x00007ff85f8e389c in QCoreApplication::notifyInternal (this=0x7fffbc2886b0, receiver=0x889100, event=0x7fffbc286850) at kernel/qcoreapplication.cpp:876 #17 0x00007ff85ea98095 in sendEvent (event=0x7fffbc286850, receiver=0x889100) at ../../src/corelib/kernel/qcoreapplication.h:231 #18 QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0xa26060, recursive=true, disableUpdates=<optimized out>) at kernel/qwidget.cpp:7431 #19 0x00007ff85ea97fd9 in QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0xb0b920, recursive=true, disableUpdates=<optimized out>) at kernel/qwidget.cpp:7443 #20 0x00007ff85ea97fd9 in QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0x8c2850, recursive=true, disableUpdates=<optimized out>) at kernel/qwidget.cpp:7443 #21 0x00007ff85ea97fd9 in QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0x7d54b0, recursive=true, disableUpdates=<optimized out>) at kernel/qwidget.cpp:7443 #22 0x00007ff85ea9b5ab in QWidgetPrivate::prepareToRender (this=0x942700, region=..., renderFlags=...) at kernel/qwidget.cpp:5389 #23 0x00007ff85ea9b9a4 in QWidgetPrivate::render (this=0x942700, target=0x7fffbc286d80, targetOffset=..., sourceRegion=<optimized out>, renderFlags=..., readyToRender=<optimized out>) at kernel/qwidget.cpp:5653 #24 0x00007ff85ea9bce9 in QWidget::render (this=<optimized out>, target=<optimized out>, targetOffset=<optimized out>, sourceRegion=<optimized out>, renderFlags=<optimized out>) at kernel/qwidget.cpp:5172 #25 0x00007ff8544f1b77 in Oxygen::TransitionWidget::grabWidget (this=<optimized out>, pixmap=..., widget=0x8bfb60, rect=<optimized out>) at /usr/src/debug/kde-workspace-4.8.0/kstyles/oxygen/transitions/oxygentransitionwidget.cpp:258 #26 0x00007ff8544f2736 in Oxygen::TransitionWidget::grab (this=0x927180, widget=0x8bfb60, rect=...) at /usr/src/debug/kde-workspace-4.8.0/kstyles/oxygen/transitions/oxygentransitionwidget.cpp:93 #27 0x00007ff8544ea568 in animate (this=0x955380) at /usr/src/debug/kde-workspace-4.8.0/kstyles/oxygen/transitions/oxygencomboboxdata.cpp:136 #28 Oxygen::ComboBoxData::animate (this=0x955380) at /usr/src/debug/kde-workspace-4.8.0/kstyles/oxygen/transitions/oxygencomboboxdata.cpp:128 #29 0x00007ff85f8f7761 in QMetaObject::activate (sender=0x8bfb60, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fffbc286f90) at kernel/qobject.cpp:3556 #30 0x00007ff85ee30771 in QComboBox::currentIndexChanged (this=<optimized out>, _t1=2) at .moc/release-shared/moc_qcombobox.cpp:316 #31 0x00007ff85ee307d7 in QComboBoxPrivate::_q_emitCurrentIndexChanged (this=<optimized out>, index=...) at widgets/qcombobox.cpp:1278 #32 0x00007ff85ee30a7a in QComboBoxPrivate::setCurrentIndex (this=0x942700, mi=<optimized out>) at widgets/qcombobox.cpp:2046 #33 0x00007ff85ee31684 in QComboBoxPrivate::_q_itemSelected (this=0x942700, item=...) at widgets/qcombobox.cpp:1247 #34 0x00007ff85f8f7761 in QMetaObject::activate (sender=0xa1e450, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fffbc287200) at kernel/qobject.cpp:3556 #35 0x00007ff85f0d8d32 in QComboBoxPrivateContainer::itemSelected (this=<optimized out>, _t1=<optimized out>) at .moc/release-shared/moc_qcombobox_p.cpp:253 #36 0x00007ff85ee2bb4a in QComboBoxPrivateContainer::eventFilter (this=0xa1e450, o=0x8783f0, e=0x7fffbc2879e0) at widgets/qcombobox.cpp:691 #37 0x00007ff85f8e3a28 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>, receiver=0x8783f0, event=0x7fffbc2879e0) at kernel/qcoreapplication.cpp:986 #38 0x00007ff85ea4ceaf in notify_helper (e=0x7fffbc2879e0, receiver=0x8783f0, this=0x683c80) at kernel/qapplication.cpp:4546 #39 QApplicationPrivate::notify_helper (this=0x683c80, receiver=0x8783f0, e=0x7fffbc2879e0) at kernel/qapplication.cpp:4522 #40 0x00007ff85ea52633 in QApplication::notify (this=<optimized out>, receiver=0x8783f0, e=0x7fffbc2879e0) at kernel/qapplication.cpp:4093 #41 0x00007ff8605ba786 in KApplication::notify (this=0x7fffbc2886b0, receiver=0x8783f0, event=0x7fffbc2879e0) at /usr/src/debug/kdelibs-4.8.0/kdeui/kernel/kapplication.cpp:311 #42 0x00007ff85f8e389c in QCoreApplication::notifyInternal (this=0x7fffbc2886b0, receiver=0x8783f0, event=0x7fffbc2879e0) at kernel/qcoreapplication.cpp:876 #43 0x00007ff85ea4deb2 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../src/corelib/kernel/qcoreapplication.h:231 #44 QApplicationPrivate::sendMouseEvent (receiver=0x8783f0, event=0x7fffbc2879e0, alienWidget=0x8783f0, nativeWidget=0xa1e450, buttonDown=0x8783f0, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3161 #45 0x00007ff85eaca311 in QETWidget::translateMouseEvent (this=0xa1e450, event=<optimized out>) at kernel/qapplication_x11.cpp:4439 #46 0x00007ff85eac8b2a in QApplication::x11ProcessEvent (this=0x7fffbc2886b0, event=0x7fffbc2882a0) at kernel/qapplication_x11.cpp:3631 #47 0x00007ff85eaf06b2 in x11EventSourceDispatch (s=0x687260, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146 #48 0x00007ff85765a8ea in g_main_dispatch (context=0x67ebe0) at gmain.c:2510 #49 g_main_context_dispatch (context=0x67ebe0) at gmain.c:3047 #50 0x00007ff85765acb0 in g_main_context_iterate (dispatch=1, block=<optimized out>, context=0x67ebe0, self=<optimized out>) at gmain.c:3118 #51 g_main_context_iterate (context=0x67ebe0, block=<optimized out>, dispatch=1, self=<optimized out>) at gmain.c:3055 #52 0x00007ff85765ad74 in g_main_context_iteration (context=0x67ebe0, may_block=1) at gmain.c:3179 #53 0x00007ff85f91287f in QEventDispatcherGlib::processEvents (this=0x6592b0, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:424 #54 0x00007ff85eaf033e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=<optimized out>) at kernel/qguieventdispatcher_glib.cpp:204 #55 0x00007ff85f8e2682 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149 #56 0x00007ff85f8e28d7 in QEventLoop::exec (this=0x7fffbc288640, flags=...) at kernel/qeventloop.cpp:204 #57 0x00007ff85f8e7435 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1148 #58 0x0000000000416b5a in main (argc=5, argv=0x7fffbc288ad8) at /usr/src/debug/kdegames-4.8.0/ksudoku/src/main.cpp:94 This bug may be a duplicate of or related to bug 219385. Possible duplicates by query: bug 219385. Reported using DrKonqi
I confirm the bug on Kubuntu 11.10, KDE 4.8. The backtrace: Application: KSudoku (ksudoku), signal: Segmentation fault [Current thread is 1 (Thread 0x7f247656e7a0 (LWP 31210))] Thread 2 (Thread 0x7f24641ed700 (LWP 31211)): #0 0x00007f2472a5d773 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87 #1 0x00007f246e079f68 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #2 0x00007f246e07a429 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #3 0x00007f2474129f3e in QEventDispatcherGlib::processEvents (this=0x7f245c0008b0, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:424 #4 0x00007f24740fdcf2 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149 #5 0x00007f24740fdef7 in QEventLoop::exec (this=0x7f24641ecdb0, flags=...) at kernel/qeventloop.cpp:201 #6 0x00007f247401527f in QThread::exec (this=<optimized out>) at thread/qthread.cpp:498 #7 0x00007f24740e0cbf in QInotifyFileSystemWatcherEngine::run (this=0xe83350) at io/qfilesystemwatcher_inotify.cpp:248 #8 0x00007f2474017d05 in QThreadPrivate::start (arg=0xe83350) at thread/qthread_unix.cpp:331 #9 0x00007f2472772efc in start_thread (arg=0x7f24641ed700) at pthread_create.c:304 #10 0x00007f2472a6989d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #11 0x0000000000000000 in ?? () Thread 1 (Thread 0x7f247656e7a0 (LWP 31210)): [KCrash Handler] #6 ksudoku::SymbolItem::setSize (this=0x51, size=26) at ../../../../ksudoku/src/gui/views/valuelistwidget.cpp:63 #7 0x0000000000436740 in ksudoku::ValueListWidget::resizeEvent (this=0xe92790) at ../../../../ksudoku/src/gui/views/valuelistwidget.cpp:165 #8 0x00007f24734fecd0 in QWidget::event (this=0xe92790, event=0x7fff72d69e50) at kernel/qwidget.cpp:8449 #9 0x00007f24738a75b6 in QFrame::event (this=0xe92790, e=0x7fff72d69e50) at widgets/qframe.cpp:557 #10 0x00007f2473acadfb in QGraphicsView::viewportEvent (this=0xe92790, event=0x7fff72d69e50) at graphicsview/qgraphicsview.cpp:2864 #11 0x00007f24740fec88 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>, receiver=0xea8640, event=0x7fff72d69e50) at kernel/qcoreapplication.cpp:902 #12 0x00007f24734ae43f in notify_helper (e=0x7fff72d69e50, receiver=0xea8640, this=0xc29080) at kernel/qapplication.cpp:4482 #13 QApplicationPrivate::notify_helper (this=0xc29080, receiver=0xea8640, e=0x7fff72d69e50) at kernel/qapplication.cpp:4458 #14 0x00007f24734b32e1 in QApplication::notify (this=0x7fff72d6b970, receiver=0xea8640, e=0x7fff72d69e50) at kernel/qapplication.cpp:4365 #15 0x00007f2474d8dae6 in KApplication::notify (this=0x7fff72d6b970, receiver=0xea8640, event=0x7fff72d69e50) at ../../kdeui/kernel/kapplication.cpp:311 #16 0x00007f24740feafc in QCoreApplication::notifyInternal (this=0x7fff72d6b970, receiver=0xea8640, event=0x7fff72d69e50) at kernel/qcoreapplication.cpp:787 #17 0x00007f24734fa95f in sendEvent (event=0x7fff72d69e50, receiver=0xea8640) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215 #18 QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0xea8df0, recursive=true, disableUpdates=<optimized out>) at kernel/qwidget.cpp:7365 #19 0x00007f24734fa8b9 in QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0xe927e0, recursive=true, disableUpdates=<optimized out>) at kernel/qwidget.cpp:7377 #20 0x00007f24734fa8b9 in QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0xe918f0, recursive=true, disableUpdates=<optimized out>) at kernel/qwidget.cpp:7377 #21 0x00007f24734fa8b9 in QWidgetPrivate::sendPendingMoveAndResizeEvents (this=0xdc46a0, recursive=true, disableUpdates=<optimized out>) at kernel/qwidget.cpp:7377 #22 0x00007f24734fc92b in QWidgetPrivate::prepareToRender (this=0xec80c0, region=..., renderFlags=...) at kernel/qwidget.cpp:5344 #23 0x00007f24734fcd24 in QWidgetPrivate::render (this=0xec80c0, target=0x7fff72d6a2e0, targetOffset=..., sourceRegion=<optimized out>, renderFlags=..., readyToRender=<optimized out>) at kernel/qwidget.cpp:5597 #24 0x00007f24734fd059 in QWidget::render (this=<optimized out>, target=<optimized out>, targetOffset=<optimized out>, sourceRegion=<optimized out>, renderFlags=<optimized out>) at kernel/qwidget.cpp:5127 #25 0x00007f246a5e5797 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so #26 0x00007f246a5e6336 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so #27 0x00007f246a5de318 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so #28 0x00007f246a5de0d1 in ?? () from /usr/lib/kde4/plugins/styles/oxygen.so #29 0x00007f2474111eba in QMetaObject::activate (sender=0xec7d10, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fff72d6a4b0) at kernel/qobject.cpp:3278 #30 0x00007f247387eb11 in QComboBox::currentIndexChanged (this=<optimized out>, _t1=1) at .moc/release-shared/moc_qcombobox.cpp:302 #31 0x00007f247387eb77 in QComboBoxPrivate::_q_emitCurrentIndexChanged (this=0xec80c0, index=...) at widgets/qcombobox.cpp:1269 #32 0x00007f247387ecc9 in QComboBoxPrivate::setCurrentIndex (this=0xec80c0, mi=<optimized out>) at widgets/qcombobox.cpp:2027 #33 0x00007f247387f8f4 in QComboBoxPrivate::_q_itemSelected (this=0xec80c0, item=...) at widgets/qcombobox.cpp:1238 #34 0x00007f2473882d77 in QComboBox::qt_metacall (this=0xec7d10, _c=QMetaObject::InvokeMetaMethod, _id=12, _a=0x7fff72d6a6c0) at .moc/release-shared/moc_qcombobox.cpp:191 #35 0x00007f2474e259f5 in KComboBox::qt_metacall (this=0xec7d10, _c=QMetaObject::InvokeMetaMethod, _id=<optimized out>, _a=0x7fff72d6a6c0) at ./kcombobox.moc:106 #36 0x00007f2474111eba in QMetaObject::activate (sender=0x10e6730, m=<optimized out>, local_signal_index=<optimized out>, argv=0x7fff72d6a6c0) at kernel/qobject.cpp:3278 #37 0x00007f2473b20652 in QComboBoxPrivateContainer::itemSelected (this=<optimized out>, _t1=<optimized out>) at .moc/release-shared/moc_qcombobox_p.cpp:213 #38 0x00007f2473879f5a in QComboBoxPrivateContainer::eventFilter (this=0x10e6730, o=0xf7c810, e=0x7fff72d6ad10) at widgets/qcombobox.cpp:687 #39 0x00007f24740fec88 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=<optimized out>, receiver=0xf7c810, event=0x7fff72d6ad10) at kernel/qcoreapplication.cpp:902 #40 0x00007f24734ae43f in notify_helper (e=0x7fff72d6ad10, receiver=0xf7c810, this=0xc29080) at kernel/qapplication.cpp:4482 #41 QApplicationPrivate::notify_helper (this=0xc29080, receiver=0xf7c810, e=0x7fff72d6ad10) at kernel/qapplication.cpp:4458 #42 0x00007f24734b3cbb in QApplication::notify (this=<optimized out>, receiver=0xf7c810, e=0x7fff72d6ad10) at kernel/qapplication.cpp:4047 #43 0x00007f2474d8dae6 in KApplication::notify (this=0x7fff72d6b970, receiver=0xf7c810, event=0x7fff72d6ad10) at ../../kdeui/kernel/kapplication.cpp:311 #44 0x00007f24740feafc in QCoreApplication::notifyInternal (this=0x7fff72d6b970, receiver=0xf7c810, event=0x7fff72d6ad10) at kernel/qcoreapplication.cpp:787 #45 0x00007f24734af442 in sendEvent (event=<optimized out>, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215 #46 QApplicationPrivate::sendMouseEvent (receiver=0xf7c810, event=0x7fff72d6ad10, alienWidget=0xf7c810, nativeWidget=0x10e6730, buttonDown=0xf7c810, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3146 #47 0x00007f247352f091 in QETWidget::translateMouseEvent (this=0x10e6730, event=<optimized out>) at kernel/qapplication_x11.cpp:4505 #48 0x00007f247352d94e in QApplication::x11ProcessEvent (this=0x7fff72d6b970, event=0x7fff72d6b530) at kernel/qapplication_x11.cpp:3693 #49 0x00007f24735564a2 in x11EventSourceDispatch (s=0xc2bdd0, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146 #50 0x00007f246e079a5d in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #51 0x00007f246e07a258 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #52 0x00007f246e07a429 in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #53 0x00007f2474129ed6 in QEventDispatcherGlib::processEvents (this=0xc07a10, flags=<optimized out>) at kernel/qeventdispatcher_glib.cpp:422 #54 0x00007f247355610e in QGuiEventDispatcherGlib::processEvents (this=<optimized out>, flags=<optimized out>) at kernel/qguieventdispatcher_glib.cpp:204 #55 0x00007f24740fdcf2 in QEventLoop::processEvents (this=<optimized out>, flags=...) at kernel/qeventloop.cpp:149 #56 0x00007f24740fdef7 in QEventLoop::exec (this=0x7fff72d6b900, flags=...) at kernel/qeventloop.cpp:201 #57 0x00007f2474102789 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1064 #58 0x000000000041568a in main (argc=5, argv=0x7fff72d6bd98) at ../../../ksudoku/src/main.cpp:94
Thank you for your very informative report, Manuel. The problem occurs because the value-list widget, which appears at the left of the playing area when you start a puzzle, is created but has no numbers put in it yet. Then, after you change the Difficulty or Symmetry, it gets a resize event and crashes. If you are able to recompile and rebuild KSudoku from source, as I suspect you might be, there was a fix to valuelistwidget.cpp on trunk by nlecureuil, SVN revision 1277487 on 1 Feb 2012. I think that might cure the problem. Unfortunately I cannot reproduce the crash, whether I include the fix or not, maybe because I am using KDE 4.7 and Qt 4.7 libraries. If you can try the fix, please let me know how you go. If it works, it should be backported to the KDE 4.8 branch.
The patch fixes this crash on my system I have kde 4.8 installed.
Thanks, Michael. I also found that my other machine has KDE 4.8 and Qt 4.8 libraries, so I was able to test for the crash and reproduce it. The patch worked fine and so did some other possible fixes, such as not iterating over an empty list. So I will proceed to implement a fix in the next couple of days and backport it to the 4.8 branch in time for the KDE SC 4.8.1 release on 6 March.
SVN commit 1281829 by ianw: Related: bug 294420 FIXED-IN: 4.8.1 Make the value-list widget non-empty at creation time, so that KSudoku will not crash when there is a resize event before starting the first puzzle. M +1 -1 valuelistwidget.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1281829
SVN commit 1281832 by ianw: Related: bug 294420 Backport to 4.8.1. Make the value-list widget non-empty at creation time, so that KSudoku will not crash when there is a resize event before starting the first puzzle. M +1 -1 valuelistwidget.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1281832
*** Bug 219385 has been marked as a duplicate of this bug. ***
*** Bug 215054 has been marked as a duplicate of this bug. ***