https://bugs.kde.org/show_bug.cgi?id=440958

            Bug ID: 440958
           Summary: ASAN heap-use-after-free on Search Actions bar.
           Product: krita
           Version: git master (please specify the git hash!)
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: General
          Assignee: [email protected]
          Reporter: [email protected]
  Target Milestone: ---

SUMMARY
When trying a search in the Search Actions bar (ctrl+enter) in an ASAN build,
ASAN forces a crash:

=================================================================
==2832662==ERROR: AddressSanitizer: heap-use-after-free on address
0x608001275b44 at pc 0x7ff203b66480 bp 0x7ffdad789050 sp 0x7ffdad7887f8
READ of size 50 at 0x608001275b44 thread T0
    #0 0x7ff203b6647f  (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x9b47f)
    #1 0x7ff1fdd31dda in QString::QString(QChar const*, int)
(/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x14fdda)
    #2 0x7ff1fdd3a70d in QStringRef::toString() const
(/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x15870d)
    #3 0x7ff1faaa4b2a in CommandBarFilterModel::filterAcceptsRow(int,
QModelIndex const&) const
/home/wolthera/krita/src/libs/widgetutils/katecommandbar.cpp:60
    #4 0x7ff1fde65d5a  (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x283d5a)
    #5 0x7ff1fde697da in QSortFilterProxyModel::columnCount(QModelIndex const&)
const (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2877da)
    #6 0x7ff1febfb27d in QHeaderView::initializeSections()
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x3f827d)
    #7 0x7ff1febff3ad in QHeaderView::reset()
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x3fc3ad)
    #8 0x7ff1febea8b0  (/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x3e78b0)
    #9 0x7ff1fdecd7af  (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2eb7af)
    #10 0x7ff1fde38a50 in
QAbstractItemModel::modelReset(QAbstractItemModel::QPrivateSignal)
(/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x256a50)
    #11 0x7ff1faaa214b in CommandBarFilterModel::setFilterString(QString
const&) /home/wolthera/krita/src/libs/widgetutils/katecommandbar.cpp:40
    #12 0x7ff1faaa29f1 in QtPrivate::FunctorCall<QtPrivate::IndexesList<0>,
QtPrivate::List<QString const&>, void, void (CommandBarFilterModel::*)(QString
const&)>::call(void (CommandBarFilterModel::*)(QString const&),
CommandBarFilterModel*, void**)
/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:152
    #13 0x7ff1faaa29f1 in void QtPrivate::FunctionPointer<void
(CommandBarFilterModel::*)(QString const&)>::call<QtPrivate::List<QString
const&>, void>(void (CommandBarFilterModel::*)(QString const&),
CommandBarFilterModel*, void**)
/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:185
    #14 0x7ff1faaa29f1 in QtPrivate::QSlotObject<void
(CommandBarFilterModel::*)(QString const&), QtPrivate::List<QString const&>,
void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*)
/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:418
    #15 0x7ff1faaa29f1 in QtPrivate::QSlotObject<void
(CommandBarFilterModel::*)(QString const&), QtPrivate::List<QString const&>,
void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*)
/usr/include/x86_64-linux-gnu/qt5/QtCore/qobjectdefs_impl.h:411
    #16 0x7ff1fdecd77d  (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2eb77d)
    #17 0x7ff1feabb995 in QLineEdit::textChanged(QString const&)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x2b8995)
    #18 0x7ff1feac22ba  (/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x2bf2ba)
    #19 0x7ff1fdecd7af  (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2eb7af)
    #20 0x7ff1feac2e68 in QWidgetLineControl::textChanged(QString const&)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x2bfe68)
    #21 0x7ff1feac675c in QWidgetLineControl::finishChange(int, bool, bool)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x2c375c)
    #22 0x7ff1feac94aa in QWidgetLineControl::processKeyEvent(QKeyEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x2c64aa)
    #23 0x7ff1feabba9e in QLineEdit::keyPressEvent(QKeyEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x2b8a9e)
    #24 0x7ff1fe9b41b4 in QWidget::event(QEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1b11b4)
    #25 0x7ff1feac1b11 in QLineEdit::event(QEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x2beb11)
    #26 0x7ff1fe970dc2 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x16ddc2)
    #27 0x7ff1fe97a365 in QApplication::notify(QObject*, QEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x177365)
    #28 0x7ff202dfb3b4 in KisApplication::notify(QObject*, QEvent*)
/home/wolthera/krita/src/libs/ui/KisApplication.cpp:703
    #29 0x7ff1fde96759 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b4759)
    #30 0x7ff1fe9d228d  (/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x1cf28d)
    #31 0x7ff1fe970dc2 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x16ddc2)
    #32 0x7ff1fe979bb7 in QApplication::notify(QObject*, QEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5+0x176bb7)
    #33 0x7ff202dfb3b4 in KisApplication::notify(QObject*, QEvent*)
/home/wolthera/krita/src/libs/ui/KisApplication.cpp:703
    #34 0x7ff1fde96759 in QCoreApplication::notifyInternal2(QObject*, QEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b4759)
    #35 0x7ff1fe27695a in
QGuiApplicationPrivate::processKeyEvent(QWindowSystemInterfacePrivate::KeyEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5+0x13c95a)
    #36 0x7ff1fe27bb3a in
QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*)
(/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5+0x141b3a)
    #37 0x7ff1fe2537ab in
QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>)
(/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5+0x1197ab)
    #38 0x7ff1f279ae7d  (/usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5+0x77e7d)
    #39 0x7ff1f911917c in g_main_context_dispatch
(/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x5217c)
    #40 0x7ff1f91193ff  (/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x523ff)
    #41 0x7ff1f91194a2 in g_main_context_iteration
(/usr/lib/x86_64-linux-gnu/libglib-2.0.so.0+0x524a2)
    #42 0x7ff1fdef0fb1 in
QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>)
(/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x30efb1)
    #43 0x7ff1fde9525a in
QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>)
(/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2b325a)
    #44 0x7ff1fde9d413 in QCoreApplication::exec()
(/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2bb413)
    #45 0x559bb82612b7 in main /home/wolthera/krita/src/krita/main.cc:677
    #46 0x7ff1fd8180b2 in __libc_start_main
(/lib/x86_64-linux-gnu/libc.so.6+0x270b2)
    #47 0x559bb82648ad in _start (/home/wolthera/krita/inst/bin/krita+0x1c8ad)

0x608001275b44 is located 36 bytes inside of 88-byte region
[0x608001275b20,0x608001275b78)
freed by thread T0 here:
    #0 0x7ff203bd87cf in __interceptor_free
(/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10d7cf)
    #1 0x7ff1fdedff4d  (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x2fdf4d)
    #2 0x7ff1fde65d5a  (/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0x283d5a)

previously allocated by thread T0 here:
    #0 0x7ff203bd8bc8 in malloc
(/usr/lib/x86_64-linux-gnu/libasan.so.5+0x10dbc8)
    #1 0x7ff1fdcbb690 in QArrayData::allocate(unsigned long, unsigned long,
unsigned long, QFlags<QArrayData::AllocationOption>)
(/usr/lib/x86_64-linux-gnu/libQt5Core.so.5+0xd9690)

SUMMARY: AddressSanitizer: heap-use-after-free
(/usr/lib/x86_64-linux-gnu/libasan.so.5+0x9b47f) 
Shadow bytes around the buggy address:
  0x0c1080246b10: fa fa fa fa 00 00 00 00 00 00 00 00 00 00 00 fa
  0x0c1080246b20: fa fa fa fa 00 00 00 00 00 00 00 00 00 00 00 fa
  0x0c1080246b30: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c1080246b40: fa fa fa fa 00 00 00 00 00 00 00 00 00 00 00 fa
  0x0c1080246b50: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c1080246b60: fa fa fa fa fd fd fd fd[fd]fd fd fd fd fd fd fa
  0x0c1080246b70: fa fa fa fa 00 00 00 00 00 00 00 00 00 00 00 fa
  0x0c1080246b80: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c1080246b90: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c1080246ba0: fa fa fa fa 00 00 00 00 00 00 00 00 00 00 00 fa
  0x0c1080246bb0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
  Shadow gap:              cc
==2832662==ABORTING

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to