Back to Problem 2 from my previous message.
Here's what is happening. Suppose I run:
perl twogtp-a --black "metamachine" --white "gnugo --mode gtp --quiet"
(There are two versions of twogtp in interface/gtp_examples, and twogtp-a is a little easier for me to parse.)
I can do this from perldb and as soon as pidb is open I can attach gdb to metamachine and/or gnugo. Metamachine stops at line 61:
if (!fgets(client_line, 128, stdin))
waiting for a command in stdin. This it should get when twogtp-a gets up to line 115 and prints "boardsize 19" but at this point deadlock occurs. Note that there is no deadlock if metamachine is run from the shell.
I have an email from David referring to man IPC::Open2 on the dangers of open2. But I can't say I really understand why this deadlock occurs or how it can be avoided.
Potentially cool things could be done using this setup.
Dan