diff --git a/p99/p99_clib.h b/p99/p99_clib.h
index effb306ca13351ac3cfae541744489a6ed2bbb77..ea275d042a5b6a3061b196b3c07fc4b74252189d 100644
--- a/p99/p99_clib.h
+++ b/p99/p99_clib.h
@@ -56,7 +56,7 @@ void *aligned_alloc(size_t p00_alignment, size_t p00_size) {
 /* In both cases this is guaranteed to do the correct
    initialization. */
 P99_WEAK(p00_cb)
-p99_callback_stack p00_at_quick_exit;
+p99_callback_stack p00_at_quick_exit = P99_LIFO_INITIALIZER(0);
 
 /**
  ** @brief registers the function pointed to by @a p00_void_func, to be called
diff --git a/p99/p99_lifo.h b/p99/p99_lifo.h
index 642843467a1b47120e7a9066e9a1318dde39f19b..63251eafbb16f46e77877091b5f3b2be15995677 100644
--- a/p99/p99_lifo.h
+++ b/p99/p99_lifo.h
@@ -32,7 +32,7 @@
 # define P99_LIFO_DECLARE(T)                    \
 typedef T P99_PASTE2(p00_lifo_, T);             \
 P99_DECLARE_ATOMIC(P99_PASTE2(p00_lifo_, T))
-
+# define P99_LIFO_INITIALIZER(VAL) ATOMIC_VAR_INIT((void*)VAL)
 
 /**
  ** @brief Return a pointer to the top element of an atomic LIFO @a L
@@ -134,6 +134,7 @@ P00_DOCUMENT_PERMITTED_ARGUMENT(P99_LIFO_CLEAR, 0)
 
 # define P99_LIFO(T) P99_PASTE2(p00_lifo_, T)
 # define P99_LIFO_DECLARE(T) typedef T P99_LIFO(T)
+# define P99_LIFO_INITIALIZER(VAL) ((void*)VAL)
 
 #define P99_LIFO_TOP(L)  (*(L))