diff --git a/src/plugins/e-acsl/share/e-acsl/observation_model/segment_model/e_acsl_shadow_layout.c b/src/plugins/e-acsl/share/e-acsl/observation_model/segment_model/e_acsl_shadow_layout.c
index 19a21ed60e40265d2d02791aa8f8a11fb4755162..7d627c5348637d92e28d5c739896899a9bf8db55 100644
--- a/src/plugins/e-acsl/share/e-acsl/observation_model/segment_model/e_acsl_shadow_layout.c
+++ b/src/plugins/e-acsl/share/e-acsl/observation_model/segment_model/e_acsl_shadow_layout.c
@@ -43,6 +43,8 @@ size_t increase_stack_limit(const size_t size) {
       if (result != 0) {
         private_abort("setrlimit: %s \n", strerror(errno));
       }
+    } else {
+      stacksz = rl.rlim_cur;
     }
   } else {
     private_abort("getrlimit: %s \n", strerror(errno));
@@ -50,21 +52,13 @@ size_t increase_stack_limit(const size_t size) {
   return (size_t)stacksz;
 }
 
-size_t get_default_stack_size() {
+size_t get_stack_size() {
   struct rlimit rlim;
   private_assert(!getrlimit(RLIMIT_STACK, &rlim),
     "Cannot detect program's stack size", NULL);
   return rlim.rlim_cur;
 }
 
-size_t get_stack_size() {
-#ifndef E_ACSL_STACK_SIZE
-  return get_default_stack_size();
-#else
-  return increase_stack_limit(E_ACSL_STACK_SIZE*MB);
-#endif
-}
-
 uintptr_t get_stack_start(int *argc_ref,  char *** argv_ref) {
   char **env = environ;
   while (env[1])
diff --git a/src/plugins/e-acsl/share/e-acsl/observation_model/segment_model/e_acsl_shadow_layout.h b/src/plugins/e-acsl/share/e-acsl/observation_model/segment_model/e_acsl_shadow_layout.h
index 098074488b3b30128e27ddc2892567c6a1fc79a1..b15415383d498ef48e84b392a5e6323cbbac5912 100644
--- a/src/plugins/e-acsl/share/e-acsl/observation_model/segment_model/e_acsl_shadow_layout.h
+++ b/src/plugins/e-acsl/share/e-acsl/observation_model/segment_model/e_acsl_shadow_layout.h
@@ -134,13 +134,20 @@ static __thread int id_tbss;
 extern char ** environ;
 
 /*! \brief Set a new soft stack limit
- * \param size - new stack size in bytes */
+ *
+ * If the new stack size is greater than the max stack size, then set to the max
+ * stack size. If the new stack size is less than the current stack size, don't
+ * do anything.
+ *
+ * Abort if an error occur when retrieving or setting the stack size.
+ *
+ * \param size - new stack size in bytes
+ * \return the new stack size in bytes.
+ */
 size_t increase_stack_limit(const size_t size);
 
 /*! \brief Return byte-size of a program's stack. The return value is the soft
  * stack limit, i.e., it can be programmatically increased at runtime. */
-size_t get_default_stack_size();
-
 size_t get_stack_size();
 
 /*! \brief Return greatest (known) address on a program's stack.