Bug 109161 - kpanel crashes during start up
Summary: kpanel crashes during start up
Status: RESOLVED FIXED
Alias: None
Product: klipper
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: Esben Mose Hansen
URL:
Keywords:
: 105970 110780 111227 112628 112632 113175 114142 115524 117372 119224 129108 130983 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-07-16 13:14 UTC by Gerry Gavigan
Modified: 2007-01-10 18:57 UTC (History)
14 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments
crash output (5.49 KB, text/plain)
2005-07-16 13:15 UTC, Gerry Gavigan
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Gerry Gavigan 2005-07-16 13:14:02 UTC
Version:            (using KDE KDE 3.4.1)
Installed from:    SuSE RPMs
OS:                Linux

It might be my own fault - running KDE 3.4.1 latest SUSE + stuff, running normally - installed VariCAD from apps - shut down system later 

Now kpanel crashes on start-up (may not be related, however...)

have uninstalled VariCAD and re-installed qt, libs, base etc., from SUSE
Comment 1 Gerry Gavigan 2005-07-16 13:14:53 UTC
have crash file - will up load it as soon as I remember how
Comment 2 Gerry Gavigan 2005-07-16 13:15:49 UTC
Created attachment 11816 [details]
crash output
Comment 3 Thiago Macieira 2005-07-16 14:42:57 UTC
Pasting the crash for easier searching:

[KCrash handler]
#7  0xffffe410 in ?? ()
#8  0xbfffcb68 in ?? ()
#9  0x00000006 in ?? ()
#10 0x000007e4 in ?? ()
#11 0x40f3b2c1 in raise () from /lib/tls/libc.so.6
#12 0x40f3cb75 in abort () from /lib/tls/libc.so.6
#13 0x40eebd95 in std::set_unexpected () from /usr/lib/libstdc++.so.5
#14 0x40eebdd2 in std::terminate () from /usr/lib/libstdc++.so.5
#15 0x40eebf12 in __cxa_throw () from /usr/lib/libstdc++.so.5
#16 0x40eec153 in operator new () from /usr/lib/libstdc++.so.5
#17 0x40eec22d in operator new[] () from /usr/lib/libstdc++.so.5
#18 0x40b67d54 in QString::setLength () from /usr/lib/qt3/lib/libqt-mt.so.3
#19 0x40b70147 in operator>> () from /usr/lib/qt3/lib/libqt-mt.so.3
#20 0x41cdc30a in HistoryItem::create ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#21 0x41ceb05a in KlipperWidget::loadHistory ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#22 0x41ceb3cc in KlipperWidget::readProperties ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#23 0x41ced81d in KlipperWidget::KlipperWidget ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#24 0x41cd83c9 in KlipperAppletWidget::KlipperAppletWidget ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#25 0x41cd8885 in KlipperApplet::KlipperApplet ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#26 0x41cd8a57 in init () from /opt/kde3/lib/kde3/klipper_panelapplet.so
#27 0x417c1e2e in PluginManager::loadApplet ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#28 0x417cd57e in AppletContainer::AppletContainer ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#29 0x417cd9d3 in PluginManager::createAppletContainer ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#30 0x417da4df in ContainerArea::loadContainers ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#31 0x417da724 in ContainerArea::initialize ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#32 0x417da835 in PanelExtension::populateContainerArea ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#33 0x417d8d45 in PanelExtension::qt_invoke ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#34 0x4088120e in QObject::activate_signal ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#35 0x40bd3122 in QSignal::signal () from /usr/lib/qt3/lib/libqt-mt.so.3
#36 0x4089e763 in QSignal::activate () from /usr/lib/qt3/lib/libqt-mt.so.3
#37 0x408a61b3 in QSingleShotTimer::event ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#38 0x4081ea5f in QApplication::internalNotify ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#39 0x40820623 in QApplication::notify () from /usr/lib/qt3/lib/libqt-mt.so.3
#40 0x40568771 in KApplication::notify () from /opt/kde3/lib/libkdecore.so.4
#41 0x4081320c in QEventLoop::activateTimers ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#42 0x407cbff6 in QEventLoop::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#43 0x4083691b in QEventLoop::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#44 0x4082055c in QApplication::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#45 0x40820596 in QApplication::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#46 0x417dd156 in ExtensionManager::initialize ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#47 0x417dd6fa in ExtensionManager::qt_invoke ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#48 0x4088120e in QObject::activate_signal ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#49 0x40bd3122 in QSignal::signal () from /usr/lib/qt3/lib/libqt-mt.so.3
#50 0x4089e763 in QSignal::activate () from /usr/lib/qt3/lib/libqt-mt.so.3
#51 0x408a61b3 in QSingleShotTimer::event ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#52 0x4081ea5f in QApplication::internalNotify ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#53 0x40820623 in QApplication::notify () from /usr/lib/qt3/lib/libqt-mt.so.3
#54 0x40568771 in KApplication::notify () from /opt/kde3/lib/libkdecore.so.4
#55 0x4081320c in QEventLoop::activateTimers ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#56 0x407cbff6 in QEventLoop::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#57 0x408369f1 in QEventLoop::enterLoop () from /usr/lib/qt3/lib/libqt-mt.so.3
#58 0x40836836 in QEventLoop::exec () from /usr/lib/qt3/lib/libqt-mt.so.3
#59 0x408204ef in QApplication::exec () from /usr/lib/qt3/lib/libqt-mt.so.3
#60 0x417e2181 in kdemain () from /opt/kde3/lib/libkdeinit_kicker.so
#61 0x40018554 in kdeinitmain () from /opt/kde3/lib/kde3/kicker.so
#62 0x0804e6f5 in launch ()
#63 0x0804ee0c in handle_launcher_request ()
#64 0x0804f3c9 in handle_requests ()
#65 0x0804fb9a in main ()
Comment 4 Maksim Orlovich 2005-07-16 14:54:52 UTC
Seems like you can workaround by removing ~/.kde/share/apps/klipper/history.lst, but you probably want to save a copy for analysis. 
Comment 5 Gerry Gavigan 2005-07-16 15:45:49 UTC
Thank you for looking at this - I do not have the file ~/.kde/share/apps/klipper/history.lst
gerryg@linux:~>  cd .kde/share/apps/klipper
gerryg@linux:~/.kde/share/apps/klipper> ls
gerryg@linux:~/.kde/share/apps/klipper> ls -al
total 1
drwx------   2 gerryg users   48 2005-01-15 20:57 .
drwxr-xr-x  50 gerryg users 1328 2005-07-07 21:21 ..
gerryg@linux:~/.kde/share/apps/klipper>
Comment 6 Gerry Gavigan 2005-07-16 16:08:17 UTC
Inspired by your suggestion I have determined it is a local user problem - a dummy account I have on my system doesn't exhibit kpanel crashing - Should I close the bug? (Any thoughts would be appreciated though) 
Comment 7 Gerry Gavigan 2005-07-16 16:19:59 UTC
Further inspired by your comments: in kicker, I renamed history.lst history.old
normal service restored - should I post history.old or is this a rubbish bug? 
Comment 8 Maksim Orlovich 2005-07-16 16:37:18 UTC
Doh, I guess you were running klipper as an applet? I would leave the bug open, though the maintainer might disagree with me --- the file got corrupted, and klipper's code is not at all very robust against that. (e.g. konqueror uses checksum to reduce the risk of that). 

As for the file: do not post the file here, however, since it contains your clipboard history and might leak sensitive data --- everything posted here is public, however it might be good to keep it around just in case...

Comment 9 Gerry Gavigan 2005-07-26 11:31:56 UTC
I have managed to crash kpanel/klipper again. It seems to have occurred in exactly the same circumstances.  Having installed some software - this time from packman. 

It looks related to bug 105970, I appended the crash file there.

[KCrash handler]
#7  0xffffe410 in ?? ()
#8  0xbfffcb68 in ?? ()
#9  0x00000006 in ?? ()
#10 0x00001e95 in ?? ()
#11 0x40f3b2c1 in raise () from /lib/tls/libc.so.6
#12 0x40f3cb75 in abort () from /lib/tls/libc.so.6
#13 0x40eebd95 in std::set_unexpected () from /usr/lib/libstdc++.so.5
#14 0x40eebdd2 in std::terminate () from /usr/lib/libstdc++.so.5
#15 0x40eebf12 in __cxa_throw () from /usr/lib/libstdc++.so.5
#16 0x40eec153 in operator new () from /usr/lib/libstdc++.so.5
#17 0x40eec22d in operator new[] () from /usr/lib/libstdc++.so.5
#18 0x40b67d54 in QString::setLength () from /usr/lib/qt3/lib/libqt-mt.so.3
#19 0x40b70147 in operator>> () from /usr/lib/qt3/lib/libqt-mt.so.3
#20 0x41db830a in HistoryItem::create ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#21 0x41dc705a in KlipperWidget::loadHistory ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#22 0x41dc73cc in KlipperWidget::readProperties ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#23 0x41dc981d in KlipperWidget::KlipperWidget ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#24 0x41db43c9 in KlipperAppletWidget::KlipperAppletWidget ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#25 0x41db4885 in KlipperApplet::KlipperApplet ()
   from /opt/kde3/lib/kde3/klipper_panelapplet.so
#26 0x41db4a57 in init () from /opt/kde3/lib/kde3/klipper_panelapplet.so
#27 0x417c1e2e in PluginManager::loadApplet ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#28 0x417cd57e in AppletContainer::AppletContainer ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#29 0x417cd9d3 in PluginManager::createAppletContainer ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#30 0x417da4df in ContainerArea::loadContainers ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#31 0x417da724 in ContainerArea::initialize ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#32 0x417da835 in PanelExtension::populateContainerArea ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#33 0x417d8d45 in PanelExtension::qt_invoke ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#34 0x4088120e in QObject::activate_signal ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#35 0x40bd3122 in QSignal::signal () from /usr/lib/qt3/lib/libqt-mt.so.3
#36 0x4089e763 in QSignal::activate () from /usr/lib/qt3/lib/libqt-mt.so.3
#37 0x408a61b3 in QSingleShotTimer::event ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#38 0x4081ea5f in QApplication::internalNotify ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#39 0x40820623 in QApplication::notify () from /usr/lib/qt3/lib/libqt-mt.so.3
#40 0x40568771 in KApplication::notify () from /opt/kde3/lib/libkdecore.so.4
#41 0x4081320c in QEventLoop::activateTimers ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#42 0x407cbff6 in QEventLoop::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#43 0x4083691b in QEventLoop::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#44 0x4082055c in QApplication::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#45 0x40820596 in QApplication::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#46 0x417dd156 in ExtensionManager::initialize ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#47 0x417dd6fa in ExtensionManager::qt_invoke ()
   from /opt/kde3/lib/libkdeinit_kicker.so
#48 0x4088120e in QObject::activate_signal ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#49 0x40bd3122 in QSignal::signal () from /usr/lib/qt3/lib/libqt-mt.so.3
#50 0x4089e763 in QSignal::activate () from /usr/lib/qt3/lib/libqt-mt.so.3
#51 0x408a61b3 in QSingleShotTimer::event ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#52 0x4081ea5f in QApplication::internalNotify ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#53 0x40820623 in QApplication::notify () from /usr/lib/qt3/lib/libqt-mt.so.3
#54 0x40568771 in KApplication::notify () from /opt/kde3/lib/libkdecore.so.4
#55 0x4081320c in QEventLoop::activateTimers ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#56 0x407cbff6 in QEventLoop::processEvents ()
   from /usr/lib/qt3/lib/libqt-mt.so.3
#57 0x408369f1 in QEventLoop::enterLoop () from /usr/lib/qt3/lib/libqt-mt.so.3
#58 0x40836836 in QEventLoop::exec () from /usr/lib/qt3/lib/libqt-mt.so.3
#59 0x408204ef in QApplication::exec () from /usr/lib/qt3/lib/libqt-mt.so.3
#60 0x417e2181 in kdemain () from /opt/kde3/lib/libkdeinit_kicker.so
#61 0x40018554 in kdeinitmain () from /opt/kde3/lib/kde3/kicker.so
#62 0x0804e6f5 in launch ()
#63 0x0804ee0c in handle_launcher_request ()
#64 0x0804f3c9 in handle_requests ()
#65 0x0804fb9a in main ()
  
Comment 10 Gerry Gavigan 2005-07-26 11:39:53 UTC
panel again restored by deleting history.lst from kicker
Comment 11 Maksim Orlovich 2005-08-21 18:27:44 UTC
*** Bug 105970 has been marked as a duplicate of this bug. ***
Comment 12 Maksim Orlovich 2005-08-21 18:28:33 UTC
*** Bug 111227 has been marked as a duplicate of this bug. ***
Comment 13 Maksim Orlovich 2005-08-21 18:28:55 UTC
*** Bug 110780 has been marked as a duplicate of this bug. ***
Comment 14 Maksim Orlovich 2005-09-16 16:36:15 UTC
*** Bug 112628 has been marked as a duplicate of this bug. ***
Comment 15 Maksim Orlovich 2005-09-16 16:36:33 UTC
*** Bug 112632 has been marked as a duplicate of this bug. ***
Comment 16 Maksim Orlovich 2005-09-24 03:38:25 UTC
*** Bug 113175 has been marked as a duplicate of this bug. ***
Comment 17 Maksim Orlovich 2005-10-09 21:50:05 UTC
*** Bug 114142 has been marked as a duplicate of this bug. ***
Comment 18 Maksim Orlovich 2005-11-02 14:49:52 UTC
*** Bug 115524 has been marked as a duplicate of this bug. ***
Comment 19 Maksim Orlovich 2005-11-30 19:11:54 UTC
*** Bug 117372 has been marked as a duplicate of this bug. ***
Comment 20 Bill 2005-11-30 19:23:03 UTC
(per above) -- Removing this:

    /root/.kde/share/apps/kicker/history.lst

...worked for me!! (and within 10 minutes from my bug post and 3 hours of hair pulling!!).

Thank you VERY much!!

Comment 21 Maksim Orlovich 2005-12-30 17:59:28 UTC
*** Bug 119224 has been marked as a duplicate of this bug. ***
Comment 22 Lubos Lunak 2006-01-30 17:17:50 UTC
SVN commit 503851 by lunakl:

Fix #109161. So many duplicates and not a single vote.
Use a checksum for klipper's history just like is done for konqueror history.
BUG: 109161



 M  +41 -21    toplevel.cpp  
 M  +1 -1      version.h  


--- branches/KDE/3.5/kdebase/klipper/toplevel.cpp #503850:503851
@@ -40,6 +40,7 @@
 #include <kkeydialog.h>
 #include <klocale.h>
 #include <kmessagebox.h>
+#include <ksavefile.h>
 #include <kstandarddirs.h>
 #include <ksimpleconfig.h>
 #include <kstringhandler.h>
@@ -62,6 +63,8 @@
 #include "historystringitem.h"
 #include "klipperpopup.h"
 
+#include <zlib.h>
+
 #include <X11/Xlib.h>
 #include <X11/Xatom.h>
 
@@ -336,38 +339,53 @@
     static const char* const failed_load_warning =
         "Failed to load history resource. Clipboard history cannot be read.";
     // don't use "appdata", klipper is also a kicker applet
-    QString history_file_name = ::locateLocal( "data", "klipper/history.lst" );
-    if ( history_file_name.isNull() || history_file_name.isEmpty() ) {
-        kdWarning() << failed_load_warning << endl;
-        return false;
-    }
+    QString history_file_name = ::locateLocal( "data", "klipper/history2.lst" );
     QFile history_file( history_file_name );
-    if ( !history_file.exists() ) {
-        history_file_name = ::locateLocal( "data", "kicker/history.lst" );
-        if ( history_file_name.isNull() || history_file_name.isEmpty() ) {
-            return false;
-        }
+    bool oldfile = false;
+    if ( !history_file.exists() ) { // backwards compatibility
+        oldfile = true;
+        history_file_name = ::locateLocal( "data", "klipper/history.lst" );
         history_file.setName( history_file_name );
         if ( !history_file.exists() ) {
-            return false;
+            history_file_name = ::locateLocal( "data", "kicker/history.lst" );
+            history_file.setName( history_file_name );
+            if ( !history_file.exists() ) {
+                return false;
+            }
         }
     }
     if ( !history_file.open( IO_ReadOnly ) ) {
         kdWarning() << failed_load_warning << ": " << history_file.errorString() << endl;
         return false;
     }
-    QDataStream history_stream( &history_file );
+    QDataStream file_stream( &history_file );
+    if( file_stream.atEnd()) {
+        kdWarning() << failed_load_warning << endl;
+        return false;
+    }
+    QDataStream* history_stream = &file_stream;
+    QByteArray data;
+    QDataStream data_stream( data, IO_ReadOnly );
+    if( !oldfile ) {
+        Q_UINT32 crc;
+        file_stream >> crc >> data;
+        if( crc32( 0, reinterpret_cast<unsigned char *>( data.data() ), data.size() ) != crc ) {
+            kdWarning() << failed_load_warning << ": " << history_file.errorString() << endl;
+            return false;
+        }
+        history_stream = &data_stream;
+    }
     QString version;
-    history_stream >> version;
+    *history_stream >> version;
 
     // The list needs to be reversed, as it is saved
     // youngest-first to keep the most important clipboard
     // items at the top, but the history is created oldest
     // first.
     QPtrList<HistoryItem> reverseList;
-    for ( HistoryItem* item = HistoryItem::create( history_stream );
+    for ( HistoryItem* item = HistoryItem::create( *history_stream );
           item;
-          item = HistoryItem::create( history_stream ) )
+          item = HistoryItem::create( *history_stream ) )
     {
         reverseList.prepend( item );
     }
@@ -392,22 +410,24 @@
     static const char* const failed_save_warning =
         "Failed to save history. Clipboard history cannot be saved.";
     // don't use "appdata", klipper is also a kicker applet
-    QString history_file_name( ::locateLocal( "data", "klipper/history.lst" ) );
+    QString history_file_name( ::locateLocal( "data", "klipper/history2.lst" ) );
     if ( history_file_name.isNull() || history_file_name.isEmpty() ) {
         kdWarning() << failed_save_warning << endl;
         return;
     }
-    QFile history_file( history_file_name );
-    if ( !history_file.open( IO_WriteOnly | IO_Truncate ) ) {
-        kdWarning() << failed_save_warning << ": " << history_file.errorString() << endl;
+    KSaveFile history_file( history_file_name );
+    if ( history_file.status() != 0  ) {
+        kdWarning() << failed_save_warning << endl;
         return;
     }
-    QDataStream history_stream( &history_file );
+    QByteArray data;
+    QDataStream history_stream( data, IO_WriteOnly );
     history_stream << klipper_version;
     for (  const HistoryItem* item = history()->first(); item; item = history()->next() ) {
         history_stream << item;
     }
-
+    Q_UINT32 crc = crc32( 0, reinterpret_cast<unsigned char *>( data.data() ), data.size() );
+    *history_file.dataStream() << crc << data;
 }
 
 void KlipperWidget::readProperties(KConfig *kc)
--- branches/KDE/3.5/kdebase/klipper/version.h #503850:503851
@@ -20,7 +20,7 @@
 #ifndef _VERSION_H_
 #define _VERSION_H_
 
-static const char * const klipper_version = "v0.9.6";
+static const char * const klipper_version = "v0.9.7";
 
 
 #endif
Comment 23 Lubos Lunak 2006-06-19 13:37:48 UTC
*** Bug 129108 has been marked as a duplicate of this bug. ***
Comment 24 Maksim Orlovich 2006-07-17 16:07:42 UTC
*** Bug 130983 has been marked as a duplicate of this bug. ***
Comment 25 peter 2006-07-18 09:29:51 UTC
I read this comment in the page ........ : 

------- Additional Comment #4 From Maksim Orlovich 2005-07-16 14:54 -------
Seems like you can workaround by removing ~/.kde/share/apps/klipper/history.lst, but you probably want to save a copy for analysis.

......... there it is. I backed up my history.lst file, removed the existing history.lst, and then rebooted and logged in. Error message gone. It seems that in general one of the most common problems with linux software is just a corrupted history or log file. It is easily fixed by backing up the file, and then deleting the corrupted one and rebooting or closing the session and log back in. this is a good technique to remember. 
Comment 26 Mikołaj 2006-08-23 09:44:22 UTC
I've got the same error, but I don't have klipper folder, so I can't remove history.lst ... :/ Any ideas?
Comment 27 Bram Schoenmakers 2007-01-10 18:57:11 UTC
*** Bug 139846 has been marked as a duplicate of this bug. ***