Segfault при наборе текста по клавише Backspace

Bug #674862 reported by kovyrlo
26
This bug affects 4 people
Affects Status Importance Assigned to Milestone
qutim
Fix Released
High
Unassigned

Bug Description

Ситуация возникает только если введенных символов больше одного.

версия qt: 4.7.1

bt
--------------------------------------------------------------------
Program received signal SIGSEGV, Segmentation fault.
0x00007ffff5bbbfb0 in QTextLayout::lineCount() const () from /usr/lib64/qt4/libQtGui.so.4
(gdb) bt
#0 0x00007ffff5bbbfb0 in QTextLayout::lineCount() const () from /usr/lib64/qt4/libQtGui.so.4
#1 0x00007ffff5c168ec in ?? () from /usr/lib64/qt4/libQtGui.so.4
#2 0x00007ffff5c1a08c in ?? () from /usr/lib64/qt4/libQtGui.so.4
#3 0x00007ffff5c1cb01 in QTextCursor::movePosition(QTextCursor::MoveOperation, QTextCursor::MoveMode, int) () from /usr/lib64/qt4/libQtGui.so.4
#4 0x000000000051a0eb in GeneralWindow::smileParser (this=0xf28280, smiler=0xf28438)
    at /home/test/tmp/portage/net-im/qutim-0.2.9999/work/qutim-0.2.9999/src/corelayers/chat/generalwindow.cpp:742
#5 0x00000000004f1d25 in ChatWindow::on_chatInputEdit_textChanged (this=0xf28280)
    at /home/test/tmp/portage/net-im/qutim-0.2.9999/work/qutim-0.2.9999/src/corelayers/chat/chatforms/chatwindow.cpp:424
#6 0x00000000005b8785 in ChatWindow::qt_metacall (this=0xf28280, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0x7fffffffb420)
    at /home/test/tmp/portage/net-im/qutim-0.2.9999/work/qutim-0.2.9999/src/corelayers/chat/chatforms/moc_chatwindow.cxx:88
#7 0x00007ffff4e17f71 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4
#8 0x00007ffff5df902d in QTextEdit::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib64/qt4/libQtGui.so.4
#9 0x00007ffff4e17f71 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4
#10 0x00007ffff5ba521d in QTextControl::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib64/qt4/libQtGui.so.4
#11 0x00007ffff4e17f71 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/qt4/libQtCore.so.4
#12 0x00007ffff5bec958 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#13 0x00007ffff5beee83 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#14 0x00007ffff5bef056 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#15 0x00007ffff5c175b5 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#16 0x00007ffff5c1d415 in QTextCursor::deletePreviousChar() () from /usr/lib64/qt4/libQtGui.so.4
#17 0x00007ffff5ba77ee in ?? () from /usr/lib64/qt4/libQtGui.so.4
#18 0x00007ffff5bab2bc in QTextControl::processEvent(QEvent*, QMatrix const&, QWidget*) () from /usr/lib64/qt4/libQtGui.so.4
#19 0x00007ffff5ba02ca in QTextControl::processEvent(QEvent*, QPointF const&, QWidget*) () from /usr/lib64/qt4/libQtGui.so.4
#20 0x00007ffff5dfaf9c in ?? () from /usr/lib64/qt4/libQtGui.so.4
#21 0x00007ffff5dfa6ad in QTextEdit::keyPressEvent(QKeyEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#22 0x00007ffff591d58e in QWidget::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#23 0x00007ffff5d72836 in QFrame::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#24 0x00007ffff5e10dcb in QAbstractScrollArea::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#25 0x00007ffff5dfa815 in QTextEdit::event(QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#26 0x00007ffff58bc03e in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#27 0x00007ffff58c32a4 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#28 0x00007ffff4df9c2b in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/qt4/libQtCore.so.4
#29 0x00007ffff597ee03 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#30 0x00007ffff59814c2 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#31 0x00007ffff5955284 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/qt4/libQtGui.so.4
#32 0x00007ffff5985472 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#33 0x00007ffff2fa98ab in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#34 0x00007ffff2fada30 in ?? () from /usr/lib/libglib-2.0.so.0
#35 0x00007ffff2fadbdc in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#36 0x00007ffff4e2e323 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#37 0x00007ffff5984df0 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#38 0x00007ffff4df8562 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#39 0x00007ffff4df8947 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/qt4/libQtCore.so.4
#40 0x00007ffff4dfd4eb in QCoreApplication::exec() () from /usr/lib64/qt4/libQtCore.so.4
#41 0x000000000048b7ed in main (argc=1, argv=0x7fffffffdb88) at /home/test/tmp/portage/net-im/qutim-0.2.9999/work/qutim-0.2.9999/main.cpp:133
--------------------------------------------------------------------

Revision history for this message
XiFF (tmp-nolty) wrote :

+1

Gentoo

Наблюдаю аналогичную ошибку дома и на работе.
версия qt: 4.7.1

net-im/qutim-0.2.9999 собран из git 2010-11-15

Revision history for this message
GDX (gdx) wrote :

+1

Arch

Наблюдаю аналогичную ошибку дома и на работе.
qt 4.7.1-1

qutim-0.2-git 20101118-1

Revision history for this message
Aleksey Sidorov (aleksey.sidorov) wrote :

Установите кто может debug символы Qt

Revision history for this message
Vitaliy Burovoy (burovoy-va) wrote :

Судя по всему, в QTextCursorPrivate::blockLayout передаётся block, у которого нет layout

852 QTextLayout *QTextCursorPrivate::blockLayout(QTextBlock &block) const{
853 QTextLayout *tl = block.layout();
854 if (!tl->lineCount() && priv->layout())
855 priv->layout()->blockBoundingRect(block);
856 return tl;
857 }

tl = 0, и - segfault.

Revision history for this message
kovyrlo (kovyrlo) wrote :

Собрал qt c debug, потом снова пересобрал qutim, на мой взгляд мало что изменилось

Revision history for this message
Aleksey Sidorov (aleksey.sidorov) wrote :

Ересь какая-то. Я надеюсь вы теперь понимаете, почему я так не хочу поддерживать 0.2 ветку? Баги там править ужасно мучительно ввиду адски кривого кода. Кстати, в ванильная 0.2.0 падает?

Revision history for this message
kovyrlo (kovyrlo) wrote :

Отчего ж не понять ... Зачем нужна старая 0.2, если есть новая 0.3 )
0.2.0 из портажей не падает. Вот как ебилды напишут для 0.3.9999 так и пересядем ... А то времени не хватает (как и ответственного за ебилды) чтобы разбираться в них =)

Revision history for this message
Aleksey Sidorov (aleksey.sidorov) wrote :

Тогда все претензии к человеку, который написал нам патч для смайлов в поле ввода. Соответственно пока или на 0.2.0 сидеть нужно или же на 0.3 переезжать.
Ебилды есть в оверлее
http://www.qutim.org/forum/viewtopic.php?f=20&t=102

Revision history for this message
kovyrlo (kovyrlo) wrote :

Спасибо, оверлей у меня подключен, только обновлялся он последний раз 5го октября, поэтому приходится ставить наполовину руками) Но таки перешел ...

Revision history for this message
GDX (gdx) wrote :

Очень хочется перейти на 0.3, но тот факт что она убивает GDM через некоторое время, несколько этому мешает. Также и без прокси не очень удобно.

Revision history for this message
proDOOMman (prodoomman) wrote :

>она убивает GDM
O_O Как???

Revision history for this message
GDX (gdx) wrote :

>Как???
В настройки например, захожу или просто сообщение набираю, и неожиданно экран черный и через некоторое время просит ввести логин пароль для входа в систему.
Я бы с удовольствием как то помог выяснить из за чего это происходит но к сожалению не знаю как отследить что случается с системой в этот момент.

Revision history for this message
Aleksey Sidorov (aleksey.sidorov) wrote :

Но это явно не кутим виноват, подозрения падают на кривой видеодрайвер

Revision history for this message
GDX (gdx) wrote :

Так без 0.3 все работает дня по три непрерывно. Стоит 0.3 запустить как система крашится. А так спасибо за совет на стабильной версии 0.2.0 все работает замечательно.

Revision history for this message
RapteR (rapter) wrote :

GDX, компиз?

Revision history for this message
GDX (gdx) wrote :

metacity
компиз даже не установлен

Revision history for this message
GDX (gdx) wrote :

Вот все таки смог выудить кое какую информацию выкладываю логи.
Извиняюсь, что не создаю новый баг, но не представляю как это сделать.

Revision history for this message
GDX (gdx) wrote :

Также лог Xorg

Revision history for this message
GDX (gdx) wrote :

qutim-0.3-git-20101114-1-x86_64

Revision history for this message
RapteR (rapter) wrote :

Ну вот
<unknown>: Fatal IO error 104 (Соединение сброшено другой стороной) on X server :0.0.
и
[142899.377] 3: /usr/lib/xorg/modules/libfb.so (fbCopyNtoN+0x66) [0x7f50749f9446]
наводит на мысли, что он при дисконнекте пытается показать всплывающее уведомление, но по каким то причинам давится. Кстати, а если поотключать всякие уведомлялки и плагины "конекшен чек" (не знаю есть ли такое в 0.3)?

А еще в интернетах нагуглилось:
"Погуглил долго, оказалось, что проблем таких немало и проблема старая, а решения совсем нет и не предвидится smiling smiley glesx.so - модуль в составе драйвера видеокарты ATI"

Так что для надежности можно попробовать выкинуть ATI-шную карточку и поюзать что ни будь менее кривое.

Revision history for this message
GDX (gdx) wrote :

>Кстати, а если поотключать всякие уведомлялки и плагины "конекшен чек" (не знаю есть ли такое в 0.3)?
Именно когда я захожу в настройки с целью посмотреть на эти плагины и случается такая неприятность.
А уведомления насчет отключен от сети подключен пришло сообщения показываются нормально.
На неделе если время будет опробую собрать без плагинов, проверю.
А карточку выкидывать как то не хочется, я ей полностью доволен, никаких проблем кроме как с qutim 0.3 еще не было, на протяжении 2 лет использования.

Revision history for this message
Aleksey Sidorov (aleksey.sidorov) wrote :

Рискну предположить, что сегфолт происходит из за отсутствия нормально работающего openGL'я в системе. Хотя Кутим им почти не пользуется и может совсем без него обходится, но всё же к примеру попапы требуют композитного режима для своей работы. Лучше выкинуть kineticnotifications и заменить тогда на dbusnotifications

Revision history for this message
proDOOMman (prodoomman) wrote :

Прикольно. Наткнулся на аналогичную багу в eiskaltdcpp: http://code.google.com/p/eiskaltdc/issues/detail?id=824
Вот их вариант фикса: https://github.com/negativ/eiskaltdcpp/commit/877211912d7f329bcda899ce144865674447b883

Revision history for this message
Aleksey Sidorov (aleksey.sidorov) wrote :

Что-то я боюсь их фикса... Оо оно же костыльное

Revision history for this message
kovyrlo (kovyrlo) wrote :

Я тут вернулся на 0.2, и начал жизнь с нового профиля, добавил акки, и забыл про баг, начал набивать сообщения, пользоваться бекспейсом... всё работало. Но после перезапуска кутима, всё пришло в норму. На всякий случай backtrace.

Revision history for this message
proDOOMman (prodoomman) wrote :

>Что-то я боюсь их фикса... Оо оно же костыльное
Но тем не менее ошибку исправляет

Revision history for this message
Aleksey Sidorov (aleksey.sidorov) wrote :

Ну оформите мерж реквест на гиториусе, я добавлю. Костылем больше, костылем меньше, всё равно там в коде полярный зверь поселился

Revision history for this message
proDOOMman (prodoomman) wrote :

Фикс готов:
http://gitorious.org/qutim/qutim/merge_requests/10
Теперь дело за малым - надо закоммитить реквест и забыть этот баг как страшный сон

Revision history for this message
Aleksey Sidorov (aleksey.sidorov) wrote :

Fixed

Changed in qutim:
status: New → Fix Committed
importance: Undecided → High
Changed in qutim:
milestone: none → 0.3b
Changed in qutim:
milestone: 0.3b → none
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.