View Issue Details

IDProjectCategoryView StatusLast Update
0014100ScribusStory Editor / Text Framespublic2016-12-08 22:04
ReporterKunda Assigned To 
PrioritynormalSeveritycrashReproducibilityalways
Status newResolutionopen 
PlatformMacOSXOSYosemiteOS Version10.10.5
Product Version1.5.3.svn 
Target Version1.5.4Fixed in Version 
Summary0014100: text frame with frame break that is subsequently linked will in certain condition cause a crash
Descriptionedge case because text linking is not used the way it's been intended

backtrace is attached
Steps To Reproduce1) create textframe
2) enter some text
3) Insert > Spaces & Breaks > Frame Break
4) create separate new text frame,
5) link text frame 1 with text frame 2
6) in text frame 2, type a single letter
Result: Viewport jumps to the top left of the cavas
7) type more letters
Result: viewport goes back to previous state
8) delete letters back to 1 letter
Result: Viewport jumps to the top left of the canvas
9) repeat steps 6-8 a few times
Result: Crash
TagsNo tags attached.
PatchNo

Relationships

related to 0002297 closedKunda chained text frames contain wrong glyphs/text 
has duplicate 0014102 closedjghali Crash while editing 

Activities

Kunda

2016-05-26 17:05

manager  

bt.txt (9,109 bytes)
Process 25166 stopped
* thread #1: tid = 0x54c79, 0x000000000000004f, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x4f)
    frame #0: 0x000000000000004f
error: memory read failed for 0x0
(lldb) bt
* thread #1: tid = 0x54c79, 0x000000000000004f, queue = 'com.apple.main-thread', stop reason = EXC_BAD_ACCESS (code=1, address=0x4f)
  * frame #0: 0x000000000000004f
    frame #1: 0x0000000100109343 Scribus`Style::validate() const + 51
    frame #2: 0x00000001004552ae Scribus`CharStyle::backColor() const + 14
    frame #3: 0x000000010080f5bf Scribus`LineBox::drawBackGround(TextLayoutPainter*) const + 197
    frame #4: 0x000000010080f1d2 Scribus`LineBox::render(TextLayoutPainter*, PageItem*) const + 108
    frame #5: 0x000000010080e912 Scribus`GroupBox::render(TextLayoutPainter*, PageItem*) const + 164
    frame #6: 0x000000010080e912 Scribus`GroupBox::render(TextLayoutPainter*, PageItem*) const + 164
    frame #7: 0x000000010081f42e Scribus`TextLayout::render(TextLayoutPainter*, PageItem*) + 50
    frame #8: 0x00000001001f9a33 Scribus`PageItem_TextFrame::DrawObj_Item(ScPainter*, QRectF) + 6551
    frame #9: 0x00000001001930bf Scribus`PageItem::DrawObj(ScPainter*, QRectF) + 371
    frame #10: 0x00000001000a3b62 Scribus`Canvas::DrawPageItems(ScPainter*, ScLayer&, QRect, bool) + 1386
    frame #11: 0x00000001000a101a Scribus`Canvas::drawContents(QPainter*, int, int, int, int) + 2302
    frame #12: 0x00000001000a060d Scribus`Canvas::fillBuffer(QPaintDevice*, QPoint, QRect) + 167
    frame #13: 0x00000001000a13e6 Scribus`Canvas::paintEvent(QPaintEvent*) + 482
    frame #14: 0x00000001023b4291 QtWidgets`QWidget::event(QEvent*) + 2129
    frame #15: 0x0000000102374b76 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294
    frame #16: 0x00000001023774c0 QtWidgets`QApplication::notify(QObject*, QEvent*) + 5648
    frame #17: 0x000000010381c3f4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
    frame #18: 0x00000001023add84 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 3412
    frame #19: 0x00000001023ae558 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 1192
    frame #20: 0x00000001023ae023 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 4083
    frame #21: 0x00000001023ae558 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 1192
    frame #22: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #23: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #24: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #25: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #26: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #27: 0x00000001023ae023 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 4083
    frame #28: 0x00000001023ae558 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 1192
    frame #29: 0x00000001023ae023 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 4083
    frame #30: 0x00000001023ae558 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 1192
    frame #31: 0x00000001023ae023 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 4083
    frame #32: 0x00000001023ae558 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 1192
    frame #33: 0x00000001023ae023 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 4083
    frame #34: 0x00000001023ae558 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 1192
    frame #35: 0x00000001023ae023 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 4083
    frame #36: 0x00000001023ae558 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 1192
    frame #37: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #38: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #39: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #40: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #41: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #42: 0x00000001023ae3e6 QtWidgets`QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 822
    frame #43: 0x00000001023ae023 QtWidgets`QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) + 4083
    frame #44: 0x0000000102382511 QtWidgets`QWidgetBackingStore::doSync() + 5281
    frame #45: 0x00000001023b44bd QtWidgets`QWidget::event(QEvent*) + 2685
    frame #46: 0x00000001024bd07f QtWidgets`QMainWindow::event(QEvent*) + 1743
    frame #47: 0x0000000102374b76 QtWidgets`QApplicationPrivate::notify_helper(QObject*, QEvent*) + 294
    frame #48: 0x00000001023774c0 QtWidgets`QApplication::notify(QObject*, QEvent*) + 5648
    frame #49: 0x000000010381c3f4 QtCore`QCoreApplication::notifyInternal2(QObject*, QEvent*) + 164
    frame #50: 0x000000010381d014 QtCore`QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 596
    frame #51: 0x0000000108770bae libqcocoa.dylib`QCocoaEventDispatcherPrivate::processPostedEvents() + 190
    frame #52: 0x0000000108771481 libqcocoa.dylib`QCocoaEventDispatcherPrivate::postedEventsSourceCallback(void*) + 33
    frame #53: 0x00007fff8f876a01 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
    frame #54: 0x00007fff8f868b8d CoreFoundation`__CFRunLoopDoSources0 + 269
    frame #55: 0x00007fff8f8681bf CoreFoundation`__CFRunLoopRun + 927
    frame #56: 0x00007fff8f867bd8 CoreFoundation`CFRunLoopRunSpecific + 296
    frame #57: 0x00007fff8404056f HIToolbox`RunCurrentEventLoopInMode + 235
    frame #58: 0x00007fff840402ea HIToolbox`ReceiveNextEventCommon + 431
    frame #59: 0x00007fff8404012b HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 71
    frame #60: 0x00007fff848c08ab AppKit`_DPSNextEvent + 978
    frame #61: 0x00007fff848bfe58 AppKit`-[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 346
    frame #62: 0x00007fff848b5af3 AppKit`-[NSApplication run] + 594
    frame #63: 0x000000010877037f libqcocoa.dylib`QCocoaEventDispatcher::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 2191
    frame #64: 0x00000001038187a1 QtCore`QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 401
    frame #65: 0x000000010381ca65 QtCore`QCoreApplication::exec() + 341
    frame #66: 0x00000001007fc89c Scribus`mainApp(int, char**) + 105
    frame #67: 0x00007fff8c8115c9 libdyld.dylib`start + 1
    frame #68: 0x00007fff8c8115c9 libdyld.dylib`start + 1
bt.txt (9,109 bytes)

Kunda

2016-05-26 17:07

manager   ~0041462

Crash was caused when I tried to incorrectly reproduce 0002297

Kunda

2016-05-29 01:14

manager   ~0041502

Peter, please see if you can reproduce this crash. Thanks!

PeterBenedek

2016-05-30 06:41

developer  

01.gif (345,220 bytes)
01.gif (345,220 bytes)

PeterBenedek

2016-05-30 06:48

developer  

02.gif (429,276 bytes)
02.gif (429,276 bytes)

PeterBenedek

2016-05-30 07:21

developer  

03.gif (220,515 bytes)
03.gif (220,515 bytes)

PeterBenedek

2016-05-30 07:31

developer  

04.gif (866,963 bytes)
04.gif (866,963 bytes)

PeterBenedek

2016-05-30 07:33

developer  

00_crash.gif (233,800 bytes)
00_crash.gif (233,800 bytes)

PeterBenedek

2016-05-30 07:33

developer   ~0041564

Last edited: 2016-05-30 07:40

View 3 revisions

Tested Ubuntu 16.04; r21360

I can reproduce this (00.gif)


... and even some error!

1) Write 10 characters the first frame, and insert "Frame Break" after 5 characters.
- Second frame not updated, until the first frame edited. (01.gif)

2) Click the Second frame, first character. Press Backspace.
- Cursor It is the wrong place for the first frame (02.gif)

3) Backspace and Del button inversely works the first frame after last character
- Backspace: Deleted the Frame Break
- Delete: Deleted the first character the second frame (and not Frame Break)
- 7×del before 1×Backspace (03.gif)

4) Insert some character the first frame and 2×"Frame Break"
- Second Frame Break arrow outside the second TextFrame (04.gif)

PeterBenedek

2016-05-30 08:00

developer   ~0041565

(gdb) bt
#0 0x00007ffff2c18418 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:54
0000001 0x00007ffff2c1a01a in __GI_abort () at abort.c:89
0000002 0x00007ffff2c10bd7 in __assert_fail_base (fmt=<optimized out>, assertion=assertion@entry=0x5555568dd23b "pos <= length()",
    file=file@entry=0x5555568dd1b8 "/build/scribus-trunk-Lkj06u/scribus-trunk-1.5.2svn~r21360~20160528~ppa54~ubuntu16.04.1/scribus/text/storytext.cpp", line=line@entry=929, function=function@entry=0x5555568ddaa0 "const ParagraphStyle& StoryText::paragraphStyle(int) const") at assert.c:92
0000003 0x00007ffff2c10c82 in __GI___assert_fail (assertion=0x5555568dd23b "pos <= length()", file=0x5555568dd1b8 "/build/scribus-trunk-Lkj06u/scribus-trunk-1.5.2svn~r21360~20160528~ppa54~ubuntu16.04.1/scribus/text/storytext.cpp", line=929, function=0x5555568ddaa0 "const ParagraphStyle& StoryText::paragraphStyle(int) const") at assert.c:101
0000004 0x00005555565d4797 in StoryText::paragraphStyle(int) const ()
0000005 0x00005555565de350 in TextLayout::renderBackground(TextLayoutPainter*) ()
0000006 0x0000555555cfff56 in PageItem_TextFrame::DrawObj_Item(ScPainter*, QRectF) ()
0000007 0x0000555555c62e4b in PageItem::DrawObj(ScPainter*, QRectF) ()
0000008 0x0000555555af9997 in Canvas::DrawPageItems(ScPainter*, ScLayer&, QRect, bool) ()
0000009 0x0000555555af6adb in Canvas::drawContents(QPainter*, int, int, int, int) ()
0000010 0x0000555555af5b44 in Canvas::fillBuffer(QPaintDevice*, QPoint, QRect) ()
0000011 0x0000555555af5c99 in Canvas::paintEvent(QPaintEvent*) ()
0000012 0x00007ffff4562f88 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000013 0x00007ffff452005c in QApplicationPrivate::notify_helper(QObject*, QEvent*) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000014 0x00007ffff4525516 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000015 0x00007ffff3ad362b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
0000016 0x00007ffff455ba79 in QWidgetPrivate::sendPaintEvent(QRegion const&) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000017 0x00007ffff455c0c1 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000018 0x00007ffff452d856 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000019 0x00007ffff452da8c in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000020 0x00007ffff454bc1f in QWidgetPrivate::syncBackingStore() () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000021 0x00007ffff4562d88 in QWidget::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000022 0x00007ffff4678d8b in QMainWindow::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000023 0x00007ffff452005c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000024 0x00007ffff4525516 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
0000025 0x00007ffff3ad362b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
0000026 0x00007ffff3ad5a26 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
0000027 0x00007ffff3b29673 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
0000028 0x00007fffee00e127 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
0000029 0x00007fffee00e380 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
0000030 0x00007fffee00e42c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
0000031 0x00007ffff3b29a7f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
0000032 0x00007ffff3ad0dea in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
0000033 0x00007ffff3ad8e8c in QCoreApplication::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
0000034 0x000055555659b396 in mainApp(int, char**) ()
0000035 0x000055555659b2ff in main ()

Issue History

Date Modified Username Field Change
2016-05-26 17:05 Kunda New Issue
2016-05-26 17:05 Kunda File Added: bt.txt
2016-05-26 17:05 Kunda Issue generated from: 0002297
2016-05-26 17:05 Kunda Relationship added related to 0002297
2016-05-26 17:07 Kunda Note Added: 0041462
2016-05-27 09:18 jghali Relationship added has duplicate 0014102
2016-05-29 01:14 Kunda Note Added: 0041502
2016-05-30 06:41 PeterBenedek File Added: 01.gif
2016-05-30 06:48 PeterBenedek File Added: 02.gif
2016-05-30 07:21 PeterBenedek File Added: 03.gif
2016-05-30 07:31 PeterBenedek File Added: 04.gif
2016-05-30 07:33 PeterBenedek File Added: 00_crash.gif
2016-05-30 07:33 PeterBenedek Note Added: 0041564
2016-05-30 07:34 PeterBenedek Note Edited: 0041564 View Revisions
2016-05-30 07:40 PeterBenedek Note Edited: 0041564 View Revisions
2016-05-30 08:00 PeterBenedek Note Added: 0041565
2016-12-08 22:04 Kunda Target Version 1.5.3 => 1.5.4