@kugel-
I'm reading the VTE sources now. It was (completely?) rewritten at some point after 0.28, but some parts remain unchanged, and the easiest test seems to be like this: write a simple "Hello, world!" program that outputs the string to a file, for example "/tmp/boza" or even "/dev/null", and does *not* emit anything to stdout/stderr (or read from stdin).
Since you confirmed the bug, your configuration is probably suitable for testing?..
Now, if spawn or GIO were the cause, there should have been problems with the other spawn()-ed programs, for example Find in Files -> grep, since the g_io_channel_read_chars() in spawn is used for all callers. Plus, with spawn_async_with_pipes() being private, there is no way to pass spawn*() an input fd obtained from openpty().