Version: 4.0.0 (using 4.1.00 (KDE 4.1.0), 4.1.0-5.fc9 Fedora) Compiler: gcc OS: Linux (i686) release 2.6.25.14-108.fc9.i686 Hello, I've just upgraded from KDE 3.5.9 to KDE 4.1.0 using the Fedora packages. I noticed three things about the new ktimetracker: - Every second time I leave for my lunch hour and lock my screen, the taskbar icon is gone when I come back later. I tried to "strace" this one but with no lock so far. - Set one task to active. You'll get a rotating clock in the taskbar and in the application. If you quit the application via "File -> Quit" and restart it, the animation of the taskbar is not restarted. - On startup I see these messages on the console: QObject::connect: Cannot connect (null)::totalTimesChanged( long, long ) to TimetrackerWidget::totalTimesChanged( long, long ) QObject::connect: Cannot connect (null)::reSetTimes() to TimetrackerWidget::reSetTimes() FYI: I've not deleted or converted my karm KDE 3.5.9 in any special way. Best regards, Thomas
Created attachment 26996 [details] start tray icon clock if task is running at program startup
ok, 2 bug reports in one...
Thanks for the quick fix! I'll try to trace the disappearing traybar icon next week and will then open a second bug report if that is okay with you.
If the taskbar icon has disappeared, is ktimetracker still running (ps -A | grep ktimetracker)? Obviously yes, because you strace it, but could you confirm?
When I strace it, the icon stays in the taskbar, so the process still exists. I also haven't figured out yet if it makes a difference if a task is running or not. Today I won't strace it, but dump the process list every minute into a file. So we'll atleast know if the process still exists or how long it takes until the issue occurs.
Yipee, I figured out how to reproduce this one :-) 1. Set the "idle detection" to 1 minute 2. Start a task 3. Close the window. ktimetracker stays in the taskbar and get a coffe or tea 4. You'll be asked if you want to continue or revert the tracked time. Select "continue" and then ktimetracker just exits. I see this message on the gdb console: "Object::connect: No such signal QWidget::changed(bool) Program exited normally." ktimetracker does not exit if the application window stays open.
Great, you deserve a beer for making this reproducible! However, I just ran into a bug so that I cannot use the idle time detection. As soon as I can, I will continue here.
For me, it does not exit if I click "Continue". If the problem persists, please compile kdepim from 4.1 branch as outlined on http://techbase.kde.org/Getting_Started then start ktimetracker from console and attach the konsole output here. Good that you used gdb, but at the moment I prefer the konsole output...
Ok, I just checked out the KDE 4.1 kdepim branched and compile ktimetracker. Before running it, it set the LD_LIBRARY_PATH to "build_dir/kdepim/lib:$LD_LIBRARY_PATH" to make sure it picks up the new base libraries (verified via ldd) The window still disappears. I've had a quick look around the code, to me the "Object::connect: No such signal QWidget::changed(bool)" error messages gets issued in IdleTimeDetector::informOverrun(), so I've added debug output before and after the connect() call. Here's the konsole ouput: ktimetracker(13218) Task::changeTimes: Entering function ktimetracker(13218) Task::changeTimes: Task's sessionStartTiMe is KDateTime() ktimetracker(13218) Task::changeTotalTimes: Task::changeTotalTimes( 1 , 1 ) for "Debug" ktimetracker(13218) Task::update: Entering function ktimetracker(13218) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13218) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13218) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13218) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13218) Task::update: Leaving function ktimetracker(13218) MainWindow::updateTime: Entering function(sessionDiff= 1 totalDiff= 1 ) ktimetracker(13218) MainWindow::updateStatusBar: Entering MainWindow::updateStatusBar( ) ktimetracker(13218) formatTime: Entering function(minutes= 45 ,decimal= false ); ktimetracker(13218) formatTime: Entering function(minutes= 9491 ,decimal= false ); ktimetracker(13218) MainWindow::updateStatusBar: Exiting MainWindow::updateStatusBar( ) ktimetracker(13218) MainWindow::updateTime: Exiting MainWindow::updateTime ktimetracker(13218) Task::changeTotalTimes: Leaving function ktimetracker(13218) Task::changeTimes: Leaving function ktimetracker(13218) Task::changeTimes: Entering function ktimetracker(13218) Task::changeTimes: Task's sessionStartTiMe is KDateTime() ktimetracker(13218) Task::changeTotalTimes: Task::changeTotalTimes( 1 , 1 ) for "Debug" ktimetracker(13218) Task::update: Entering function ktimetracker(13218) formatTime: Entering function(minutes= 2 ,decimal= false ); ktimetracker(13218) formatTime: Entering function(minutes= 2 ,decimal= false ); ktimetracker(13218) formatTime: Entering function(minutes= 2 ,decimal= false ); ktimetracker(13218) formatTime: Entering function(minutes= 2 ,decimal= false ); ktimetracker(13218) Task::update: Leaving function ktimetracker(13218) MainWindow::updateTime: Entering function(sessionDiff= 1 totalDiff= 1 ) ktimetracker(13218) MainWindow::updateStatusBar: Entering MainWindow::updateStatusBar( ) ktimetracker(13218) formatTime: Entering function(minutes= 46 ,decimal= false ); ktimetracker(13218) formatTime: Entering function(minutes= 9492 ,decimal= false ); ktimetracker(13218) MainWindow::updateStatusBar: Exiting MainWindow::updateStatusBar( ) ktimetracker(13218) MainWindow::updateTime: Exiting MainWindow::updateTime ktimetracker(13218) Task::changeTotalTimes: Leaving function ktimetracker(13218) Task::changeTimes: Leaving function ktimetracker(13218) IdleTimeDetector::informOverrun: TOMJ: Before connect(SIGNAL(changed(bool))). Object::connect: No such signal QWidget::changed(bool) ktimetracker(13218) IdleTimeDetector::informOverrun: TOMJ: after connect(SIGNAL(changed(bool))). ktimetracker(13218) MainWindow::~MainWindow: MainWindow::~MainWindows: Quitting ktimetracker. If I do the same procedure with the "Revert" button, the application also closes: ktimetracker(13751) Task::changeTimes: Entering function ktimetracker(13751) Task::changeTimes: Task's sessionStartTiMe is KDateTime() ktimetracker(13751) Task::changeTotalTimes: Task::changeTotalTimes( 1 , 1 ) for "Debug" ktimetracker(13751) Task::update: Entering function ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13751) Task::update: Leaving function ktimetracker(13751) MainWindow::updateTime: Entering function(sessionDiff= 1 totalDiff= 1 ) ktimetracker(13751) MainWindow::updateStatusBar: Entering MainWindow::updateStatusBar( ) ktimetracker(13751) formatTime: Entering function(minutes= 45 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 9491 ,decimal= false ); ktimetracker(13751) MainWindow::updateStatusBar: Exiting MainWindow::updateStatusBar( ) ktimetracker(13751) MainWindow::updateTime: Exiting MainWindow::updateTime ktimetracker(13751) Task::changeTotalTimes: Leaving function ktimetracker(13751) Task::changeTimes: Leaving function ktimetracker(13751) Task::changeTimes: Entering function ktimetracker(13751) Task::changeTimes: Task's sessionStartTiMe is KDateTime() ktimetracker(13751) Task::changeTotalTimes: Task::changeTotalTimes( 1 , 1 ) for "Debug" ktimetracker(13751) Task::update: Entering function ktimetracker(13751) formatTime: Entering function(minutes= 2 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 2 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 2 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 2 ,decimal= false ); ktimetracker(13751) Task::update: Leaving function ktimetracker(13751) MainWindow::updateTime: Entering function(sessionDiff= 1 totalDiff= 1 ) ktimetracker(13751) MainWindow::updateStatusBar: Entering MainWindow::updateStatusBar( ) ktimetracker(13751) formatTime: Entering function(minutes= 46 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 9492 ,decimal= false ); ktimetracker(13751) MainWindow::updateStatusBar: Exiting MainWindow::updateStatusBar( ) ktimetracker(13751) MainWindow::updateTime: Exiting MainWindow::updateTime ktimetracker(13751) Task::changeTotalTimes: Leaving function ktimetracker(13751) Task::changeTimes: Leaving function ktimetracker(13751) IdleTimeDetector::informOverrun: TOMJ: Before connect(SIGNAL(changed(bool))). wid: Object::connect: No such signal QWidget::changed(bool) ktimetracker(13751) IdleTimeDetector::informOverrun: TOMJ: after connect(SIGNAL(changed(bool))). ktimetracker(13751) IdleTimeDetector::revert: Entering function ktimetracker(13751) Task::changeTimes: Entering function ktimetracker(13751) Task::changeTimes: Task's sessionStartTiMe is KDateTime() ktimetracker(13751) Task::changeTotalTimes: Task::changeTotalTimes( -1 , -1 ) for "Debug" ktimetracker(13751) Task::update: Entering function ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 1 ,decimal= false ); ktimetracker(13751) Task::update: Leaving function ktimetracker(13751) MainWindow::updateTime: Entering function(sessionDiff= -1 totalDiff= -1 ) ktimetracker(13751) MainWindow::updateStatusBar: Entering MainWindow::updateStatusBar( ) ktimetracker(13751) formatTime: Entering function(minutes= 45 ,decimal= false ); ktimetracker(13751) formatTime: Entering function(minutes= 9491 ,decimal= false ); ktimetracker(13751) MainWindow::updateStatusBar: Exiting MainWindow::updateStatusBar( ) ktimetracker(13751) MainWindow::updateTime: Exiting MainWindow::updateTime ktimetracker(13751) Task::changeTotalTimes: Leaving function ktimetracker(13751) Task::changeTimes: Leaving function ktimetracker(13751) TaskView::stopAllTimers: Entering function ktimetracker(13751) Task::setRunning: Entering function ktimetracker(13751) KarmStorage::stopTimer: Entering function; when= QDateTime("Fri Aug 29 14:38:41 2008") ktimetracker(13751) KarmStorage::stopTimer: found an event for task, event= "libkcal-1002365824.91" ktimetracker(13751) KarmStorage::stopTimer: this event has an enddate ktimetracker(13751) KarmStorage::stopTimer: end date is KDateTime(2008-08-29T14:37:40,151Z) ktimetracker(13751) KarmStorage::stopTimer: found an event for task, event= "libkcal-1025204879.738" ktimetracker(13751) KarmStorage::stopTimer: this event has an enddate ktimetracker(13751) KarmStorage::stopTimer: end date is KDateTime(2008-08-29T14:16:29Z) ktimetracker(13751) KarmStorage::stopTimer: found an event for task, event= "libkcal-40368163.383" ktimetracker(13751) KarmStorage::stopTimer: this event has no enddate ktimetracker(13751) KarmStorage::stopTimer: kwhen == KDateTime(2008-08-29T14:38:41,290Z) ktimetracker(13751) KarmStorage::saveCalendar: Entering function ktimetracker(13751) TimetrackerWidget::slotUpdateButtons: Entering function ktimetracker(13751) TaskView::currentItem: Entering function ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning false ktimetracker(13751) TaskView::itemAt: Leaving TaskView::itemAt returning true ktimetracker(13751) TimetrackerWidget::slotUpdateButtons: Leaving function ktimetracker(13751) TrayIcon::stopClock: Entering function ktimetracker(13751) TrayIcon::stopClock: Leaving function ktimetracker(13751) TimetrackerWidget::updateTabs: Entering function ktimetracker(13751) TimetrackerWidget::updateTabs: Leaving function ktimetracker(13751) MainWindow::~MainWindow: MainWindow::~MainWindows: Quitting ktimetracker.
The problem is gone with KDE 4.1.1, I'm closing the bug :-)
Great! Feedback (especially this) is much appreciated.
*** Bug 173319 has been marked as a duplicate of this bug. ***
Hello! Sorry to be the bearer of bad news, but this project has been unmaintained for many years so I will be closing this bug.