>> > * bootstraptest/test_thread.rb: Skip 2 tests. The first one appears to=
 hang, the second crashes with a sigaltstack error.
>>
>> signalstack error seems because of the lack of OpenBSD specific setting.
>> see thread_pthread.c:506 and edit it.
>
> I don't think the problem is there, as reading the documentation the call=
 there (pthread_stackseg_np(pthread_self(), &stk)) appears to be correct. =
=A0The error I get in the 2nd bootstrap test is "rb_register_sigaltstack. m=
alloc error", which comes from signal.c:
>
> =A0439 =A0 =A0 newSS.ss_sp =3D th->altstack =3D malloc(ALT_STACK_SIZE);
> =A0440 =A0 =A0 if (newSS.ss_sp =3D=3D NULL)
> =A0441 =A0 =A0 =A0 =A0 /* should handle error */
> =A0442 =A0 =A0 =A0 =A0 rb_bug("rb_register_sigaltstack. malloc error\n");
>
> If you change the rb_bug call to a return, the 2nd bootstrap test passes.=
 =A0I'm not sure if that's a valid fix, as it probably affects signal handl=
ing for the thread. =A0I first tried to change it to raise NoMemError, but =
that causes a segfault. =A0Like the comment there states, the error should =
be handled, but I'm not sure how best to do that. =A0I don't think this is =
an error caused by OpenBSD, just one that only manifests itself on OpenBSD.

I wonder why OpenBSD can't allocate SIGSTKSZ size. Usually it's very small.
Can you please tell us openbsd has which value of SIGSTKSZ and MINSIGSTKSZ?

Also, can you please try following stack size reducing patch?

Index: signal.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- signal.c	(revision 32646)
+++ signal.c	(working copy)
@@ -423,10 +423,12 @@
 #ifdef POSIX_SIGNAL

 #ifdef USE_SIGALTSTACK
-#ifdef SIGSTKSZ
-#define ALT_STACK_SIZE (SIGSTKSZ*2)
-#else
-#define ALT_STACK_SIZE (4*1024)
+ #if defined(__OpenBSD__)
+  #define ALT_STACK_SIZE (4*1024)
+  //#define ALT_STACK_SIZE (MINSIGSTKSZ*2)
+ #elif defined(SIGSTKSZ)
+  #define ALT_STACK_SIZE (SIGSTKSZ*2)
+ #else
+  #define ALT_STACK_SIZE (4*1024)
 #endif
 /* alternate stack for SIGSEGV */
 void