Attempting to debug Test::Machine::Qemu lockup with -curses and -monitor on a PTY.
Noted that with -curses and -serial stdio, no lockup occurs, so this seems to be unique to -curses.
Tracing monitor and curses operation; seemingly qemu-char.c is used for generic “char devices”, which at least the monitor is.
strace
of QEMU with -curses and -monitor simultaneously seems to indicate that it is in fact writing to the monitor PTY:
open("/dev/pts/5", O_RDWR|O_NONBLOCK) = 11 ioctl(11, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 -opost -isig -icanon -echo ...}) = 0 ioctl(11, SNDCTL_TMR_START or TCSETS, {B115200 opost -isig -icanon -echo ...}) = 0 [...] write(11, "QEMU 0.10.5 monitor - type 'help'"..., 56) = 56 write(11, "(qemu) "..., 7) = 7
Attach the correct end of the monitor PTY to QEMU: commit
Taking a short break from debugging -curses output (I plan to continue work in other areas using -serial and gPXE's CONSOLE_SERIAL if I can't figure it out in the short term).
Implemented generic configuration file abstraction: commit
Switched Test::Machine
from parsing conf files itself over to Test::Configuration
: commit