Bug 165421

Summary: kompare sometimes crashes on save
Product: [Applications] kompare Reporter: Paul van Erk <parena>
Component: generalAssignee: Kevin Kofler <kevin.kofler>
Severity: crash CC: esigra, faure, kde2, kevin.kofler, kojot350, parena, reavertm
Priority: NOR    
Version: 3.5   
Target Milestone: ---   
Platform: OpenSUSE   
OS: Linux   
Latest Commit: Version Fixed In:
Attachments: backtrace
valgrind log
Backtrace of "crash on save case"
valgrind log of "crash on close" case

Description Paul van Erk 2008-06-30 14:57:33 UTC
Version:           3.5.1 (using KDE 4.0.83)
Installed from:    SuSE RPMs
OS:                Linux

Short description says it all: kompare sometimes crashes when saving. I haven't pinned down what it comes to to reproduce it, really. After a few attempts it did work. Different files, sometimes it works straight away, sometimes it crashes once, twice, 3 times, before a successful attempt. This is happening in 3.5.1 (KDE4 beta2). I was comparing 2 local files, but is has happened as well when the source was a file on a sshfs mounted fs and the target was local. Here's the output from the crash handler:

Application: Kompare (kompare), signal SIGSEGV
[?1034h[Thread debugging using libthread_db enabled]
[New Thread 0x7f5b4ca6b700 (LWP 20068)]
[New Thread 0x40cf4950 (LWP 20070)]
[KCrash handler]
#5  0x00007f5b46c1c998 in QX11Info::screen () from /usr/lib64/libQtGui.so.4
#6  0x00007f5b46c14c6d in QWidgetPrivate::create_sys ()
   from /usr/lib64/libQtGui.so.4
#7  0x00007f5b46be667c in QWidget::create () from /usr/lib64/libQtGui.so.4
#8  0x00007f5b46be7b6f in QWidget::winId () from /usr/lib64/libQtGui.so.4
#9  0x00007f5b4adb7495 in KIO::SchedulerPrivate::registerWindow ()
   from /usr/lib64/libkio.so.5
#10 0x00007f5b4adbd384 in KIO::Scheduler::registerWindow ()
   from /usr/lib64/libkio.so.5
#11 0x00007f5b4ada7f69 in KIO::NetAccess::filecopyInternal ()
   from /usr/lib64/libkio.so.5
#12 0x00007f5b4ada8fdb in KIO::NetAccess::upload () from /usr/lib64/libkio.so.5
#13 0x00007f5b4c47877c in Diff2::KompareModelList::saveDestination ()
   from /usr/lib64/libkomparediff2.so.4
#14 0x00007f5b4c478ef6 in Diff2::KompareModelList::saveAll ()
   from /usr/lib64/libkomparediff2.so.4
#15 0x00007f5b41784d10 in KomparePart::queryClose ()
   from /usr/lib64/kde4/libkomparepart.so
#16 0x00007f5b4bd0fd74 in KMainWindow::closeEvent ()
   from /usr/lib64/libkdeui.so.5
#17 0x00007f5b46bebd77 in QWidget::event () from /usr/lib64/libQtGui.so.4
#18 0x00007f5b46eb70fb in QMainWindow::event () from /usr/lib64/libQtGui.so.4
#19 0x00007f5b4bd487f8 in KXmlGuiWindow::event () from /usr/lib64/libkdeui.so.5
#20 0x00007f5b46b9f92d in QApplicationPrivate::notify_helper ()
   from /usr/lib64/libQtGui.so.4
#21 0x00007f5b46ba5cfa in QApplication::notify () from /usr/lib64/libQtGui.so.4
#22 0x00007f5b4bc61d9b in KApplication::notify () from /usr/lib64/libkdeui.so.5
#23 0x00007f5b499cae9c in QCoreApplication::notifyInternal ()
   from /usr/lib64/libQtCore.so.4
#24 0x00007f5b46bec872 in QWidgetPrivate::close_helper ()
   from /usr/lib64/libQtGui.so.4
#25 0x00007f5b46bf0be5 in QApplication::x11ClientMessage ()
   from /usr/lib64/libQtGui.so.4
#26 0x00007f5b46bfc831 in QApplication::x11ProcessEvent ()
   from /usr/lib64/libQtGui.so.4
#27 0x00007f5b46c2057c in ?? () from /usr/lib64/libQtGui.so.4
#28 0x00007f5b499c97f2 in QEventLoop::processEvents ()
   from /usr/lib64/libQtCore.so.4
#29 0x00007f5b499c9985 in QEventLoop::exec () from /usr/lib64/libQtCore.so.4
#30 0x00007f5b499cba25 in QCoreApplication::exec ()
   from /usr/lib64/libQtCore.so.4
#31 0x000000000040a41d in main ()
#0  0x00007f5b453af261 in nanosleep () from /lib64/libc.so.6
Comment 1 Kevin Kofler 2008-06-30 15:25:57 UTC
Hmmm, the backtrace here is interesting. This may be related to Qt 4.4's alien widgets. What apparently happens is that Kompare calls KIO::NetAccess::upload, which is expected to handle all the uploading and return only when done. However, KIO::SchedulerPrivate::registerWindow requests a winId for a widget, which in turn causes the widget to be instantiated (by QWidget::create), and there we hit a segfault in X11-specific code. Unfortunately, the backtrace doesn't tell me more, so I'm not sure what exactly causes this.
Comment 2 Paul van Erk 2008-06-30 15:35:06 UTC
Okay, that doesn't help me much, really, since I am not developing for KDE, but I get the idea, I think. I've heard much grumpiness about Nvidia and 2D, maybe that has something to do with it since you mentioned X11, I'm using a GT7600GT with the official nvidia driver.
Comment 3 Winfried Dobbe 2008-06-30 20:15:35 UTC
In KDE3 I have noticed unexpected behaviour with KIO::NetAccess several times. Problem was always solved by using the asynchronous KIO functions. Since then I'm avoiding NetAccess.
Comment 4 Paul van Erk 2008-07-01 08:37:04 UTC
I'm not sure this is related to this bug: it's about the KDE4 version (KDE3 kompare gives me no problems at all) and I was comparing local files.
Comment 5 Kevin Kofler 2008-07-01 10:37:21 UTC
And avoiding the function without understanding what the actual problem is is the wrong solution anyway. If the library is buggy, the library should be fixed, if the bug is in Kompare, Kompare should be fixed, but hacking around the bug is the wrong thing to do.
Comment 6 Paul van Erk 2008-08-22 08:54:22 UTC
Any progress with this one? It's a very annoying bug. Running 4.1 now from Suse and the problem is still there. It's the only reason I have KDE3's version installed because of this, but all my other apps are 4.1 already. Did another trace today, but it's identical to the one I posted in the description.

Someone... help me... Must... remove... all... kde3... :)
Comment 7 Paul van Erk 2008-09-12 15:31:30 UTC
Sorry for posting _again_. I'm just hoping this will get fixed soon. KDE 4.1.1 (openSUSE Factory) and it's still broken. Any news on this?

If it's Qt related, maybe it will be fixed with Qt 4.4.1, just like the printing dialog bug. I sure hope the openSUSE KDE devs will go to Qt 4.4.1 soon, it's been out for a few moths already.
Comment 8 Kevin Kofler 2008-11-02 15:18:22 UTC
I think this is a KIO bug, reassigning. Please bounce back if you think otherwise.
Comment 9 Paul van Erk 2008-11-05 21:29:32 UTC
I'm not sure what that means 100%, but there is no KIO slave or anything involved. New test with 2 files test1.txt and test2.txt with just some random lines, put into /tmp. First attempt: change saved, no crash. Second attempt: change not saved, crash. Running 4.1.3 from openSUSE Factory (but it's always been crashing on me). I also started over with a new KDE4 profile, but no dice. Just tell me if I need to send this to the openSUSE KDE team instead of you guys. New backtrace in an attachment.
Comment 10 Paul van Erk 2008-11-05 21:30:11 UTC
Created attachment 28346 [details]
Comment 11 Kevin Kofler 2008-11-05 22:23:33 UTC
kio_file is also an ioslave. Most KIO-enabled apps use KIO for all accesses, including local files. This crash is within functions of the KIO::NetAccess namespace, which is why I suspect a KIO bug. It could also be a bug in Qt or Kompare though, it's hard to tell (see also my incomplete analysis in comment #1).

I don't think this is openSUSE-specific in any case, so I believe this is the correct place to report it.
Comment 12 David Faure 2008-11-06 00:48:38 UTC
The crash is in KIO, but obviously it's just calling methods on the QWidget* window provided by the call. Either that widget is invalid, or indeed the alien widget thing breaks, but all this is hard to investigate without a full debug-enabled backtrace (or valgrind log).
Comment 13 Dario Andres 2008-12-04 22:27:21 UTC
*** Bug 174923 has been marked as a duplicate of this bug. ***
Comment 14 Kevin Kofler 2008-12-11 03:17:14 UTC
*** Bug 177452 has been marked as a duplicate of this bug. ***
Comment 15 Maciej Mrozowski 2008-12-11 11:13:36 UTC
David - check my backtrace in bug #177452, it shows at the end:

#10 0x00007f1b791cc180 in KIO::Scheduler::registerWindow (wid=0xbe5950) at
#11 0x00007f1b7914e752 in KIO::JobUiDelegate::setWindow (this=0xe0d260,
Comment 16 David Faure 2008-12-13 02:57:04 UTC
Please run kompare in valgrind so that we know why this crashes. My guess is that the widget being given to NetAccess::upload() was deleted already...
Comment 17 Paul van Erk 2008-12-13 20:29:37 UTC
Okay, I'll attach a valgrind log. Note: kompare does not seem to crash when using valgrind, or is this caught _by_ valgrind?
Comment 18 Paul van Erk 2008-12-13 20:30:49 UTC
Created attachment 29303 [details]
valgrind log

valgrind --leak-check=full --show-reachable=yes /usr/bin/kompare test test2
Comment 19 Kevin Kofler 2009-01-18 10:39:28 UTC
Well, I'll reassign it to me as David Faure thinks this is not a bug in KIO and is probably right.
Comment 20 Kevin Kofler 2009-01-18 10:39:59 UTC
*** Bug 181148 has been marked as a duplicate of this bug. ***
Comment 21 Paweł Prażak 2009-01-18 11:48:01 UTC
Created attachment 30377 [details]
Backtrace of "crash on save case"

1. Open two files
2. Apply some change
3. Save
Comment 22 Paweł Prażak 2009-01-18 11:53:25 UTC
I think there is another bug (related or unrelated): "crash on exit"
sometimes when you do:
1. open two files
2. apply change
3. save
it didn't crash
and when you follow with
4. close
5. click save on "save changes?" dialog
it crash

I'll try to attach valgrind log and backtrace

btw. some version info
openSUSE 11.1 x86_64
Qt: 4.4.3
KDE: 4.1.96 (KDE 4.1.96 (KDE 4.2 RC1)) "release 78.1"
Plasma Workspace: 0.3
x11-video-nvidiaG02, Version: 180.22-4.1
Comment 23 Kevin Kofler 2009-01-18 11:55:52 UTC
That would be bug 174924 (which I just reopened).
Comment 24 Paweł Prażak 2009-01-18 11:59:31 UTC
Created attachment 30378 [details]
valgrind log of "crash on close" case

when i run it trough valgrind it doesn't crash
Comment 25 Paweł Prażak 2009-01-18 12:04:57 UTC
I've done another backtrace of "crash on save", there's something new here

Starting program: /usr/bin/kompare test1.txt test2.txt
[Thread debugging using libthread_db enabled]         
[New Thread 0x7fffeba7b950 (LWP 22034)]               
X Error: RenderBadPicture (invalid Picture parameter) 179
  Extension:    154 (RENDER)                             
  Minor opcode: 7 (RenderFreePicture)                    
  Resource id:  0x614b60                                 

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff4fd9ffd in QWidget::palette() const () from /usr/lib64/libQtGui.so.4
(gdb) bt                                                                       
#0  0x00007ffff4fd9ffd in QWidget::palette() const () from /usr/lib64/libQtGui.so.4
#1  0x00007ffff50136ff in QWidgetPrivate::updateSystemBackground() () from /usr/lib64/libQtGui.so.4
Comment 26 Paweł Prażak 2009-01-18 12:12:06 UTC
this one is different too, it crash on QRegion::isEmpty

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff50c70b0 in QRegion::isEmpty() const () from /usr/lib64/libQtGui.so.4

and some details on KIO:
(gdb) bt full                                                                                                                         
#0  0x00007ffff50c70b0 in QRegion::isEmpty() const () from /usr/lib64/libQtGui.so.4                                                   
No symbol table info available.                                                                                                       
#1  0x00007ffff5016492 in QWidgetPrivate::create_sys(unsigned long, bool, bool) () from /usr/lib64/libQtGui.so.4                      
No symbol table info available.                                                                                                       
#2  0x00007ffff4fdf0fa in QWidget::create(unsigned long, bool, bool) () from /usr/lib64/libQtGui.so.4                                 
No symbol table info available.                                                                                                       
#3  0x00007ffff4fdf8ff in QWidget::winId() const () from /usr/lib64/libQtGui.so.4                                                     
No symbol table info available.                                                                                                       
#4  0x00007ffff67f5fc5 in KIO::SchedulerPrivate::registerWindow (this=0xee3b80, wid=<value optimized out>)                            
    at /usr/src/debug/kdelibs-4.1.96/kio/kio/scheduler.cpp:1018                                                                       
        windowId = <value optimized out>                                                                                              
        window = (struct QWidget *) 0x7b2fc0                                                                                          
#5  0x00007ffff67e6a59 in KIO::NetAccess::filecopyInternal (this=0x7fffffffbbd0, src=@0x7fffffffbbf0, target=@0x7fffffffbca0, permissions=-1, flags=
      {i = -17392}, window=0x7b2fc0, move=false) at /usr/src/debug/kdelibs-4.1.96/kio/kio/netaccess.cpp:320                                         
No locals.                                                                                                                                          
#6  0x00007ffff67e7aeb in KIO::NetAccess::upload (src=@0x7fffffffbd40, target=@0x7fffffffbca0, window=0x7b2fc0)                                     
    at /usr/src/debug/kdelibs-4.1.96/kio/kio/netaccess.cpp:142                                                                                      
        kioNet = {<> = {<No data fields>}, static staticMetaObject = {d = {superdata = 0x7ffff4730260, stringdata = 0x7ffff68bd620 "KIO::NetAccess", 
      data = 0x7ffff68bd720, extradata = 0x0}}, d = 0xee62a0}                                                                                        
        s = {<QUrl> = {d = 0x99a0f0}, d = 0x0}                                                                                                       
#7  0x00007ffff79c9a0d in Diff2::KompareModelList::saveDestination(Diff2::DiffModel*) () from /usr/lib64/libkomparediff2.so.4                        
No symbol table info available.
Comment 27 Maciej Mrozowski 2009-01-19 19:19:06 UTC
This backtrace one is the most often for me:

Application: Kompare (kompare), signal SIGSEGV
0x00007f0d0de80df1 in nanosleep () from /lib/libc.so.6
[Current thread is 0 (LWP 32058)]

Thread 2 (Thread 0x7f0d05ec7950 (LWP 32059)):
#0  0x00007f0d0deb7b62 in select () from /lib/libc.so.6
#1  0x00007f0d0e5636a9 in ?? () from /usr/lib64/qt4/libQtCore.so.4
#2  0x00007f0d0e4aac04 in ?? () from /usr/lib64/qt4/libQtCore.so.4
#3  0x00007f0d0d1ec3da in start_thread () from /lib/libpthread.so.0
#4  0x00007f0d0debf42d in clone () from /lib/libc.so.6
#5  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f0d11000750 (LWP 32058)):
[KCrash Handler]
#5  0x00007f0d0eeeea70 in QX11Info::screen () from /usr/lib64/qt4/libQtGui.so.4
#6  0x00007f0d0eee72d0 in QWidgetPrivate::create_sys () from /usr/lib64/qt4/libQtGui.so.4
#7  0x00007f0d0eeb746a in QWidget::create () from /usr/lib64/qt4/libQtGui.so.4
#8  0x00007f0d0eeb7b9f in QWidget::winId () from /usr/lib64/qt4/libQtGui.so.4
#9  0x00007f0d0ff46de2 in KIO::SchedulerPrivate::registerWindow (this=0x1bc7390, wid=0x1a56da0) at /var/tmp/portage/kde-base/kdelibs-9999/work/kdelibs-9999/kio/kio/scheduler.cpp:1018
#10 0x00007f0d0ff477f4 in KIO::Scheduler::registerWindow (wid=0x1a56da0) at /var/tmp/portage/kde-base/kdelibs-9999/work/kdelibs-9999/kio/kio/scheduler.cpp:301
#11 0x00007f0d0fec9422 in KIO::JobUiDelegate::setWindow (this=0x1bf7c00, window=0x1a56da0) at /var/tmp/portage/kde-base/kdelibs-9999/work/kdelibs-9999/kio/kio/jobuidelegate.cpp:58
#12 0x00007f0d0ff37681 in KIO::NetAccess::filecopyInternal (this=0x7fff19033680, src=@0x7fff19033670, target=@0x7fff19033a00, permissions=-1, flags={i = 419641008}, window=0x1a56da0, move=false)
    at /var/tmp/portage/kde-base/kdelibs-9999/work/kdelibs-9999/kio/kio/netaccess.cpp:320
#13 0x00007f0d0ff37f5d in KIO::NetAccess::upload (src=@0x7fff19033a10, target=@0x7fff19033a00, window=0x1a56da0) at /var/tmp/portage/kde-base/kdelibs-9999/work/kdelibs-9999/kio/kio/netaccess.cpp:142
#14 0x00007f0d06d39e0c in Diff2::KompareModelList::saveDestination (this=0x1a62f70, model=0x1b9b7b0)
    at /var/tmp/portage/kde-base/kompare-9999/work/kompare-9999/kompare/libdiff2/komparemodellist.cpp:388
#15 0x00007f0d06d39fd6 in Diff2::KompareModelList::slotSaveDestination (this=0x1a62f70) at /var/tmp/portage/kde-base/kompare-9999/work/kompare-9999/kompare/libdiff2/komparemodellist.cpp:294
#16 0x00007f0d06d3a345 in Diff2::KompareModelList::qt_metacall (this=0x1a62f70, _c=QMetaObject::InvokeMetaMethod, _id=26, _a=0x7fff19033be0)
    at /var/tmp/portage/kde-base/kompare-9999/work/kompare_build/kompare/libdiff2/komparemodellist.moc:150
#17 0x00007f0d0e592cef in QMetaObject::activate () from /usr/lib64/qt4/libQtCore.so.4
#18 0x00007f0d0ee6b685 in QAction::triggered () from /usr/lib64/qt4/libQtGui.so.4
#19 0x00007f0d0ee6bcf5 in QAction::activate () from /usr/lib64/qt4/libQtGui.so.4
#20 0x00007f0d0f14c30b in ?? () from /usr/lib64/qt4/libQtGui.so.4
#21 0x00007f0d0f14c52f in QAbstractButton::mouseReleaseEvent () from /usr/lib64/qt4/libQtGui.so.4
#22 0x00007f0d0f2000b0 in QToolButton::mouseReleaseEvent () from /usr/lib64/qt4/libQtGui.so.4
#23 0x00007f0d0eeb9861 in QWidget::event () from /usr/lib64/qt4/libQtGui.so.4
#24 0x00007f0d0ee705c5 in QApplicationPrivate::notify_helper () from /usr/lib64/qt4/libQtGui.so.4
#25 0x00007f0d0ee77f00 in QApplication::notify () from /usr/lib64/qt4/libQtGui.so.4
#26 0x00007f0d0f9ac1c0 in KApplication::notify (this=0x7fff19035230, receiver=0x1b0dbd0, event=0x7fff19034530)
    at /var/tmp/portage/kde-base/kdelibs-9999/work/kdelibs-9999/kdeui/kernel/kapplication.cpp:307
#27 0x00007f0d0e580e45 in QCoreApplication::notifyInternal () from /usr/lib64/qt4/libQtCore.so.4
#28 0x00007f0d0ee7698a in QApplicationPrivate::sendMouseEvent () from /usr/lib64/qt4/libQtGui.so.4
#29 0x00007f0d0eed0ff5 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#30 0x00007f0d0eecfb68 in QApplication::x11ProcessEvent () from /usr/lib64/qt4/libQtGui.so.4
#31 0x00007f0d0eef284b in ?? () from /usr/lib64/qt4/libQtGui.so.4
#32 0x00007f0d0afdb156 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#33 0x00007f0d0afde345 in ?? () from /usr/lib/libglib-2.0.so.0
#34 0x00007f0d0afde557 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#35 0x00007f0d0e5a4f49 in QEventDispatcherGlib::processEvents () from /usr/lib64/qt4/libQtCore.so.4
#36 0x00007f0d0eef20f6 in ?? () from /usr/lib64/qt4/libQtGui.so.4
#37 0x00007f0d0e57faf4 in QEventLoop::processEvents () from /usr/lib64/qt4/libQtCore.so.4
#38 0x00007f0d0e57fc72 in QEventLoop::exec () from /usr/lib64/qt4/libQtCore.so.4
#39 0x00007f0d0e581bef in QCoreApplication::exec () from /usr/lib64/qt4/libQtCore.so.4
#40 0x000000000040b983 in main (argc=3, argv=0x7fff19035c88) at /var/tmp/portage/kde-base/kompare-9999/work/kompare-9999/kompare/main.cpp:233

Comment 28 Maciej Mrozowski 2009-01-19 20:32:01 UTC
This bug has been reproduced by me in trunk (for quite long time).
Comment 29 Kevin Kofler 2009-01-20 02:45:01 UTC
Confirming. It's pretty obvious from the feedback that this bug is valid. :-)
Comment 30 Otto Bruggeman 2009-02-18 22:34:20 UTC
SVN commit 928082 by bruggie:

BUG: 165421 Actually give a QWidget* wehn asked for one and not cast a QObject* to a QWidget*, that does not work...
BUG: 174924 Most likely fixed as well due to removing the "delete this" which is pure evil
BUG: 103651 A missing KGlobal::deref() seems to have caused kompare to stay around without visible windows.
BUG: 102800 Same for this one, due to the missing deref kompare never fully quit and the session was saved and restored on next login.

Many many cleanups and many dialog created on the heap are not created on the stack whereever possible.
Updated most headers with the updated copyright year and a new email address.

Next time i'll try to split it up in seperate commits.

 M  +34 -30    kompare_shell.cpp  
 M  +7 -3      komparenavtreepart/komparenavtreepart.cpp  
 M  +9 -9      komparepart/kompare_part.cpp  
 M  +2 -2      komparepart/kompare_part.h  
 M  +3 -0      komparepart/kompareconnectwidget.cpp  
 M  +36 -16    komparepart/komparelistview.cpp  
 M  +12 -1     komparepart/komparelistview.h  
 M  +1 -3      kompareurldialog.cpp  
 M  +3 -1      libdiff2/difference.cpp  
 M  +5 -2      libdiff2/difference.h  
 M  +2 -1      libdiff2/diffhunk.cpp  
 M  +2 -2      libdiff2/diffhunk.h  
 M  +4 -29     libdiff2/diffmodel.cpp  
 M  +3 -6      libdiff2/diffmodel.h  
 M  +1 -1      libdiff2/diffmodellist.cpp  
 M  +4 -2      libdiff2/diffmodellist.h  
 M  +28 -25    libdiff2/komparemodellist.cpp  
 M  +3 -1      libdiff2/komparemodellist.h  
 M  +2 -1      libdiff2/kompareprocess.cpp  
 M  +5 -1      libdiff2/parserbase.cpp  
 M  +22 -27    main.cpp  

WebSVN link: http://websvn.kde.org/?view=rev&revision=928082
Comment 31 Paul van Erk 2009-02-18 22:58:27 UTC
Cool. Thanks a lot! It's the only KDE3 app I still use. Well, Amarok 1.4 as well, but with this bug fixed would mean I can get rid of kde3-sdk. :) So, will these fixes be in 4.2.1? Thanks again!
Comment 32 Kevin Kofler 2009-02-18 23:02:11 UTC
I'll backport all of bruggie's bugfixes as well as my Qt 4.5 fix ASAP, it should make it into 4.2.1.
Comment 33 Kevin Kofler 2009-02-19 01:17:33 UTC
SVN commit 928150 by kkofler:

Mass backport of Kompare bugfixes for KDE 4.2.1 (should not touch any translatable strings): backport revisions 913308, 913309, 922431 (Kompare only), 924527, 924539, 924540, 924880, 924959, 924960, 925266, 926028, 926131, 926143, 926225, 928082 (minus i18n string changes), 928141, 928146 from trunk.
CCBUG: 176804
CCBUG: 169692
CCBUG: 182792
CCBUG: 176797
CCBUG: 175251
CCBUG: 75794
CCBUG: 89781
CCBUG: 145956
CCBUG: 107489
CCBUG: 165421
CCBUG: 174924
CCBUG: 103651
CCBUG: 102800
CCMAIL: bruggie@gmail.com

Bump Kompare version from 3.5.2 to 3.5.3 (trunk is 4.0.0).

Tested on Fedora 9 i386, KDE 4.2.0.

Note: skipped revision 926198 because it introduces a string and #124121 is more a user error than a bug anyway.

 M  +34 -30    kompare_shell.cpp  
 M  +18 -3     komparenavtreepart/komparenavtreepart.cpp  
 M  +15 -12    komparepart/kompare_part.cpp  
 M  +2 -2      komparepart/kompare_part.h  
 M  +9 -6      komparepart/kompareconnectwidget.cpp  
 M  +80 -31    komparepart/komparelistview.cpp  
 M  +26 -5     komparepart/komparelistview.h  
 M  +2 -2      komparepart/kompareprefdlg.cpp  
 M  +4 -1      komparepart/kompareprefdlg.h  
 M  +1 -1      komparepart/komparesplitter.cpp  
 M  +2 -1      libdialogpages/diffpage.cpp  
 M  +4 -3      libdialogpages/diffpage.h  
 M  +14 -4     libdialogpages/filespage.cpp  
 M  +4 -4      libdialogpages/filespage.h  
 M  +10 -8     libdiff2/difference.cpp  
 M  +5 -2      libdiff2/difference.h  
 M  +2 -1      libdiff2/diffhunk.cpp  
 M  +2 -2      libdiff2/diffhunk.h  
 M  +5 -30     libdiff2/diffmodel.cpp  
 M  +3 -6      libdiff2/diffmodel.h  
 M  +1 -1      libdiff2/diffmodellist.cpp  
 M  +4 -2      libdiff2/diffmodellist.h  
 M  +34 -31    libdiff2/komparemodellist.cpp  
 M  +3 -1      libdiff2/komparemodellist.h  
 M  +2 -1      libdiff2/kompareprocess.cpp  
 M  +53 -17    libdiff2/levenshteintable.cpp  
 M  +5 -1      libdiff2/parserbase.cpp  
 M  +21 -26    main.cpp  

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