I checked the VTE API documentation.

In version 0.26 (or even earlier?), the function "vte_pty_child_setup()" appears. It's documented as "FIXMEchpe", but the documentation for vte_pty_new() says "you MUST call it before using fork or spawn with this terminal". No such remark for vte_pty_new_foreign(), used by Scope, but given that we indirectly (via gdb) connect the terminal to a spawned program, maybe vte_pty_child_setup() will help?..

Starting with 0.38, vte_pty_new_foreign() has been renamed to vte_pty_new_foreign_sync(), which sounds disturbing. A sync read from the pty is very likely to block, which is exactly what we see. Maybe we should explicitly set the master to non-blocking I/O, before / after / instead of vte_pty_child_setup()?..

Last and least, there may be a bug in VTE, or it may be simply impossible to use it for the program spawned by gdb any more. How about describing the situation to the VTE devs?


You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.