Version: 1.1 (using KDE KDE 3.4.1) Installed from: Debian testing/unstable Packages OS: Linux To reproduce this crash do - start KStars - right click an arbitrary star - choose "add to watch list" from RMB menu - choose extra -> "watch list" from the main menu - left click the new entry - click "application area" (2nd button) - get a message "no active telescope found" - click OK - click at the "remove" button - close the window by clicking the "close" button at the upper right corner of the window You'll get a SIGSEGV. Maybe this one is related to bug 105214. KCrashHandler log: `system-supplied DSO at 0xffffe000' has disappeared; keeping its symbols. (no debugging symbols found) ... (no debugging symbols found) [Thread debugging using libthread_db enabled] [New Thread -1231677760 (LWP 7411)] ... #3 0x082324d2 in KPlotWidget::setDefaultPadding () #4 0xb79e19c9 in KDialogBase::qt_invoke () from /usr/lib/libkdeui.so.4 #5 0x08232b90 in KPlotWidget::setDefaultPadding () #6 0xb709571c in QObject::activate_signal () from /usr/lib/libqt-mt.so.3 #7 0xb7095544 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3 #8 0xb73db82e in QButton::clicked () from /usr/lib/libqt-mt.so.3 #9 0xb71282cd in QButton::animateTimeout () from /usr/lib/libqt-mt.so.3 #10 0xb73db948 in QButton::qt_invoke () from /usr/lib/libqt-mt.so.3 #11 0xb73ead54 in QPushButton::qt_invoke () from /usr/lib/libqt-mt.so.3 #12 0xb7a50003 in KPushButton::qt_invoke () from /usr/lib/libkdeui.so.4 #13 0xb79da44d in KDialogBaseButton::qt_invoke () from /usr/lib/libkdeui.so.4 #14 0xb709571c in QObject::activate_signal () from /usr/lib/libqt-mt.so.3 #15 0xb73d462a in QSignal::signal () from /usr/lib/libqt-mt.so.3 #16 0xb70af91d in QSignal::activate () from /usr/lib/libqt-mt.so.3 #17 0xb70b7253 in QSingleShotTimer::event () from /usr/lib/libqt-mt.so.3 #18 0xb7038e1f in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3 #19 0xb703841e in QApplication::notify () from /usr/lib/libqt-mt.so.3 #20 0xb7674ac5 in KApplication::notify () from /usr/lib/libkdecore.so.4 #21 0xb7028645 in QEventLoop::activateTimers () from /usr/lib/libqt-mt.so.3 #22 0xb6fe1cfb in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3 #23 0xb704b1d8 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3 #24 0xb704b088 in QEventLoop::exec () from /usr/lib/libqt-mt.so.3 #25 0xb7039071 in QApplication::exec () from /usr/lib/libqt-mt.so.3 #26 0x081150ad in KDoubleNumInput::metaObject () #27 0xb6999ec0 in __libc_start_main () from /lib/tls/libc.so.6 #28 0x0806cd61 in ?? ()
I can't reproduce this crash. What's your hardware spec?
There was NO telescope attached to the system nor any other astro device. Hardware specs here are i686, 2.6 GHz, 512 MB RAM. What else do you need to know?
Hi, Thanks for the report. I am also unable to reproduce the crash following these steps. It's possible that the bug has been fixed since 3.4.1. You could try KDE-3.5-beta1 or if you don't want to run the whole desktop from beta1, you can get a recent KStars SVN snapshot here: http://www.30doradus.org/kstars/ Let us know if you try it. Jason On Friday 30 September 2005 01:45, Oliver Grimm wrote: [bugs.kde.org quoted mail]
More information: I still have KStars from KDE-3.4.1 on disk, so I tried that, and I still can't reproduce the crash following your steps. However, I noticed your backtrace contains KPlotWidget, which should not be called from the Observing List (or "watch list" in your localization?). The only way you could get such a backtrace from the Observing List is if you opened the "Altitude vs Time" tool. So, I tried following your steps, except I clicked on "Alt vs. Time" instead of "Remove". This produces a crash under 3.4.1, but not under the 3.5 SVN code. I'll look into patching it, because I've heard there's actually going to be a 3.4.3 release. Thansk again.
SVN commit 465866 by harris: Fixing BR #113611 (SIGSEGV in Observing List tool). Added a "SkyObject *oCurrent" member to keep track of the currently-selected object. THis had been fixed in the 3.5 branch already, but I didn't backport because I didn't realize there would be a 3.4.3 release. Also updated version number in the 3.4 branch to to 1.1.3 for the kde-3.4.3 release. BUG: 113611 M +1 -1 main.cpp M +21 -17 tools/observinglist.cpp M +1 -1 tools/observinglist.h --- branches/KDE/3.4/kdeedu/kstars/kstars/main.cpp #465865:465866 @@ -29,7 +29,7 @@ #include "ksnumbers.h" #include "Options.h" -#define KSTARS_VERSION "1.1.1" +#define KSTARS_VERSION "1.1.3" static const char description[] = I18N_NOOP("Desktop Planetarium"); --- branches/KDE/3.4/kdeedu/kstars/kstars/tools/observinglist.cpp #465865:465866 @@ -43,7 +43,7 @@ ObservingList::ObservingList( KStars *_ks, QWidget* parent ) : KDialogBase( KDialogBase::Plain, i18n( "Observing List" ), - Close, Close, parent, "observinglist", false ), ks( _ks ), LogObject(0), noNameStars(0) + Close, Close, parent, "observinglist", false ), ks( _ks ), LogObject(0), oCurrent(0), noNameStars(0) { QFrame *page = plainPage(); // setMainWidget( page ); @@ -160,12 +160,10 @@ } void ObservingList::slotNewSelection() { - //DEBUG - kdDebug() << "selected item changed" << endl; - //Construct list of selected objects SelectedObjects.clear(); QListViewItemIterator it( ui->table, QListViewItemIterator::Selected ); //loop over selected items + while ( it.current() ) { for ( SkyObject *o = obsList.first(); o; o = obsList.next() ) { if ( it.current()->text(0) == i18n("star") ) { @@ -185,7 +183,6 @@ //Enable widgets when one object selected if ( SelectedObjects.count() == 1 ) { QString newName( SelectedObjects.first()->translatedName() ); - QString oldName( obsList.current()->translatedName() ); //Enable buttons ui->CenterButton->setEnabled( true ); @@ -195,7 +192,7 @@ ui->RemoveButton->setEnabled( true ); //Find the selected object in the obsList, - //then break the loop. Now obsList.current() + //then break the loop. Now oCurrent //points to the new selected object (until now it was the previous object) bool found( false ); for ( SkyObject* o = obsList.first(); o; o = obsList.next() ) { @@ -231,6 +228,11 @@ ui->NotesEdit->setEnabled( false ); } + //This shouldn't be necessary. For some reason, obsList.current() + //is valid here, but in subsequent functions (such as slotCenterObject) + //called *right after* this one, obsList.current()==NULL. No idea why. + oCurrent = obsList.current(); + } else if ( SelectedObjects.count() == 0 ) { //Disable buttons ui->CenterButton->setEnabled( false ); @@ -240,7 +242,8 @@ ui->RemoveButton->setEnabled( false ); ui->NotesLabel->setEnabled( false ); ui->NotesEdit->setEnabled( false ); - + oCurrent = 0; + //Clear the user log text box. saveCurrentUserLog(); } else { //more than one object selected. @@ -251,16 +254,17 @@ ui->RemoveButton->setEnabled( true ); ui->NotesLabel->setEnabled( false ); ui->NotesEdit->setEnabled( false ); - + oCurrent = 0; + //Clear the user log text box. saveCurrentUserLog(); } } void ObservingList::slotCenterObject() { - if ( obsList.current() ) { - ks->map()->setClickedObject( obsList.current() ); - ks->map()->setClickedPoint( obsList.current() ); + if ( oCurrent ) { + ks->map()->setClickedObject( oCurrent ); + ks->map()->setClickedPoint( oCurrent ); ks->map()->slotCenter(); } } @@ -274,7 +278,7 @@ bool useJ2000( false); SkyPoint sp; - if (obsList.current() == NULL) + if (oCurrent == NULL) return; // Find the first device with EQUATORIAL_EOD_COORD or EQUATORIAL_COORD and with SLEW element @@ -315,7 +319,7 @@ onSet->activateSwitch("SLEW"); - sp.set (obsList.current()->ra(), obsList.current()->dec()); + sp.set (oCurrent->ra(), oCurrent->dec()); if (useJ2000) sp.apparentCoord(ks->data()->ut().djd(), (long double) J2000); @@ -338,8 +342,8 @@ //FIXME: This will open multiple Detail windows for each object; //Should have one window whose target object changes with selection void ObservingList::slotDetails() { - if ( obsList.current() ) { - DetailDialog dd( obsList.current(), ks->data()->lt(), ks->geo(), ks ); + if ( oCurrent ) { + DetailDialog dd( oCurrent, ks->data()->lt(), ks->geo(), ks ); dd.exec(); } } @@ -359,8 +363,8 @@ void ObservingList::slotClose() { //Save the current User log text if ( ! ui->NotesEdit->text().isEmpty() && ui->NotesEdit->text() - != i18n("Record here observation logs and/or data on %1.").arg( obsList.current()->name()) ) { - obsList.current()->saveUserLog( ui->NotesEdit->text() ); + != i18n("Record here observation logs and/or data on %1.").arg( oCurrent->name()) ) { + oCurrent->saveUserLog( ui->NotesEdit->text() ); } hide(); --- branches/KDE/3.4/kdeedu/kstars/kstars/tools/observinglist.h #465865:465866 @@ -125,7 +125,7 @@ ObservingListUI *ui; QPtrList<SkyObject> obsList; QPtrList<SkyObject> SelectedObjects; - SkyObject *LogObject; + SkyObject *LogObject, *oCurrent; uint noNameStars; };