gioser

sergio/takana

> Una distribución Linux construida con un laboratorio funcional y hermético en el > sótano, y una terminal mutable, clásica y anárquica en el piso de arriba — diseñada > desde el suelo para que una IA programadora entienda, modifique y co…

TOML 1483Shell 181Rust 107Markdown 963619 Sutichaykuna

🔭 portal-probe: el log quedaba vacío justo mientras medía

Redirigida a fichero, stdout se bufferiza por bloques: mientras la sonda espera un
Response el log muestra sólo la línea de la llamada. Eso se lee como «se colgó al
llamar» cuando en realidad estaba esperando como debe. Nos pasó depurando ScreenCast en
metal — dos minutos mirando un fichero que no avanzaba, con la sonda perfectamente viva.

setvbuf(_IOLBF) incondicional, no sólo cuando la salida es una terminal: el caso que
importa es justamente el redirigido.

Una sonda que no se puede leer MIENTRAS mide es media sonda.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

8182e459b06d3df3d692fd905917027bff4ace44 · ruwaq sergio · (2 killa ñawpaq) · tayta c5e6edc73 · kay commitpi sach'ata qhaway

Semántico sayk'uy · 1

tools/portal-probe/portal-probe.c

  • ukhunpi t'ikrakurqan def main pub

1 qillqakuna · +8 −0

diff --git a/tools/portal-probe/portal-probe.c b/tools/portal-probe/portal-probe.c
index 7dbb080f..cf2e5a7f 100644
--- a/tools/portal-probe/portal-probe.c
+++ b/tools/portal-probe/portal-probe.c
@@ -404,6 +404,14 @@ static int do_screenshot(DBusConnection *bus)
 
 int main(int argc, char **argv)
 {
+    /* Línea a línea, SIEMPRE — no sólo cuando la salida es una terminal. Redirigida a fichero,
+     * stdout se bufferiza por bloques y el log queda vacío mientras la sonda espera: justo el
+     * tramo que interesa mirar. Medido el 2026-08-06 depurando ScreenCast en metal — la sonda
+     * llevaba minutos esperando un Response y el fichero mostraba sólo la línea de la llamada,
+     * que se lee como «se colgó al llamar» cuando en realidad estaba esperando como debía. Una
+     * sonda que no se puede leer MIENTRAS mide es media sonda. */
+    setvbuf(stdout, NULL, _IOLBF, 0);
+
     const char *cmd = argc > 1 ? argv[1] : "version";
     int multiple = 0, window = 0, save = 0;
     for (int i = 2; i < argc; i++) {