diff --git a/ivette/src/frama-c/plugins/eva/EvaReady/index.tsx b/ivette/src/frama-c/plugins/eva/EvaReady/index.tsx
index 4672816c59e51e1b9d8e3361b0c2feb43c691f2a..c35354ba7231bae8bc70ce5dbbdc810cd72748e7 100644
--- a/ivette/src/frama-c/plugins/eva/EvaReady/index.tsx
+++ b/ivette/src/frama-c/plugins/eva/EvaReady/index.tsx
@@ -20,7 +20,7 @@
 /*                                                                          */
 /* ************************************************************************ */
 
-import React from 'react';
+import React, { useEffect } from 'react';
 import { GlobalState, useGlobalState } from 'dome/data/states';
 import * as States from 'frama-c/states';
 import { Button } from 'dome/controls/buttons';
@@ -29,13 +29,32 @@ import Gallery from 'dome/controls/gallery.json';
 
 import gearsIcon from '../images/gears.svg';
 import './style.css';
+import { onSignal } from 'frama-c/server';
 
-const ackAbortedState = new GlobalState(false);
+class AckAbortedState extends GlobalState<boolean> {
+  #signalHookSet = false;
+
+  constructor(initValue: boolean) {
+    super(initValue);
+  }
+
+  setupSignalHooks(): void {
+    if (!this.#signalHookSet) {
+      onSignal(Eva.signalComputationState,
+        () => ackAbortedState.setValue(false));
+      this.#signalHookSet = true;
+    }
+  }
+}
+
+const ackAbortedState = new AckAbortedState(false);
 
 const EvaReady: React.FC = ({ children }) => {
   const state = States.useSyncValue(Eva.computationState);
   const [ackAborted, setAckAborted] = useGlobalState(ackAbortedState);
 
+  useEffect(() => ackAbortedState.setupSignalHooks());
+
   switch (state) {
     case undefined:
     case 'not_computed': {