[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Interrupting a running jitter program
From: |
Luca Saiu |
Subject: |
Re: Interrupting a running jitter program |
Date: |
Fri, 29 Nov 2019 20:24:22 +0100 |
User-agent: |
Gnus (Gnus v5.13), GNU Emacs 27.0.50, x86_64-pc-linux-gnu |
Hello José.
On 2019-11-29 at 20:01 +0100, Jose E. Marchesi wrote:
> In poke we have a SIGINT handler for the repl. However, we would like
> to be able to stop a running PVM program using Ctrl-C.
>
> It follows we would need a way for Jitter to check for a global every N
> instructions, and call 'exitvm' with an error state when the global
> indicates the program shall be terminated.
>
> Does Jitter support something like this?
> Would it be possible to add it?
No, but of course it is a desirable feature.
I am happy that you are formulating the problem in terms of safe points,
which is the right approach. Interrupting a VM program with a signal
would be messy, and I do not plan to ever support that; however a signal
handler can set a global and return.
An easy solution for this should be:
a) inserting a check before branches going backwards, and at the
beginning of every procedure.
b) checking after blocking library calls which can be interrupted by a
signal. Right before a blocking library call such as getc, readline or
recv the VM program should set a thread-local flag (the entire state
runtime is thread-local), and then unset it if after the library call is
done if it has not been interrupted.
I have never done b) and maybe not a) either, but I am very interested.
This mechanism is also useful for concurrent garbage collection. (My
concurrent GC was interruptable at every place, with no explicit
safepoints -- which in retrospect was a bad idea: a very complicated and
fragile solution.)
I am a little worried about the performance impact of a).
I will try and do something right now. Coming in IRC.
--
Luca Saiu
* My personal web site: http://ageinghacker.net
* GNU epsilon: http://www.gnu.org/software/epsilon
* Jitter: http://ageinghacker.net/projects/jitter
I support everyone's freedom of mocking any opinion or belief, no
matter how deeply held, with open disrespect and the same unrelented
enthusiasm of a toddler who has just learned the word "poo".
signature.asc
Description: PGP signature