Details
-
Bug
-
Resolution: Done
-
P1: Critical
-
4.7.4, 4.8.4, 5.2.0
-
None
-
Windows 7, 64 or 32 bit, Linux
-
27bc4c4ce5f1af8fd06b60c5d06e011001ea3613
Description
QPlainTextEdit crashes when pressing Enter with a text selection and then pressing 'Ctrl-Z'.
To reproduce: run codeeditor demo packaged with Qt.
type in:
line1
line2
Put cursor at start of first line. Press shift-down arrow (a line of text is selected). Press Enter. Press Ctrl-Z. Witness crash.
Thread 1 (Thread 0x7ffff7fd2740 (LWP 7544)): #0 0x00007ffff6e155fb in QVector<QScriptLine>::operator[] (this=0x0, i=0) at ../../include/QtCore/../../src/corelib/tools/qvector.h:369 No locals. #1 0x00007ffff6e2035e in QTextLine::textStart (this=0x7fffffffb8a0) at text/qtextlayout.cpp:1990 No locals. #2 0x00007ffff77e6e73 in QPlainTextEdit::paintEvent (this=0x7fffffffdb80, e=0x7fffffffc5d0) at widgets/qplaintextedit.cpp:1948 o = {start = 1024, length = 0, format = {<QTextFormat> = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff7427ca0, data = 0x7ffff7125fc0, static_metacall = 0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = {d = 0x0}, format_type = 2}, <No data fields>}} l = {index = 0, eng = 0x0} range = @0x696bc8: {cursor = {d = {d = 0x6928a0}}, format = {<QTextFormat> = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff7427ca0, data = 0x7ffff7125fc0, static_metacall = 0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = {d = 0x698d70}, format_type = 2}, <No data fields>}} selStart = 0 selEnd = 0 i = 0 bllen = 6 drawCursor = false drawCursorAsBlock = false blockFormat = {<QTextFormat> = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff7427ca0, data = 0x7ffff7125fc0, static_metacall = 0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = {d = 0x6729e0}, format_type = 1}, <No data fields>} bg = {d = {d = 0x65bc50}} selections = {d = 0x7ffff6be83e0} blpos = 6 r = {xp = 0, yp = 19, w = 243, h = 15} layout = 0x6aa3e0 painter = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff7429520, data = 0x7ffff7126c20, static_metacall = 0, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x688c20}} viewportRect = {x1 = 0, y1 = 0, x2 = 242, y2 = 189} editable = true block = {p = 0x675b50, n = 2} maximumWidth = 37.25 context = {cursorPosition = 6, palette = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff7426120, data = 0x7ffff7124960, static_metacall = 0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x64c930, {data = {current_group = 0, resolve_mask = 0}, for_faster_swapping_dont_use = 0}}, clip = {xp = 0, yp = 0, w = 0, h = 0}, selections = {d = 0x696bb0}} offset = {xp = 0, yp = 19} er = {x1 = 0, y1 = 0, x2 = 239, y2 = 189} maxX = 239 #3 0x00007ffff75ead2f in QWidget::event (this=0x7fffffffdb80, event=0x7fffffffc5d0) at kernel/qwidget.cpp:8098 d = 0x64c510 #4 0x00007ffff7718903 in QFrame::event (this=0x7fffffffdb80, e=0x7fffffffc5d0) at widgets/qframe.cpp:534 result = false #5 0x00007ffff77b583d in QAbstractScrollArea::viewportEvent (this=0x7fffffffdb80, e=0x7fffffffc5d0) at widgets/qabstractscrollarea.cpp:1188 No locals. #6 0x00007ffff77b6a03 in QAbstractScrollAreaPrivate::viewportEvent (this=0x64c510, event=0x7fffffffc5d0) at widgets/qabstractscrollarea_p.h:110 No locals. #7 0x00007ffff77b6aca in QAbstractScrollAreaFilter::eventFilter (this=0x64af60, o=0x64c880, e=0x7fffffffc5d0) at widgets/qabstractscrollarea_p.h:126 No locals. #8 0x00007ffff6702ae4 in QCoreApplicationPrivate::sendThroughObjectEventFilters (this=0x609ea0, receiver=0x64c880, event=0x7fffffffc5d0) at kernel/qcoreapplication.cpp:1033 obj = 0x64af60 i = 0 q = 0x7fffffffdbc0 __PRETTY_FUNCTION__ = "bool QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*)" #9 0x00007ffff759fe8d in QApplicationPrivate::notify_helper (this=0x609ea0, receiver=0x64c880, e=0x7fffffffc5d0) at kernel/qapplication.cpp:3478 consumed = false #10 0x00007ffff759fd18 in QApplication::notify (this=0x7fffffffdbc0, receiver=0x64c880, e=0x7fffffffc5d0) at kernel/qapplication.cpp:3447 d = 0x609ea0 __PRETTY_FUNCTION__ = "virtual bool QApplication::notify(QObject*, QEvent*)" res = false #11 0x00007ffff6702786 in QCoreApplication::notifyInternal (this=0x7fffffffdbc0, receiver=0x64c880, event=0x7fffffffc5d0) at kernel/qcoreapplication.cpp:937 threadData = 0x60a000 loopLevelCounter = {threadData = 0x60a000} result = false cbdata = {0x64c880, 0x7fffffffc5d0, 0x7fffffffc52f} d = 0x6591d0 #12 0x00007ffff75a245d in QCoreApplication::sendSpontaneousEvent (receiver=0x64c880, event=0x7fffffffc5d0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:238 No locals. #13 0x00007ffff75e2bb7 in QWidgetPrivate::drawWidget (this=0x6591d0, pdev=0x6850c0, rgn=..., offset=..., flags=36, sharedPainter=0x0, backingStore=0x6b81d0) at kernel/qwidget.cpp:5138 flushed = false paintEngine = 0x650d80 e = {<QEvent> = {_vptr.QEvent = 0x7ffff740dc10, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6bfd9a0, data = 0x7ffff68f1dc0, static_metacall = 0, relatedMetaObjects = 0x0, extradata = 0x0}}, d = 0x0, t = 12, posted = 0, spont = 1, m_accept = 1, reserved = 0}, m_rect = {x1 = 0, y1 = 0, x2 = 242, y2 = 189}, m_region = {d = 0x65c4c0, static shared_empty = {ref = {_q_value = 36}, qt_rgn = 0x7ffff742b980}}, m_erased = false} asRoot = false q = 0x64c880 alsoOnScreen = false toBePainted = {d = 0x65c4c0, static shared_empty = {ref = {_q_value = 36}, qt_rgn = 0x7ffff742b980}} __PRETTY_FUNCTION__ = "void QWidgetPrivate::drawWidget(QPaintDevice*, const QRegion&, const QPoint&, int, QPainter*, QWidgetBackingStore*)" onScreen = false recursive = true alsoInvisible = false #14 0x00007ffff75aec4d in QWidgetBackingStore::sync (this=0x6b81d0) at kernel/qwidgetbackingstore.cpp:1075 w = 0x64c880 flags = 36 toBePainted = {d = 0x65c4c0, static shared_empty = {ref = {_q_value = 36}, qt_rgn = 0x7ffff742b980}} wd = 0x6591d0 offset = {xp = 12, yp = 1} i = 0 repaintAllWidgets = false inTopLevelResize = false surfaceGeometry = {x1 = 2, y1 = 969, x2 = 257, y2 = 1160} toClean = {d = 0x6b33a0, static shared_empty = {ref = {_q_value = 36}, qt_rgn = 0x7ffff742b980}} tlwExtra = 0x6b4430 opaqueNonOverlappedWidgets = {a = 32, s = 1, ptr = 0x7fffffffca00, {array = "\200\310d\000\000\000\000\000 \312\377\377\377\177\000\000\060\312\377\377\377\177\000\000E\037Z\367\377\177\000\000\001\000\000\000\001\000\000\000`\312\377\377\377\177\000\000p\312\377\377\377\177\000\000\211,Z\367\377\177\000\000`\312\377\377\377\000\000\000L\306d\000\000\000\000\000\001\000\000\000\001\000\000\000\220\312\377\377\377\177\000\000\001\000\000\000\377\177\000\000\220\312\377\377\377\177\000\000\240\312\377\377\377\177\000\000\322,Z\367\377\177\000\000\240\312\377\377\377\177\000\000\200\333\377\377\377\177\000\000\001\000\000\000\000\000\000\000\200\333\377\377\377\177\000\000\300\312\377\377\377\177\000\000\210\333\377\377\377\177\000\000\320\312\377\377\377\177\000\000\315\034Z\367\377\177\000\000\360\312\377\377\377\177\000\000\210\333\377\377\377\177\000\000\360\312\377\377\377\177\000\000\366+Z\367\377\177\000\000\200\333\377\377\377\177\000\000\070Dk\000\000\000\000\000 \313\377\377\377\177\000\000\355\n[\367\377\177\000", q_for_alignment_1 = 6604928, q_for_alignment_2 = 3.2632680180549329e-317}} updatesDisabled = false tlwRect = {x1 = 2, y1 = 969, x2 = 257, y2 = 1160} beginPaintInfo = {wasFlushed = 0, nothingToPaint = 0, backingStoreRecreated = 0} dirtyCopy = {d = 0x694b80, static shared_empty = {ref = {_q_value = 36}, qt_rgn = 0x7ffff742b980}} #15 0x00007ffff75da049 in QWidgetPrivate::syncBackingStore (this=0x64c510) at kernel/qwidget.cpp:1686 bs = 0x6b81d0 #16 0x00007ffff75eb365 in QWidget::event (this=0x7fffffffdb80, event=0x69a4b0) at kernel/qwidget.cpp:8236 d = 0x64c510 #17 0x00007ffff7718903 in QFrame::event (this=0x7fffffffdb80, e=0x69a4b0) at widgets/qframe.cpp:534 result = false #18 0x00007ffff77b576e in QAbstractScrollArea::event (this=0x7fffffffdb80, e=0x69a4b0) at widgets/qabstractscrollarea.cpp:1141 d = 0x64c510 #19 0x00007ffff77e5992 in QPlainTextEdit::event (this=0x7fffffffdb80, e=0x69a4b0) at widgets/qplaintextedit.cpp:1563 d = 0x64c510 #20 0x00007ffff759feb6 in QApplicationPrivate::notify_helper (this=0x609ea0, receiver=0x7fffffffdb80, e=0x69a4b0) at kernel/qapplication.cpp:3482 consumed = false #21 0x00007ffff759fd18 in QApplication::notify (this=0x7fffffffdbc0, receiver=0x7fffffffdb80, e=0x69a4b0) at kernel/qapplication.cpp:3447 d = 0x609ea0 __PRETTY_FUNCTION__ = "virtual bool QApplication::notify(QObject*, QEvent*)" res = false #22 0x00007ffff6702786 in QCoreApplication::notifyInternal (this=0x7fffffffdbc0, receiver=0x7fffffffdb80, event=0x69a4b0) at kernel/qcoreapplication.cpp:937 threadData = 0x60a000 loopLevelCounter = {threadData = 0x60a000} result = false cbdata = {0x7fffffffdb80, 0x69a4b0, 0x7fffffffd7ff} d = 0x64c510 #23 0x00007ffff6706531 in QCoreApplication::sendEvent (receiver=0x7fffffffdb80, event=0x69a4b0) at kernel/qcoreapplication.h:235 No locals. #24 0x00007ffff670389e in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x60a000) at kernel/qcoreapplication.cpp:1541 e = 0x69a4b0 pe = @0x7fffe8003880: {receiver = 0x7fffffffdb80, event = 0x0, priority = -1} r = 0x7fffffffdb80 unlocker = {m = @0x7fffffffd8c0} event_deleter = {d = 0x69a4b0} __PRETTY_FUNCTION__ = "static void QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*)" locker = {val = 6332456} startOffset = 0 i = @0x60a01c: 2 cleanup = {receiver = 0x0, event_type = 0, data = 0x60a000, exceptionCaught = true} #25 0x00007ffff6777b8a in QEventDispatcherUNIX::processEvents (this=0x637f90, flags=...) at kernel/qeventdispatcher_unix.cpp:587 d = 0x65ede0 nevents = -160433580 canWait = false #26 0x00007ffff1249c02 in QUnixEventDispatcherQPA::processEvents (this=0x637f90, flags=...) at eventdispatchers/qunixeventdispatcher.cpp:70 didSendEvents = false #27 0x00007ffff66ff360 in QEventLoop::processEvents (this=0x7fffffffdb00, flags=...) at kernel/qeventloop.cpp:136 d = 0x6aaee0 #28 0x00007ffff66ff639 in QEventLoop::exec (this=0x7fffffffdb00, flags=...) at kernel/qeventloop.cpp:212 locker = {val = 6332656} __PRETTY_FUNCTION__ = "int QEventLoop::exec(QEventLoop::ProcessEventsFlags)" ref = {d = 0x6aaee0, locker = @0x7fffffffda60, exceptionCaught = true} app = 0x7fffffffdbc0 d = 0x6aaee0 #29 0x00007ffff6702e4f in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1190 threadData = 0x60a000 __PRETTY_FUNCTION__ = "static int QCoreApplication::exec()" eventLoop = {<QObject> = {_vptr.QObject = 0x7ffff6be54b0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6bec080, data = 0x7ffff689ff60, static_metacall = 0x7ffff6748130 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x6aaee0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6becaa0, data = 0x7ffff68ebfe0, static_metacall = 0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff6be1d80, stringdata = 0x7ffff6bfd720, data = 0x7ffff68f1b40, static_metacall = 0x7ffff67d4008 <QEventLoop::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} returnCode = 0 #30 0x00007ffff6d067be in QGuiApplication::exec () at kernel/qguiapplication.cpp:1347 No locals. #31 0x00007ffff759cd85 in QApplication::exec () at kernel/qapplication.cpp:2707 No locals. #32 0x0000000000404f6b in main (argv=1, args=0x7fffffffdcd8) at main.cpp:53 app = {<QGuiApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x7ffff7d919b0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6bec080, data = 0x7ffff689ff60, static_metacall = 0x7ffff6748130 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x609ea0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6becaa0, data = 0x7ffff68ebfe0, static_metacall = 0, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff6be1d80, stringdata = 0x7ffff6bfd780, data = 0x7ffff68f1c60, static_metacall = 0x7ffff67d4160 <QCoreApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, static self = 0x7fffffffdbc0}, static staticMetaObject = {d = {superdata = 0x7ffff6be5540, stringdata = 0x7ffff7419b00, data = 0x7ffff70d3e00, static_metacall = 0x7ffff6d0c36e <QGuiApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff740d2e0, stringdata = 0x7ffff7dbd720, data = 0x7ffff79e6900, static_metacall = 0x7ffff75a1752 <QApplication::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}} editor = {<QPlainTextEdit> = {<QAbstractScrollArea> = {<QFrame> = {<QWidget> = {<QObject> = {_vptr.QObject = 0x607b70, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6bec080, data = 0x7ffff689ff60, static_metacall = 0x7ffff6748130 <QObject::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x64c510}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x7ffff6becaa0, data = 0x7ffff68ebfe0, static_metacall = 0, relatedMetaObjects = 0x0, extradata = 0x0}}}, <QPaintDevice> = {_vptr.QPaintDevice = 0x607d68, painters = 0, reserved = 0x0}, static staticMetaObject = {d = {superdata = 0x7ffff6be1d80, stringdata = 0x7ffff7dbdbe0, data = 0x7ffff79ec2a0, static_metacall = 0x7ffff75f0e7c <QWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, data = 0x64c640}, static staticMetaObject = {d = {superdata = 0x7ffff7d92640, stringdata = 0x7ffff7dd4760, data = 0x7ffff7a8ddc0, static_metacall = 0x7ffff79d8f4c <QFrame::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff7dafaa0, stringdata = 0x7ffff7dc6f80, data = 0x7ffff7a0eae0, static_metacall = 0x7ffff77b6506 <QAbstractScrollArea::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff7d9c3e0, stringdata = 0x7ffff7dc7cc0, data = 0x7ffff7a12480, static_metacall = 0x7ffff77e9ae0 <QPlainTextEdit::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x7ffff7d9d020, stringdata = 0x406a20, data = 0x406b20, static_metacall = 0x406550 <CodeEditor::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)>, relatedMetaObjects = 0x0, extradata = 0x0}}, lineNumberArea = 0x652540} Thread 2 (Thread 0x7fffee94d700 (LWP 7547)): #0 0x00007ffff5dfba43 in __GI___poll (fds=<optimized out>, nfds=<optimized out>, timeout=<optimized out>) at ../sysdeps/unix/sysv/linux/poll.c:87 resultvar = <optimized out> oldtype = 0 result = <optimized out> #1 0x00007ffff348d862 in _xcb_conn_wait (c=0x6172b0, cond=<optimized out>, vector=0x0, count=0x0) at ../../src/xcb_conn.c:400 ret = <optimized out> fd = {fd = 5, events = 1, revents = 0} #2 0x00007ffff348f01f in xcb_wait_for_event (c=0x6172b0) at ../../src/xcb_in.c:522 ret = 0x0 #3 0x00007ffff11b747d in QXcbEventReader::run (this=0x628180) at qxcbconnection.cpp:1007 event = 0x0 #4 0x00007ffff64917ba in QThreadPrivate::start (arg=0x628180) at thread/qthread_unix.cpp:345 __clframe = {__cancel_routine = 0x7ffff649183e <QThreadPrivate::finish(void*)>, __cancel_arg = 0x628180, __do_it = 1, __cancel_type = 0} thr = 0x628180 data = 0x6284e0 objectName = {static null = {<No data fields>}, d = 0x7ffff6be83e0} #5 0x00007ffff5afde9a in start_thread (arg=0x7fffee94d700) at pthread_create.c:308 __res = <optimized out> pd = 0x7fffee94d700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {1, 473636257683789085, 140737488343536, 140737196120512, 0, 3, -473603075259706083, -473622377369119459}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = 0 pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #6 0x00007ffff5e073fd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 No locals. #7 0x0000000000000000 in ?? () No symbol table info available.