# Build error if PTHREAD\_STACK\_MIN is a function call

**URL:** <https://www.ruby-forum.com/t/build-error-if-pthread-stack-min-is-a-function-call/179342>\
**Category:** Development\
**Created:** [November 22, 2009, 9:09pm UTC](https://www.ruby-forum.com/t/build-error-if-pthread-stack-min-is-a-function-call/179342 "2009-11-22T21:09:24Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [November 22, 2009, 9:09pm UTC](https://www.ruby-forum.com/t/build-error-if-pthread-stack-min-is-a-function-call/179342/1 "2009-11-22T21:09:24Z")

</div>

e$B1sF#$G$9!#e(B

OpenSolaris e$B$Ge(B ruby e$B$r%S%k%I$7$F$\_$?$i%(%i!\<$,=P$^$7$?!#e(B

In file included from thread.c:213:  
thread\_pthread.c:470: error: enumerator value for `RUBY_STACK_MIN' not integer constant thread.c: In function`rb\_fd\_select’:  
thread.c:2307: warning: implicit declaration of function  
`select\_large\_fdset’  
make: \*\*\* [thread.o] Error 1

PTHREAD\_STACK\_MIN e$B$NDj5A$,e(B

#define PTHREAD\_STACK\_MIN ((size\_t)\_sysconf(\_SC\_THREAD\_STACK\_MIN))

e$B$H$$$&4X?t8F$S=P$7$K$J$C$F$$$F!"$3$l$re(B enum  
e$B$NCM$K$7$h$&$H$7$F$$$k$3$H$,e(B  
e$B860x$G$9!#e(B#if (RUBY\_STACK\_MIN\_LIMIT \< PTHREAD\_STACK\_MIN)  
e$B$J$I$b$G$-$^$;$s!#e(B

enum  
e$B$G$J$/%0%m!\<%P%kJQ?t$K$9$l$PF0$-$^$9$,!"$=$&$7$F$b$$$$$G$7$g$&$+!#e(B

OpenSolaris e$B$Oe(B supported e$B$G$be(B best effort  
e$B$G$b$J$$$N$G9=$o$J$$$H$$$($Pe(B  
e$B9=$o$J$$$N$G$9$,!"B\>$N%W%i%C%H%U%)!\<%`$G$b5/$-$k$+$b$7$l$J$$OC$G$9$7!“e(B  
e$B$3$3$rD\>$;$Pe(B make && make test  
e$B$,DL$k$/$i$$$K$OF0$$$?$N$G!”$G$-$l$Pe(B  
e$BD\>$7$?$$$H;W$$$^$9!#e(B

diff --git a/thread\_pthread.c b/thread\_pthread.c  
index c8ee4e1…43adc39 100644  
— a/thread\_pthread.c  
+++ b/thread\_pthread.c  
@@ -264,6 +264,8 @@ static struct {  
extern void \*STACK\_END\_ADDRESS;  
#endif

+static int RUBY\_STACK\_MIN\_LIMIT, RUBY\_STACK\_MIN,  
RUBY\_STACK\_SPACE\_LIMIT, RUBY\_STACK\_SPACE;  
+  
#undef ruby\_init\_stack  
void  
ruby\_init\_stack(volatile VALUE \*addr  
@@ -301,6 +303,20 @@ ruby\_init\_stack(volatile VALUE \*addr  
}  
}  
#endif  
+  
+#ifdef **SYMBIAN32**

- RUBY\_STACK\_MIN\_LIMIT = 64 \* 1024; /\* 64KB: Let’s be slightly  
more frugal on mobile platform \*/  
+#else
- RUBY\_STACK\_MIN\_LIMIT = 512 \* 1024; /\* 512KB \*/  
+#endif  
+#ifdef PTHREAD\_STACK\_MIN
- RUBY\_STACK\_MIN = (RUBY\_STACK\_MIN\_LIMIT \< PTHREAD\_STACK\_MIN) ?  
PTHREAD\_STACK\_MIN \* 2 : RUBY\_STACK\_MIN\_LIMIT;  
+#else
- RUBY\_STACK\_MIN = RUBY\_STACK\_MIN\_LIMIT;  
+#endif
- RUBY\_STACK\_SPACE\_LIMIT = 1024 \* 1024;
- RUBY\_STACK\_SPACE = (RUBY\_STACK\_MIN/5 \> RUBY\_STACK\_SPACE\_LIMIT ?
- 

```
                  RUBY_STACK_SPACE_LIMIT : RUBY_STACK_MIN/5);

```

}

#define CHECK\_ERR(expr)   
@@ -457,22 +473,6 @@ use\_cached\_thread(rb\_thread\_t \*th)  
return result;  
}

-enum {  
-#ifdef **SYMBIAN32**

- RUBY\_STACK\_MIN\_LIMIT = 64 \* 1024, /\* 64KB: Let’s be slightly  
more frugal on mobile platform \*/  
-#else
- RUBY\_STACK\_MIN\_LIMIT = 512 \* 1024, /\* 512KB \*/  
-#endif
- RUBY\_STACK\_MIN = (  
-#ifdef PTHREAD\_STACK\_MIN
- 

```
  (RUBY_STACK_MIN_LIMIT < PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN * 

```

2 :  
-#endif

- 

```
  RUBY_STACK_MIN_LIMIT),

```

- RUBY\_STACK\_SPACE\_LIMIT = 1024 \* 1024,
- RUBY\_STACK\_SPACE = (RUBY\_STACK\_MIN/5 \> RUBY\_STACK\_SPACE\_LIMIT ?
- 

```
                  RUBY_STACK_SPACE_LIMIT : RUBY_STACK_MIN/5)

```

## -};

static int  
native\_thread\_create(rb\_thread\_t \*th)  
{

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [November 22, 2009, 9:26pm UTC](https://www.ruby-forum.com/t/build-error-if-pthread-stack-min-is-a-function-call/179342/2 "2009-11-22T21:26:22Z")

</div>

Yuguie$B$G$9!#e(B

2009e$BG/e(B11e$B7ne(B22e$BF|e(B12:07 Yusuke ENDOH [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> e$B$H$$$&4X?t8F$S=P$7$K$J$C$F$$$F!"$3$l$re(B enum e$B$NCM$K$7$h$&$H$7$F$$$k$3$H$,e(B  
> e$B860x$G$9!#e(B#if (RUBY\_STACK\_MIN\_LIMIT \< PTHREAD\_STACK\_MIN) e$B$J$I$b$G$-$^$;$s!#e(B

e$B3:Ev$9$kItJ,$Oe(Bruby\_1\_9\_1e$B$K$O$J$$$HG’\<1$7$F$^$9$,!“$3$A$i$O%S%k%I$O$G$-$^$9$+e(B?  
e$BFC$K!”@hF|e(Bupe$B$7$?%j%j!\<%98uJd$N2\>e(Btare$B6L$O$I$&$G$7$g$&e(B?

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [November 23, 2009, 3:18am UTC](https://www.ruby-forum.com/t/build-error-if-pthread-stack-min-is-a-function-call/179342/3 "2009-11-23T03:18:41Z")

</div>

e$B1sF#$G$9!#e(B

2009e$BG/e(B11e$B7ne(B23e$BF|e(B5:18 Yugui [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> 2009e$BG/e(B11e$B7ne(B22e$BF|e(B12:07 Yusuke ENDOH [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > e$B$H$$$&4X?t8F$S=P$7$K$J$C$F$$$F!"$3$l$re(B enum e$B$NCM$K$7$h$&$H$7$F$$$k$3$H$,e(B  
> > e$B860x$G$9!#e(B#if (RUBY\_STACK\_MIN\_LIMIT \< PTHREAD\_STACK\_MIN) e$B$J$I$b$G$-$^$;$s!#e(B
> 
> e$B3:Ev$9$kItJ,$Oe(Bruby\_1\_9\_1e$B$K$O$J$$$HG’\<1$7$F$^$9$,!“$3$A$i$O%S%k%I$O$G$-$^$9$+e(B?  
> e$BFC$K!”@hF|e(Bupe$B$7$?%j%j!\<%98uJd$N2\>e(Btare$B6L$O$I$&$G$7$g$&e(B?

e$B$I$A$i$b%S%k%I$G$-$^$7$?!#e(B  
e$B:G6aF~$C$?JQ99$N$h$&$G$9$M!#e(Br25725 e$B$re(B revert  
e$B$9$l$P$h$5$=$&$G$9!#e(B

e$B$A$J$\_$Ke(B ruby\_1\_9\_1 e$B$H%j%j!\<%98uJd$Ne(B make test  
e$B$O6&$K0J2\<$G\<:GT$7$^$9!#e(B  
e$B860x$OD4$Y$F$^$;$s!#e(B

#2 test\_io.rb:11:in `\<top (required)\>':  
begin  
require “io/nonblock”  
r, w = IO.pipe  
w.nonblock = true  
w.write\_nonblock(“a” \* 100000)  
w.nonblock = false  
t1 = Thread.new { w.write(“b” \* 4096) }  
t2 = Thread.new { w.write(“c” \* 4096) }  
sleep 0.5  
r.sysread(4096).length  
sleep 0.5  
r.sysread(4096).length  
t1.join  
t2.join  
rescue LoadError  
end  
#=\> not finished in 10 seconds [ruby-dev:32566]  
FAIL 1/940 tests failed  
make: \*\*\* [btest-ruby] Error 1

e$B$^$?!"e(Bmake test-all  
e$B$O0J2\<$N$h$&$K$J$C$FAv$j=P$7$^$;$s$G$7$?!#$3$l$Oe(B  
r22802 e$B$r%P%C%/%]!\<%H$9$l$PD\>$j$=$&$G$9e(B  
(e$B3NG’$O$7$F$^$;$s$9$\_$^$;$se(B) e$B!#e(B

$ make test-all  
./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb  
./runruby.rb --extout=.ext – “./test/runner.rb”  
./test/runner.rb
