| Summary: | Pressing the reload button rapidly repeatedly crashes kst | ||
|---|---|---|---|
| Product: | [Applications] kst | Reporter: | D. V. Wiebe <dvw> |
| Component: | general | Assignee: | kst |
| Status: | RESOLVED FIXED | ||
| Severity: | crash | ||
| Priority: | NOR | ||
| Version First Reported In: | 1.0.0 | ||
| Target Milestone: | --- | ||
| Platform: | unspecified | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
|
Description
D. V. Wiebe
2004-12-01 02:23:34 UTC
On Tuesday 30 November 2004 20:23, D.V.Wiebe wrote: > When looking at non-streaming dirfile data, rapidly and repeatedly pressing > the reload button crashes kst. > > I was unable to generate a backtrace for this. Can't reproduce this with non-streaming ASCII file. Must be a dirfile bug? Don showed me: he had to hit it many many times, as fast as he could on a slow machine. It also requires many frames... On Tuesday 30 November 2004 22:53, netterfield@astro.utoronto.ca wrote: > 04:53 ------- Don showed me: he had to hit it many many times, as fast as > he could on a slow machine. It also requires many frames... I hit it so many times that it's still updating and reloading 5 minutes later. Can this be reproduced there with demo.kst? QMutex::unlock: unlock from different thread than locker
was locked by 1024, unlock attempt from 1026
At least one bug lurking, though it's a freeze, not a crash. I swear I had fixed all of these though.
6 0x0eeec124 in QMutex::lock (this=0x10413314) at tools/qmutex_unix.cpp:464
#7 0x0fed2f68 in KstRWLock::writeLock (this=0x1041330c) at rwlock.cpp:62
#8 0x1012b918 in KstRVector::reload (this=0x104dce10) at kstrvector.cpp:591
#9 0x1016a81c in KstApp::reload (this=0x102a1d10) at kst.cpp:1514
CVS commit by staikos:
- lock the rvector when reloading (oops)
- disable debug again (oops^2)
BUG: 94190
M +2 -0 kst.cpp 1.262
M +1 -1 updatethread.cpp 1.34
--- kdeextragear-2/kst/kst/kst.cpp #1.261:1.262
@@ -1513,5 +1513,7 @@ void KstApp::reload() {
KstRVectorPtr r = kst_cast<KstRVector>(*i);
if (r) {
+ r->writeLock();
r->reload();
+ r->writeUnlock();
}
}
--- kdeextragear-2/kst/kst/updatethread.cpp #1.33:1.34
@@ -29,5 +29,5 @@
// 0 - none, 1 - some, 2 - lots, 3 - too much
-#define UPDATEDEBUG 2
+#define UPDATEDEBUG 0
UpdateThread::UpdateThread(KstDoc *doc)
|