Bug 17946

Summary: Segmentation fault on empty desktop.
Product: Sisyphus Reporter: Ivan A. Melnikov <iv>
Component: kkbswitchAssignee: Nobody's working on this, feel free to take it <nobody>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P2    
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
патч, исправляющий ошибку none

Description Ivan A. Melnikov 2008-11-20 12:57:31 MSK
Created attachment 3073 [details]
патч, исправляющий ошибку

Регулярно и очень давно у меня падал kkbswitch. Недавно удалось получить последовательность действий, стабильно воспроизводящих ошибку на как минимум двух машинах на Сизифе, на одной из них - на двух системах (i586 и x86_64).

На других машинах это воспроизвести не всегда удается. Чтобы воспроизвести:

- выключите отображение иконок на рабочем столе KDE
- завершите сеанс и войдите снова
- на пустом рабочем столе запустите любое окно (например нажатием Alt-F2 окно запуска программы)
- закройте окно
- смените раскладку

При смене раскладки появится окно kcrashhandler со следующим отчётом.

(no debugging symbols found)
Using host libthread_db library "/lib64/libthread_db.so.1".
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread 140442066069344 (LWP 18518)]
[KCrash handler]
#5  0x00007fbb35ec0c05 in QRegion::boundingRect ()
   from /usr/lib64/libqt-mt.so.3
#6  0x00007fbb35ec93db in QPaintEvent::QPaintEvent ()
   from /usr/lib64/libqt-mt.so.3
#7  0x00007fbb35ec5418 in QWidget::repaint () from /usr/lib64/libqt-mt.so.3
#8  0x00007fbb35ee70aa in QApplication::sendPostedEvents ()
   from /usr/lib64/libqt-mt.so.3
#9  0x00007fbb35eaf242 in QEventLoop::processEvents ()
   from /usr/lib64/libqt-mt.so.3
#10 0x00007fbb35ef5dcb in QEventLoop::enterLoop ()
   from /usr/lib64/libqt-mt.so.3
#11 0x00007fbb35ef5cde in QEventLoop::exec () from /usr/lib64/libqt-mt.so.3
#12 0x0000000000415d46 in ?? ()
#13 0x00007fbb350b37a6 in __libc_start_main () from /lib64/libc.so.6
#14 0x000000000040f649 in QWidget::setUpdatesEnabled ()
#15 0x00007fff3f787cd8 in ?? ()
#16 0x000000000000001c in ?? ()
#17 0x0000000000000007 in ?? ()
#18 0x00007fff3f78889f in ?? ()
#19 0x00007fff3f7888a9 in ?? ()
#20 0x00007fff3f7888b2 in ?? ()
#21 0x00007fff3f7888bc in ?? ()
#22 0x00007fff3f7888c2 in ?? ()
#23 0x00007fff3f7888d6 in ?? ()
#24 0x00007fff3f7888e0 in ?? ()
#25 0x0000000000000000 in ?? ()

$ rpm -qa kkbswitch
kkbswitch-1.4.3-alt6

Приложеный патч, похоже, решает эту проблему для меня.
Comment 1 Sergey V Turchin 2008-11-20 13:47:46 MSK
(In reply to comment #0)
> Приложеный патч, похоже, решает эту проблему для меня.
Там же remove не происходит. Это точно не решение.

Comment 2 Sergey V Turchin 2008-11-20 14:42:19 MSK
(In reply to comment #1)
> Там же remove не происходит. Это точно не решение.
Извиняюсь, торможу

Comment 3 Ivan A. Melnikov 2008-11-20 14:47:01 MSK
(In reply to comment #2)
> (In reply to comment #1)
> > Там же remove не происходит. Это точно не решение.
> Извиняюсь, торможу
> 

Пока писал длинный комментарий (пропавший из-за нажатия не той кнопке в багзилле после конфликта доступа) ещё раз посмотрел в сорцы и мне показалось, что корректнее будет просто после удаления вызвать reset(). Этот вариант не проверял.

Зато вариант kkbswitch с приложеным выше патчем работает на 2-х машинах уже часа 3 и пока зарекомендовал себя хорошо.
Comment 4 Sergey V Turchin 2008-11-20 14:56:05 MSK
Приложил
kkbswitch-1.4.3-alt7
Comment 5 Ivan A. Melnikov 2008-11-21 14:39:11 MSK
(In reply to comment #4)
> Приложил
> kkbswitch-1.4.3-alt7
> 

Спасибо!