[prev in list] [next in list] [prev in thread] [next in thread]
List: kfm-devel
Subject: Fwd: old html cache bug -> kfm segfaults
From: David Faure <David.Faure () insa-lyon ! fr>
Date: 1999-01-26 15:14:38
[Download RAW message or body]
If somebody has an idea about this strange sigsegv I experienced and the
related gdb output :
(The code in htmlcache.cpp is mostly from Torben, I didn't change it at
all, Jacek only added the Cache menu entry (enabling/disabling), ...
so I posted to Torben him too but he might have no time for this)
To make the crash happen, I open a WWWUrl kdelnk on the desktop, let it
load a little but not completely, then close the window (using the kwm
cross), then re-open it again quickly.
It seems that some kioslave loading images are still loading, so the static
QList<HTMLCacheJob> *staticJobList is being updated while it's being read
(is it possible ?).
The crash is
Program received signal SIGSEGV, Segmentation fault.
0x80acd36 in HTMLCache::slotURLRequest (this=0x8336f78,
_url=0x83cf030 "http://www/Images/som_fra3.jpg") at htmlcache.cpp:83
83 if ( strcmp( _url, job->getSrcURL() ) == 0 )
(gdb) p job
$1 = (HTMLCacheJob *) 0x0
(gdb) p staticJobList->count()
$2 = 4
The related lines in htmlcache.cpp are
// Are we waiting for this URL already ?
// We can see all jobs of every instance here.
HTMLCacheJob *job;
for ( job = staticJobList->first(); job != 0L; job = staticJobList->next() )
if ( strcmp( _url, job->getSrcURL() ) == 0 )
return;
It's really strange to me : how can job be 0L, in the above for loop ?
(gdb) p staticJobList->at(0)
$5 = (void *) 0x83e5db0
(gdb) p staticJobList->at(1)
$6 = (void *) 0x83df200
(gdb) p staticJobList->at(2)
$7 = (void *) 0x841fe00
(gdb) p staticJobList->at(3)
$8 = (void *) 0x841f350
(gdb) p staticJobList->at(4)
QGList::locate: Index 4 out of range
$9 = (void *) 0x0
The list looks fine...
Hum, I even tried
(gdb) p staticJobList->first()
$10 = (void *) 0x83e5db0
(gdb) p staticJobList->next()
$11 = (void *) 0x83df200
(gdb)
$12 = (void *) 0x841fe00
(gdb)
$13 = (void *) 0x841f350
(gdb)
$14 = (void *) 0x0
Can a slot call interrupt the for loop, change the list, and then go back
to the for loop ? It isn't multithreaded is it ?
Thanks for any hint ...
--
____________________________________________________________________
| |
| David FAURE |
| E-mail : David.Faure@insa-lyon.fr, faure@kde.org |
| http://www.insa-lyon.fr/People/AEDI/dfaure/index.html |
|____________________________________________________________________|
----- End forwarded message -----
--
____________________________________________________________________
| |
| David FAURE |
| E-mail : David.Faure@insa-lyon.fr, faure@kde.org |
| http://www.insa-lyon.fr/People/AEDI/dfaure/index.html |
|____________________________________________________________________|
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic