+ sz = stack_size;
+ pthread_attr_init(&attr);
+ res = pthread_attr_setstacksize(&attr, sz);
+
+#ifdef PTHREAD_STACK_MIN
+ if (res == EINVAL) {
+ /* Invalid size, try again with a multiple of PTHREAD_STACK_MIN. */
+ size_t rem = sz % PTHREAD_STACK_MIN;
+ if (rem != 0 || sz == 0) {
+ size_t sz2 = sz - rem + PTHREAD_STACK_MIN;
+ XBT_DEBUG("pthread_attr_setstacksize failed for %#zx, try again with %#zx",
+ sz, sz2);
+ sz = sz2;
+ res = pthread_attr_setstacksize(&attr, sz);
+ }