Bug 260088

Summary: assert when ungrouping group
Product: [Applications] calligrawords Reporter: T Zachmann <t.zachmann>
Component: generalAssignee: Calligra Words Bugs <calligra-words-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: cbo, halla, inge
Priority: NOR    
Version: Git   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: document to reproduce the problem

Description David Faure 2010-12-16 00:29:44 UTC


---- Reported by t.zachmann@zagge.de 2009-10-15 09:04:38 ----

Version:           svn (using KDE 4.3.2)
OS:                Linux
Installed from:    Compiled From Sources

When a group loaded from odt is ungrouped you get the following bt:

Application: KWord (kword), signal SIGABRT

Thread 1 (Thread 0xb566db60 (LWP 25998)):
[KCrash Handler]
#6  0xb7fa0430 in __kernel_vsyscall ()
#7  0xb62826d0 in raise () from /lib/tls/i686/cmov/libc.so.6
#8  0xb6284098 in abort () from /lib/tls/i686/cmov/libc.so.6
#9  0xb654953f in qt_message_output (msgType=QtFatalMsg, buf=0x98f3840 "ASSERT: \"frame\" in file /home/tz/develop/kde/svn/koffice/kword/part/KWView.cpp, line 1259") at global/qglobal.cpp:2017
#10 0xb65495b6 in qFatal (msg=0xb669f214 "ASSERT: \"%s\" in file %s, line %d") at global/qglobal.cpp:2216
#11 0xb65499f5 in qt_assert (assertion=0xb3f9da6c "frame", file=0xb3f9d948 "/home/tz/develop/kde/svn/koffice/kword/part/KWView.cpp", line=1259) at global/qglobal.cpp:1786
#12 0xb3f3e0e5 in KWView::selectionChanged (this=0xa2e50c0) at /home/tz/develop/kde/svn/koffice/kword/part/KWView.cpp:1259
#13 0xb3f28012 in KWView::qt_metacall (this=0xa2e50c0, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbf9bd63c) at /home/ko2/koffice-build/kword/part/moc_KWView.cpp:114
#14 0xb66601a7 in QMetaObject::activate (sender=0xaa9ace0, from_signal_index=4, to_signal_index=4, argv=0x0) at kernel/qobject.cpp:3117
#15 0xb6661573 in QMetaObject::activate (sender=0xaa9ace0, m=0xb7dbd284, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3194
#16 0xb7d0d7d7 in KoSelection::selectionChanged (this=0xaa9ace0) at /home/ko2/koffice-build/libs/flake/KoSelection.moc:87
#17 0xb7d0e475 in KoSelectionPrivate::selectionChangedEvent (this=0xaa9ad40) at /home/tz/develop/kde/svn/koffice/libs/flake/KoSelection.cpp:78
#18 0xb7d0e518 in KoSelection::qt_metacall (this=0xaa9ace0, _c=QMetaObject::InvokeMetaMethod, _id=2, _a=0xbf9bd76c) at /home/ko2/koffice-build/libs/flake/KoSelection.moc:76
#19 0xb66601a7 in QMetaObject::activate (sender=0xb2c34e8, from_signal_index=4, to_signal_index=4, argv=0x0) at kernel/qobject.cpp:3117
#20 0xb6661573 in QMetaObject::activate (sender=0xb2c34e8, m=0xb6704908, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3194
#21 0xb66686a9 in QSingleShotTimer::timeout (this=0xb2c34e8) at .moc/debug-shared/qtimer.moc:76
#22 0xb66687c4 in QSingleShotTimer::timerEvent (this=0xb2c34e8) at kernel/qtimer.cpp:298
#23 0xb665dfa6 in QObject::event (this=0xb2c34e8, e=0xbf9bdcb4) at kernel/qobject.cpp:1082
#24 0xb6b1f8ed in QApplicationPrivate::notify_helper (this=0x95efd10, receiver=0xb2c34e8, e=0xbf9bdcb4) at kernel/qapplication.cpp:4057
#25 0xb6b1fc62 in QApplication::notify (this=0xbf9bdf4c, receiver=0xb2c34e8, e=0xbf9bdcb4) at kernel/qapplication.cpp:3604
#26 0xb75dccbd in KApplication::notify (this=0xbf9bdf4c, receiver=0xb2c34e8, event=0xbf9bdcb4) at /home/tz/develop/kde/svn/kdelibs/kdeui/kernel/kapplication.cpp:307
#27 0xb6649b67 in QCoreApplication::notifyInternal (this=0xbf9bdf4c, receiver=0xb2c34e8, event=0xbf9bdcb4) at kernel/qcoreapplication.cpp:606
#28 0xb6b1c2d5 in QCoreApplication::sendEvent (receiver=0xb2c34e8, event=0xbf9bdcb4) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:213
#29 0xb667be31 in QTimerInfoList::activateTimers (this=0x95f29c4) at kernel/qeventdispatcher_unix.cpp:572
#30 0xb66796e1 in timerSourceDispatch (source=0x95f2990) at kernel/qeventdispatcher_glib.cpp:164
#31 0xb5a74b88 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#32 0xb5a780eb in ?? () from /usr/lib/libglib-2.0.so.0
#33 0xb5a78268 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#34 0xb66789e2 in QEventDispatcherGlib::processEvents (this=0x95dd808, flags={i = -1080304076}) at kernel/qeventdispatcher_glib.cpp:324
#35 0xb6bce688 in QGuiEventDispatcherGlib::processEvents (this=0x95dd808, flags={i = -1080304028}) at kernel/qguieventdispatcher_glib.cpp:202
#36 0xb6646b58 in QEventLoop::processEvents (this=0xbf9bdef0, flags={i = -1080303952}) at kernel/qeventloop.cpp:149
#37 0xb6646db2 in QEventLoop::exec (this=0xbf9bdef0, flags={i = -1080303880}) at kernel/qeventloop.cpp:196
#38 0xb664a33f in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#39 0xb6b1f606 in QApplication::exec () at kernel/qapplication.cpp:3526
#40 0xb7f9ae08 in kdemain (argc=1, argv=0xbf9be044) at /home/tz/develop/kde/svn/koffice/kword/part/main.cpp:38
#41 0x08048796 in main (argc=) at /home/ko2/koffice-build/kword/part/kword_dummy.cpp:3



---- Additional Comments From t.zachmann@zagge.de 2009-10-15 09:07:14 ----

Created an attachment
document to reproduce the problem

Ungroup the 2 orange rectangles to reproduce the problem



---- Additional Comments From zander@kde.org 2009-10-15 11:05:21 ----

Quick guess, the group was a frame, now ungrouping means each of the shapes has to be a frame (which decorates a shape). If thats missing then the assert comes.



---- Additional Comments From zander@kde.org 2010-04-16 17:08:12 ----

I just noticed that grouping two frames leads to there being 3 frames, which is also incorrect.



---- Additional Comments From t.zachmann@zagge.de 2010-04-17 06:26:41 ----

I think moving to normal is wrong as it will crash when the assert is not in, so crash as severity is right.



---- Additional Comments From zander@kde.org 2010-04-17 11:04:05 ----

When you are right, you are right. Setting to 'crash' severity.



---- Additional Comments From sven.langkamp@gmail.com 2010-07-16 03:10:45 ----

Crashes in all KOffice applications, though with a different backtrace.



---- Additional Comments From sven.langkamp@gmail.com 2010-07-16 15:03:48 ----

I notice that the d->oldInheritTransform isn't correctly initialized as the constructor call by the ungroup command doesn't call init()

I tried this change, but that causes the ungrouped shapes to disappear from the document:
Index: commands/KoShapeGroupCommand.cpp
===================================================================
--- commands/KoShapeGroupCommand.cpp    (Revision 1145886)
+++ commands/KoShapeGroupCommand.cpp    (Arbeitskopie)
@@ -78,6 +78,7 @@
     : QUndoCommand(parent),
     d(&dd)
 {
+    d->init(this);
 }
 
 void KoShapeGroupCommandPrivate::init(QUndoCommand *q)



---- Additional Comments From zander@kde.org 2010-07-17 18:12:27 ----

SVN commit 1151057 by zander:

Also store the inherit-transform here

Spotted by Sven, thanks.

CCBUG:210640

 M  +1 -0      KoShapeUngroupCommand.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1151057



--- Bug imported by faure@kde.org 2010-12-16 00:31  ---

This bug was previously known as bug 210640.

Imported an attachment (id=54620)

Unknown version "svn in product calligra-words. 
   Setting version to "1.5 or before".
The original submitter of attachment 54620 [details] is unknown.
   Reassigning to the person who moved it here: faure@kde.org.

Comment 1 Halla Rempt 2011-08-16 12:08:56 UTC
According to Sven happens everywhere, not just words.
Comment 2 T Zachmann 2011-08-16 16:05:00 UTC
I just tested in stage and the problem does not happen there. Also I'm quite sure this is a words only bug as I'm the one who reported it.
Comment 3 Camilla Boemann 2012-01-29 17:10:46 UTC
downgrading it to just a regular crash
Comment 4 Camilla Boemann 2015-01-29 02:40:50 UTC
so it's because the grouped shapes are not frames and when ungrouping we hit an assert saying they have to be.

Now somehow we need to either make the frames or learn to live with them not being
Comment 5 Inge Wallin 2015-01-29 14:49:32 UTC
From a quick inspection I would rather say that it's because the shapes are not attached to any frame in the Words sense. They are "floating free", which I suppose means anchored to the page rather than to any text frame.
Comment 6 Camilla Boemann 2015-01-29 15:00:42 UTC
even if floating free (anchored to a page) they can have a frame - it's not related although  a shape without kwframe is considered to be floating free
Comment 7 Inge Wallin 2015-01-29 15:33:41 UTC
Fixed in commit 7fd9e0863726dc49bb7ac48be96424767793319b in the 2.9 branch.