user@hostname ~$ guile GNU Guile 3.0.5 Copyright (C) 1995-2021 Free Software Foundation, Inc. Guile comes with ABSOLUTELY NO WARRANTY; for details type `,show w'. This program is free software, and you are welcome to redistribute it under certain conditions; type `,show c' for details. Enter `,help' for help. scheme@(guile-user)> blabla [C-c C-c] While reading expression: User interrupt scheme@(guile-user)> (move->fdes (fdes->inport 0) 9) $1 = # scheme@(guile-user)> [C-c C-C] user@hostname ~$ What I expected: While reading expression: User interrupt Your file descriptor may vary. My suspicion: look at libguile/scmsigs.c (start_signal_delivery_thread), in particular: if (pipe2 (signal_pipe, O_CLOEXEC) != 0) scm_syserror (NULL); signal_pipe[0] and signal_pipe[1] don't seem to be added to the port table, so primitive-move->fdes does not know about the signal pipes and will silently overwrite them. Greetings, Maxime