>> 1) Anybody experience similar problems?
>
I’ve seen it and our users have been
running into this issue.
https://bugs.eclipse.org/bugs/show_bug.cgi?id=80092
>>3) Other suggestions how this can be fixed?
>
I submitted a patch for this and Ken Ryall
has been kind enough to submit into one of the upcoming or recent builds. The
patch adds a session.terminate to the throw in question that should bring the rouge
process down.
-Stu
From: cdt-dev-bounces@xxxxxxxxxxx
[mailto:cdt-dev-bounces@xxxxxxxxxxx] On
Behalf Of Ploett, Norbert
Sent: Wednesday, December 20, 2006
12:30 AM
To: CDT General developers list.
Subject: [cdt-dev] Cygwin gdb
refuses to be killed
Well, nobody likes to be killed, after all.
- I am setting up a remote debug session. I use org.eclipse.cdt.debug.mi.core.MIPlugin.createCSession(String,
String, File, int, String[], File, String, IProgressMonitor) to create the
MISession. In cases where the connection to the debug target fails the
MITargetSelect.getMIInfo() method throws a MIException which is caught like
this:
} catch (MIException e) {
pgdb.destroy();
throw e;
}
pgdb.destroy() ultimately causes the Spawner to send some
signals to the gdb process, but gdb does not like those. The gdb process
remains in memory and causes 100% system load. I have to kill it off manually
with the task manager.
Here is a quick hacky workaround:
} catch (MIException e) {
pgdb.getOutputStream().write("quit\n".getBytes());
try {
pgdb.waitFor();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
throw e;
}
So if I ask gdb nicely to quit it works fine.
A clean solution needs some polishing and can't just call
waitFor() without any precautions, but I'd like to put up two questions:
1) Anybody experience similar problems?
2) Wouldn't it be good to implement the create*Session()
methods in a way so that we first ask gdb to quit nicely before trying to kill
it?
3) Other suggestions how this can be fixed?