diff --git a/mongoose.c b/mongoose.c
index e6e07dc78e0465fdaf399be55150dd7b6b6025e5..8515108ffc5bcc3063f190957f4ef44abf04448a 100644
--- a/mongoose.c
+++ b/mongoose.c
@@ -1397,8 +1397,11 @@ int mg_start_thread(mg_thread_func_t func, void *param) {
 
   (void) pthread_attr_init(&attr);
   (void) pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-  // TODO(lsm): figure out why mongoose dies on Linux if next line is enabled
-  // (void) pthread_attr_setstacksize(&attr, sizeof(struct mg_connection) * 5);
+
+#if USE_STACK_SIZE > 1
+  // Compile-time option to control stack size, e.g. -DUSE_STACK_SIZE=16384
+  (void) pthread_attr_setstacksize(&attr, USE_STACK_SIZE);
+#endif
 
   result = pthread_create(&thread_id, &attr, func, param);
   pthread_attr_destroy(&attr);