diff options
| author | Emilio Jesus Gallego Arias | 2019-04-04 00:09:10 +0200 |
|---|---|---|
| committer | Emilio Jesus Gallego Arias | 2019-04-04 00:09:10 +0200 |
| commit | 2af2ea43c199177efe64678506e4fe419ea17404 (patch) | |
| tree | 2c6aa80ad8a9c8f2da4c803da89b3e6742d3887f /stm/asyncTaskQueue.ml | |
| parent | f72de71c43f09554001bbe5808518171a68af335 (diff) | |
| parent | f374b79e08e135de11def93005110a833686c5f7 (diff) | |
Merge PR #9881: Protect some I/O routines from SIGALRM
Ack-by: SkySkimmer
Reviewed-by: ejgallego
Ack-by: maximedenes
Diffstat (limited to 'stm/asyncTaskQueue.ml')
| -rw-r--r-- | stm/asyncTaskQueue.ml | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/stm/asyncTaskQueue.ml b/stm/asyncTaskQueue.ml index 73b9ef7da0..d1bd3692ab 100644 --- a/stm/asyncTaskQueue.ml +++ b/stm/asyncTaskQueue.ml @@ -329,10 +329,12 @@ module Make(T : Task) () = struct let main_loop () = (* We pass feedback to master *) let slave_feeder oc fb = - Marshal.to_channel oc (RespFeedback (debug_with_pid fb)) []; flush oc in + Control.protect_sigalrm (fun () -> + Marshal.to_channel oc (RespFeedback (debug_with_pid fb)) []; flush oc) () + in ignore (Feedback.add_feeder (fun x -> slave_feeder (Option.get !slave_oc) x)); (* We ask master to allocate universe identifiers *) - UnivGen.set_remote_new_univ_id (bufferize (fun () -> + UnivGen.set_remote_new_univ_id (bufferize @@ Control.protect_sigalrm (fun () -> marshal_response (Option.get !slave_oc) RespGetCounterNewUnivLevel; match unmarshal_more_data (Option.get !slave_ic) with | MoreDataUnivLevel l -> l)); |
