diff --git a/doc/developer/advance.tex b/doc/developer/advance.tex
index 2489c968a1927c694a9065eb189fe51d7caf914d..54d485f04fa5143478f29a72319ce5a5c1bd7c66 100644
--- a/doc/developer/advance.tex
+++ b/doc/developer/advance.tex
@@ -991,7 +991,8 @@ test
 & \textit{None}
 \\
 & \texttt{TIMEOUT}\nscodeidxdef{Test!Directive}{TIMEOUT}
-& kill the test after the given duration and report a failure
+& kill the test after the given duration (in seconds of CPU user time)
+and report a failure
 & \textit{None}
 \\
 & \texttt{NOFRAMAC}\nscodeidxdef{Test!Directive}{NOFRAMAC}
diff --git a/ptests/ptests.ml b/ptests/ptests.ml
index 36fb036537e47b8837d792debbd2cbf28806d5d0..78469525850ec15315fe997160a282d72e422b8d 100644
--- a/ptests/ptests.ml
+++ b/ptests/ptests.ml
@@ -1037,7 +1037,7 @@ let basic_command_string =
       end
     in
     if command.timeout = "" then raw_command
-    else "timeout " ^ command.timeout ^ " " ^ raw_command
+    else "ulimit -t " ^ command.timeout ^ " && " ^ raw_command
 
 (* Searches for executable [s] in the directories contained in the PATH
    environment variable. Returns [None] if not found, or
@@ -1128,7 +1128,7 @@ let command_string command =
     | "" -> command_string
     | s ->
       Printf.sprintf
-        "%s; if test $? -eq 124; then \
+        "%s; if test $? -gt 127; then \
          echo 'TIMEOUT (%s); ABORTING EXECUTION' > %s; \
          fi"
         command_string s (Filename.sanitize stderr)
diff --git a/tests/syntax/string_concat.c b/tests/syntax/string_concat.c
index 9669f9687ef7cf8cc60d35c0a1ce2f5b1610b5d3..8073c72f04c4f592b9ff7bde6f90863df3fd80c8 100644
--- a/tests/syntax/string_concat.c
+++ b/tests/syntax/string_concat.c
@@ -1,5 +1,5 @@
 /* run.config*
-TIMEOUT: 45s
+TIMEOUT: 45
 OPT: -eva
 */
 
diff --git a/tests/syntax/wstring_concat.c b/tests/syntax/wstring_concat.c
index 86d7d3ff4ea605a03428e8bcdae6e5be9ea69642..4c72ed31cce316e01de8f4a1ad7487f9c8e435e0 100644
--- a/tests/syntax/wstring_concat.c
+++ b/tests/syntax/wstring_concat.c
@@ -1,5 +1,5 @@
 /* run.config*
-TIMEOUT: 45s
+TIMEOUT: 45
 OPT: -eva
 */