Raise stack size to 8MB for pthreads
authornoobpwnftw <guo.bojun@gmail.com>
Sat, 14 Sep 2019 16:18:10 +0000 (00:18 +0800)
committerStéphane Nicolet <cassio@free.fr>
Mon, 16 Sep 2019 13:09:45 +0000 (15:09 +0200)
It seems there is no other way to specify stack size on std::thread than linker
flags and the effective flags are named differently in many toolchains. On
toolchains where pthread is always available, this patch changes the stack
size change in our C++ code via pthread to ensure a minimum stack size of 8MB,
instead of relying on linker defaults which may be platform-specific.

Also raises default stack size on OSX to current Linux default (8MB) just to
be safe.

Closes https://github.com/official-stockfish/Stockfish/pull/2303

No functional change

src/thread_win32_osx.h

index 8890054020459b0d57ca445ed4a17b9ab6c4c66d..5583a06e33f357924647df66fbc3d0a4fd4c9c45 100644 (file)
@@ -73,11 +73,14 @@ typedef std::condition_variable ConditionVariable;
 /// adjust it to TH_STACK_SIZE. The implementation calls pthread_create() with
 /// proper stack size parameter.
 
-#if defined(__APPLE__)
+/// On toolchains where pthread is always available, ensure minimum stack size
+/// instead of relying on linker defaults which may be platform-specific.
+
+#if defined(__APPLE__) || defined(__MINGW32__) || defined(__MINGW64__)
 
 #include <pthread.h>
 
-static const size_t TH_STACK_SIZE = 2 * 1024 * 1024;
+static const size_t TH_STACK_SIZE = 8 * 1024 * 1024;
 
 template <class T, class P = std::pair<T*, void(T::*)()>>
 void* start_routine(void* ptr)