Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
* [Caml-list] Sys.signal / Sys.set_signal broken in native code?
@ 2018-04-22 13:16 Dmitri Boulytchev
  2018-04-22 13:33 ` ygrek
  0 siblings, 1 reply; 2+ messages in thread
From: Dmitri Boulytchev @ 2018-04-22 13:16 UTC (permalink / raw)
  To: caml-list

     Hello,


     Sys.signal / Sys.set_signal doest not work in native code. The 
following code


     let _ =
       Sys.set_signal Sys.sigalrm (Sys.Signal_handle (fun _ -> failwith 
"Timeout..."));
       ignore (Unix.alarm 5);
       while true do () done


     loops forever being compiled with ocamlopt (and raises the expected 
exception with ocamlc). Am I missing something?

     Ubuntu 16.04 64bit, tried with 4.06.0 and 4.06.1


     Best regards,

     Dmitry Boulytchev,

     St Petersburg State University.


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [Caml-list] Sys.signal / Sys.set_signal broken in native code?
  2018-04-22 13:16 [Caml-list] Sys.signal / Sys.set_signal broken in native code? Dmitri Boulytchev
@ 2018-04-22 13:33 ` ygrek
  0 siblings, 0 replies; 2+ messages in thread
From: ygrek @ 2018-04-22 13:33 UTC (permalink / raw)
  To: caml-list

On Sun, 22 Apr 2018 16:16:59 +0300
Dmitri Boulytchev <dboulytchev@gmail.com> wrote:


>      let _ =
>        Sys.set_signal Sys.sigalrm (Sys.Signal_handle (fun _ -> failwith 
> "Timeout..."));
>        ignore (Unix.alarm 5);
>        while true do () done
> 
> 
>      loops forever being compiled with ocamlopt (and raises the expected 
> exception with ocamlc). Am I missing something?

OCaml runtime turns signals into quasi-asynchronous - they are invoked only at allocation points in native code.
There is no allocation point inside empty loop so there is no chance to call signal handler.
My understanding is that having truly asynchronous signals would be a nightmare wrt runtime state
in signal handler (cf. C signal code restrictions) 

-- 

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-04-22 13:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-04-22 13:16 [Caml-list] Sys.signal / Sys.set_signal broken in native code? Dmitri Boulytchev
2018-04-22 13:33 ` ygrek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox