diff --git a/osdep/Thread.hpp b/osdep/Thread.hpp index 7fb38d8b0..4f90dc0bf 100644 --- a/osdep/Thread.hpp +++ b/osdep/Thread.hpp @@ -125,6 +125,10 @@ public: throw() { memset(&_tid,0,sizeof(_tid)); + pthread_attr_init(&_tattr); +#ifdef __LINUX__ + pthread_attr_setstacksize(&_tattr,8388608); // for MUSL libc and others, has no effect in normal glibc environments +#endif _started = false; } @@ -157,7 +161,7 @@ public: { Thread t; t._started = true; - if (pthread_create(&t._tid,(const pthread_attr_t *)0,&___zt_threadMain,instance)) + if (pthread_create(&t._tid,&t._tattr,&___zt_threadMain,instance)) throw std::runtime_error("pthread_create() failed, unable to create thread"); return t; } @@ -184,6 +188,7 @@ public: private: pthread_t _tid; + pthread_attr_t _tattr; volatile bool _started; };