Bug 193028

Summary: lokalize crashes when PO file deleted from project
Product: [Applications] lokalize Reporter: Viesturs Zarins <viesturs.zarins>
Component: generalAssignee: Nick Shaforostoff <shafff>
Status: RESOLVED FIXED    
Severity: crash    
Priority: NOR    
Version First Reported In: unspecified   
Target Milestone: ---   
Platform: unspecified   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:
Attachments: path to fix the crash.

Description Viesturs Zarins 2009-05-17 18:52:38 UTC
Version:            (using KDE 4.2.85)
OS:                Linux
Installed from:    Unlisted Binary Package

Steps to reproduce:
make a project that has a PO file without corresponding POT file.

open a project
wait for stats to load
open a branch in project to see the file.
delete a PO file that is visible in project.
crash.

I will investigate this.

call trace:

Application: Lokalize (lokalize), signal: Segmentation fault
[Current thread is 0 (LWP 6724)]

Thread 3 (Thread 0xb4236b90 (LWP 6725)):
#0  0xb8010424 in __kernel_vsyscall ()
#1  0xb66f2945 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb6750442 in QWaitCondition::wait () from /usr/lib/libQtCore.so.4
#3  0xb78b0b40 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned () from /usr/lib/libthreadweaver.so.4
#4  0xb78b31ec in ThreadWeaver::WorkingHardState::waitForAvailableJob () from /usr/lib/libthreadweaver.so.4
#5  0xb78af1db in ThreadWeaver::WeaverImpl::waitForAvailableJob () from /usr/lib/libthreadweaver.so.4
#6  0xb78b32ea in ThreadWeaver::WorkingHardState::applyForWork () from /usr/lib/libthreadweaver.so.4
#7  0xb78b0dd3 in ThreadWeaver::WeaverImpl::applyForWork () from /usr/lib/libthreadweaver.so.4
#8  0xb78b13de in ThreadWeaver::ThreadRunHelper::run () from /usr/lib/libthreadweaver.so.4
#9  0xb78b19fb in ThreadWeaver::Thread::run () from /usr/lib/libthreadweaver.so.4
#10 0xb674f40e in ?? () from /usr/lib/libQtCore.so.4
#11 0xb66ee4c5 in start_thread () from /lib/libpthread.so.0
#12 0xb653af9e in clone () from /lib/libc.so.6

Thread 2 (Thread 0xb311ab90 (LWP 6728)):
#0  0xb8010424 in __kernel_vsyscall ()
#1  0xb66f2945 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb6750442 in QWaitCondition::wait () from /usr/lib/libQtCore.so.4
#3  0xb78b0b40 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned () from /usr/lib/libthreadweaver.so.4
#4  0xb78b31ec in ThreadWeaver::WorkingHardState::waitForAvailableJob () from /usr/lib/libthreadweaver.so.4
#5  0xb78af1db in ThreadWeaver::WeaverImpl::waitForAvailableJob () from /usr/lib/libthreadweaver.so.4
#6  0xb78b32ea in ThreadWeaver::WorkingHardState::applyForWork () from /usr/lib/libthreadweaver.so.4
#7  0xb78b0dd3 in ThreadWeaver::WeaverImpl::applyForWork () from /usr/lib/libthreadweaver.so.4
#8  0xb78b13de in ThreadWeaver::ThreadRunHelper::run () from /usr/lib/libthreadweaver.so.4
#9  0xb78b19fb in ThreadWeaver::Thread::run () from /usr/lib/libthreadweaver.so.4
#10 0xb674f40e in ?? () from /usr/lib/libQtCore.so.4
#11 0xb66ee4c5 in start_thread () from /lib/libpthread.so.0
#12 0xb653af9e in clone () from /lib/libc.so.6

Thread 1 (Thread 0xb5c42710 (LWP 6724)):
[KCrash Handler]
#6  0xb7dfd418 in KFileItem::isDir () from /usr/lib/libkio.so.5
#7  0x080c4ebe in ProjectModel::data (this=0xa0b7698, index=@0xbfd2a69c, role=6) at /home/koks/Cilveki/Viesturs/projects/KDE/trunk/kdesdk/lokalize/src/project/projectmodel.cpp:600
#8  0xb705319e in QSortFilterProxyModel::data () from /usr/lib/libQtGui.so.4
#9  0xb701a3e7 in QItemDelegate::setOptions () from /usr/lib/libQtGui.so.4
#10 0xb701b9a6 in QItemDelegate::paint () from /usr/lib/libQtGui.so.4
#11 0x080c8218 in PoItemDelegate::paint (this=0xa271eb8, painter=0xbfd2aec8, option=@0xbfd2aaf8, index=@0xbfd2ac54)
    at /home/koks/Cilveki/Viesturs/projects/KDE/trunk/kdesdk/lokalize/src/project/projectwidget.cpp:58
#12 0xb700754b in QTreeView::drawRow () from /usr/lib/libQtGui.so.4
#13 0xb700e277 in QTreeView::drawTree () from /usr/lib/libQtGui.so.4
#14 0xb700eb72 in QTreeView::paintEvent () from /usr/lib/libQtGui.so.4
#15 0xb6aad95e in QWidget::event () from /usr/lib/libQtGui.so.4
#16 0xb6e823d3 in QFrame::event () from /usr/lib/libQtGui.so.4
#17 0xb6f21d2f in QAbstractScrollArea::viewportEvent () from /usr/lib/libQtGui.so.4
#18 0xb6fd33f7 in QAbstractItemView::viewportEvent () from /usr/lib/libQtGui.so.4
#19 0xb700d3c6 in QTreeView::viewportEvent () from /usr/lib/libQtGui.so.4
#20 0xb6f24325 in ?? () from /usr/lib/libQtGui.so.4
#21 0xb684146a in QCoreApplicationPrivate::sendThroughObjectEventFilters () from /usr/lib/libQtCore.so.4
#22 0xb6a576ca in QApplicationPrivate::notify_helper () from /usr/lib/libQtGui.so.4
#23 0xb6a5faa2 in QApplication::notify () from /usr/lib/libQtGui.so.4
#24 0xb7a8ddaa in KApplication::notify () from /usr/lib/libkdeui.so.5
#25 0xb684224b in QCoreApplication::notifyInternal () from /usr/lib/libQtCore.so.4
#26 0xb6a6277e in QCoreApplication::sendSpontaneousEvent () from /usr/lib/libQtGui.so.4
#27 0xb6ab56b9 in QWidgetPrivate::drawWidget () from /usr/lib/libQtGui.so.4
#28 0xb6c6de5f in ?? () from /usr/lib/libQtGui.so.4
#29 0xb6aa62f6 in QWidgetPrivate::syncBackingStore () from /usr/lib/libQtGui.so.4
#30 0xb6aaddc5 in QWidget::event () from /usr/lib/libQtGui.so.4
#31 0xb6e9fab7 in QMainWindow::event () from /usr/lib/libQtGui.so.4
#32 0xb7b74944 in KMainWindow::event () from /usr/lib/libkdeui.so.5
#33 0xb7bbc15f in KXmlGuiWindow::event () from /usr/lib/libkdeui.so.5
#34 0xb6a576ec in QApplicationPrivate::notify_helper () from /usr/lib/libQtGui.so.4
#35 0xb6a5faa2 in QApplication::notify () from /usr/lib/libQtGui.so.4
#36 0xb7a8ddaa in KApplication::notify () from /usr/lib/libkdeui.so.5
#37 0xb684224b in QCoreApplication::notifyInternal () from /usr/lib/libQtCore.so.4
#38 0xb6842e85 in QCoreApplicationPrivate::sendPostedEvents () from /usr/lib/libQtCore.so.4
#39 0xb684307d in QCoreApplication::sendPostedEvents () from /usr/lib/libQtCore.so.4
#40 0xb686dd2f in ?? () from /usr/lib/libQtCore.so.4
#41 0xb6105718 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#42 0xb6108c7b in g_main_context_iterate () from /usr/lib/libglib-2.0.so.0
#43 0xb6108df8 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#44 0xb686d978 in QEventDispatcherGlib::processEvents () from /usr/lib/libQtCore.so.4
#45 0xb6af62a5 in ?? () from /usr/lib/libQtGui.so.4
#46 0xb684087a in QEventLoop::processEvents () from /usr/lib/libQtCore.so.4
#47 0xb6840cba in QEventLoop::exec () from /usr/lib/libQtCore.so.4
#48 0xb6843149 in QCoreApplication::exec () from /usr/lib/libQtCore.so.4
#49 0xb6a57567 in QApplication::exec () from /usr/lib/libQtGui.so.4
#50 0x08071773 in main (argc=1, argv=0xbfd2c484) at /home/koks/Cilveki/Viesturs/projects/KDE/trunk/kdesdk/lokalize/src/main.cpp:109
Comment 1 Viesturs Zarins 2009-05-17 20:42:02 UTC
Created attachment 33775 [details]
path to fix the crash.

This patch fixes the crash.

But the implementation still looses POT folder contents when a PO directory is created or deleted. This is a design issue. Work for 4.4...

Also the patch contains code for hilighting files with no stats (total is zero).
Comment 2 Nick Shaforostoff 2009-05-24 16:15:25 UTC
SVN commit 972296 by shaforo:

BUG:193028



 M  +21 -11    projectmodel.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=972296
Comment 3 Nick Shaforostoff 2009-05-24 16:19:12 UTC
SVN commit 972298 by shaforo:

highlighting files with no stats (total is zero) - patch by Viesturs Zarins
CCBUG:193028



 M  +7 -2      projectwidget.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=972298