bug-guile
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#48565: Using move->fdes to move stdin to 9 + interrupt (C-c) exits g


From: Maxime Devos
Subject: bug#48565: Using move->fdes to move stdin to 9 + interrupt (C-c) exits guile
Date: Fri, 21 May 2021 14:59:44 +0200
User-agent: Evolution 3.34.2

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 = #<input: file /dev/pts/8>
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

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]