Bug 57867 - Crash while debugging with watch/variable view
Summary: Crash while debugging with watch/variable view
Status: RESOLVED FIXED
Alias: None
Product: kdevelop
Classification: Applications
Component: general (show other bugs)
Version: unspecified
Platform: RedHat Enterprise Linux Linux
: NOR crash
Target Milestone: ---
Assignee: KDevelop Developers
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-04-30 02:51 UTC by lament
Modified: 2003-05-04 04:14 UTC (History)
0 users

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description lament 2003-04-30 02:51:07 UTC
Version:           3.0.0a4 (using KDE KDE 3.1)
Installed from:    RedHat RPMs
Compiler:          gcc 3.2.2 
OS:          Linux

Gideon 3.0.0a4 (KDE 3.1-10)
gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)
Linux version 2.4.20-9

Gideon crashes while debugging with the watch/variable view expanded to show local variables.
This is not easily reproducable but becomes more likely after a long debug session or after multiple build/debug sequences.

Built from 2003-04-29 cvs.


[New Thread 1101436576 (LWP 30969)]
[New Thread 1121467696 (LWP 30970)]
0xffffe002 in ?? ()
#0  0xffffe002 in ?? ()
#1  0x40a105bd in KCrash::defaultCrashHandler(int) ()
   from /usr/lib/libkdecore.so.4
#2  <signal handler called>
#3  0x4207a8ce in strncmp () from /lib/tls/libc.so.6
#4  0x424bfe03 in GDBDebugger::VarItem::checkForRequests() (this=0x9e42a18)
    at qcstring.h:295
#5  0x424bfc6d in GDBDebugger::VarItem::setCache(QCString const&) (
    this=0x9e42a18, value=@0xbfffe740) at variablewidget.cpp:643
#6  0x424bab03 in GDBDebugger::GDBParser::setItem(GDBDebugger::TrimmableItem*, QString const&, GDBDebugger::DataType, QCString const&, bool, bool) (
    this=0x8ea9a10, parent=0x1a, varName=@0xbfffe7c0, dataType=3221219248, 
    value=@0xbfffe7b0) at gdbparser.cpp:202
#7  0x424ba4c6 in GDBDebugger::GDBParser::parseData(GDBDebugger::TrimmableItem*, char*, bool, bool) (this=0x8ea9a10, parent=0x99a2f90, buf=0x9e49ce9 " ", 
    requested=3, params=false) at gdbparser.cpp:89
#8  0x424c06df in GDBDebugger::VarFrameRoot::setOpen(bool) (this=0x99a2f90, 
    open=true) at qmemarray.h:64
#9  0x424c05c3 in GDBDebugger::VarFrameRoot::setLocals(char*) (this=0x99a2f90, 
    locals=0x9a2b752 "ref = (__xpath_path_node &) @0xe: ")
    at variablewidget.cpp:801
#10 0x424b46ff in GDBDebugger::GDBController::parseLocals(char, char*) (
    this=0x899ffd0, type=76 'L', 
    buf=0x9a2b752 "ref = (__xpath_path_node &) @0xe: ")
    at gdbcontroller.cpp:907
#11 0x424b497c in GDBDebugger::GDBController::parseCmdBlock(char*) (
    this=0x899ffd0, buf=0x9a2b752 "ref = (__xpath_path_node &) @0xe: ")
    at gdbcontroller.cpp:982
#12 0x424b4b5e in GDBDebugger::GDBController::parse(char*) (this=0x899ffd0, 
    buf=0x9a2b750 "\032Lref = (__xpath_path_node &) @0xe: ")
    at gdbcontroller.cpp:1091
#13 0x424b7fb3 in GDBDebugger::GDBController::slotDbgStdout(KProcess*, char*, int) (this=0x899ffd0, 
    buf=0xbfffeb30 "\032Lref = (__xpath_path_node &) @0xe: \032L\032i", 
    buflen=40) at gdbcontroller.cpp:1814
#14 0x424b92e5 in GDBDebugger::GDBController::qt_invoke(int, QUObject*) (
    this=0x899ffd0, _id=53, _o=0xbfffeaa0) at qucom_p.h:312
#15 0x40daa0c9 in QObject::activate_signal(QConnectionList*, QUObject*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#16 0x409d5af9 in KProcess::receivedStdout(KProcess*, char*, int) ()
   from /usr/lib/libkdecore.so.4
#17 0x409d4701 in KProcess::childOutput(int) () from /usr/lib/libkdecore.so.4
#18 0x409d44f9 in KProcess::slotChildOutput(int) ()
   from /usr/lib/libkdecore.so.4
#19 0x409d5e66 in KProcess::qt_invoke(int, QUObject*) ()
   from /usr/lib/libkdecore.so.4
#20 0x40daa0c9 in QObject::activate_signal(QConnectionList*, QUObject*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#21 0x40daa1a5 in QObject::activate_signal(int, int) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#22 0x4108a282 in QSocketNotifier::activated(int) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#23 0x40dc64b0 in QSocketNotifier::event(QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#24 0x40d4bf24 in QApplication::internalNotify(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#25 0x40d4bb19 in QApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#26 0x409a41e9 in KApplication::notify(QObject*, QEvent*) ()
   from /usr/lib/libkdecore.so.4
#27 0x40d26efa in QEventLoop::activateSocketNotifiers() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#28 0x40d048d7 in QEventLoop::processEvents(unsigned) ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#29 0x40d5fcf6 in QEventLoop::enterLoop() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#30 0x40d5fb98 in QEventLoop::exec() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#31 0x40d4c151 in QApplication::exec() ()
   from /usr/lib/qt-3.1/lib/libqt-mt.so.3
#32 0x0806971c in main (argc=1, argv=0xbffff5f4) at main.cpp:89
#33 0x420156a4 in __libc_start_main () from /lib/tls/libc.so.6
Comment 1 Jens Dagerbo 2003-04-30 14:13:51 UTC
I don't understand the debugger code well enough to understand this, but I can 
reproduce it: 
 
Debug gideon -> set a breakpoint at line 81 of parts/closer/closer_part.cpp in the 
current souce (the line is "void CloserPart::closeFiles( QStringList const & fileList )" - 
the method head). 
 
Trigger this code (assumes closerpart is loaded) by hitting ctrl+alt-W and clicking "ok". 
 
When the debugger stops the program at line 81, expand the stackframe in the 
variables/watch window -> CRASH, with the reported backtrace.  
 
Putting the breakpoint inside the method (line 83) produces no such crash on 
expansion of the stackframe. 
 
For me, this happens everytime. I first noticed it somewhere else, so I don't think it's 
that particular to the code being debugged, but this was an easy place to trigger it. 
Comment 2 Jens Dagerbo 2003-05-04 04:14:29 UTC
Hopefully fixed in CVS.  
 
I committed a patch that handles the problem for my case (see previous comment) and 
since it was the same stacktrace, maybe it helps. 
 
Please reopen if the patch is unsuccessful.