[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
Re: [cdt-dev] GDB hangs after a series of commands?
|
It could be a console problem. I remember seeing bug reports about large
output blocking the console.
On 20/04/2010 1:02 PM, James Blackburn wrote:
It looks like your're using CDI. One thing that can make it hang is if
GDB itself is blocked trying to write to one of its output streams
(stdout and stderr). Before CDT 7 we never read from stderr, so if
there's periodic output here, GDB eventually locks up.
It's worth finding out what the other end is doing -- attach another
to the gdb eclipse is talking to to find out...
Cheers,
James
On 20 April 2010 17:45, Steve Goodrich<steve.goodrich@xxxxxxxxxx> wrote:
I'm working on a custom View in the context of CDI. I have a valid
MISession, and I'm hammering it with commands:
CLICommand cli = new CLICommand("test");
MIOOBRecord oobRecord[] = null;
for (int i = 0; i< 2000; i++) {
System.out.println(String.format("%4d - sending", i));
try {
miSession.postCommand(cli, MISession.FOREVER);
System.out.println(String.format("%4d - waiting",
i));
oobRecord =
cli.getMIInfo().getMIOutput().getMIOOBRecords();
System.out.println(String.format("%4d - completed",
i));
} catch (Exception e) {
System.out.println(String.format("%4d - exception:
", i) + e.getMessage());
}
}
System.out.println("DONE!");
I'm able to go through this loop about 900 times, and then my debug session
will hang. The last debug output I have is this (the exception is expected
since "test" is not a valid GDB command):
890 - sending
890 - waiting
890 - exception: Undefined command: "test". Try "help".
891 - sending
And now Eclipse is hung. The call stack looks like this:
Thread [main] (Suspended)
Object.wait(long) line: not available [native method]
PipedInputStream.awaitSpace() line: not available
PipedInputStream.receive(byte[], int, int) line: not
available
PipedOutputStream.write(byte[], int, int) line: not
available
PipedOutputStream(OutputStream).write(byte[]) line: not
available
MISession.writeToConsole(String) line: 831
MISession.postCommand0(Command, long) line: 591
MISession.postCommand(Command, long) line: 573
MyView.testloop(boolean) line: 602
(etc.)
I don't have the PipedOutputStream or PipedInputStream sources, so the
lowest level at which I have visibility is here:
protected void writeToConsole(String text) {
OutputStream console = getConsolePipe();
if (console != null) {
try {
console.write(text.getBytes()); //<<<<<<<<
hangs somewhere in here
console.flush();
}
catch(IOException e) {
}
}
}
Does this make sense to anyone? Aside from "don't do that to GDB", is there
something obvious I'm doing wrong? Is there some pacing I need to follow
when dealing with MISession? Is there some way to get more information on
this so I can figure out what's happening?
Thanks!
-- Steve G.
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev
_______________________________________________
cdt-dev mailing list
cdt-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/cdt-dev