[#40298] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <tenderlove@ruby-lang.org> — "NARUSE, Yui" <naruse@...>

成瀬です。

29 messages 2010/02/03
[#40307] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <tenderlove@ruby-lang.org> — KOSAKI Motohiro <kosaki.motohiro@...> 2010/02/03

小崎です

[#40339] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <tenderlove@ruby-lang.org> — Tanaka Akira <akr@...> 2010/02/07

2010年2月3日21:07 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:

[#40345] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <tenderlove@ruby-lang.org> — "NARUSE, Yui" <naruse@...> 2010/02/07

成瀬です。

[#40490] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <tenderlove@ruby-lang.org> — "NARUSE, Yui" <naruse@...> 2010/02/25

成瀬です。

[#40511] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <tenderlove@ruby-lang.org> — Aaron Patterson <aaron.patterson@...> 2010/02/27

2010/2/25 NARUSE, Yui <naruse@airemix.jp>:

[#40513] Re: [ruby-cvs:33760] Ruby:r26545 (trunk): Wed Feb 3 10:12:09 2010 Aaron Patterson <tenderlove@ruby-lang.org> — "U.Nakamura" <usa@...> 2010/02/27

アーロン宛

[#40317] [Bug:trunk] TCPServer#gets gets stuck — Yusuke ENDOH <mame@...>

遠藤です。

19 messages 2010/02/04
[#40371] Re: [Bug:trunk] TCPServer#gets gets stuck — Yusuke ENDOH <mame@...> 2010/02/09

遠藤です。

[#40382] [Bug:trunk] rubyspec: ObjectSpace.define_finalizer doesn't call self-referencing finalizers FAILED — Yusuke ENDOH <mame@...>

なかださんかまつもとさん

9 messages 2010/02/10

[#40418] [Feature #2746] ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション — Kenta Murata <redmine@...>

Feature #2746: ビルドする拡張ライブラリを configure 時に指定するための --with-exts オプション

11 messages 2010/02/15

[#40461] respond_to?(<protected method name>) returns true — "Akinori MUSHA" <knu@...>

 今さらかもしれませんが、 respond_to? で protected メソッドを

14 messages 2010/02/22
[#40462] Re: respond_to?(<protected method name>) returns true — Yukihiro Matsumoto <matz@...> 2010/02/23

まつもと ゆきひろです

[#40463] Re: respond_to?(<protected method name>) returns true — "Akinori MUSHA" <knu@...> 2010/02/23

At Tue, 23 Feb 2010 14:09:52 +0900,

[#40464] Re: respond_to?(<protected method name>) returns true — Yukihiro Matsumoto <matz@...> 2010/02/23

まつもと ゆきひろです

[#40467] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NARUSE, Yui" <naruse@...>

成瀬です。

27 messages 2010/02/23
[#40468] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "Akinori MUSHA" <knu@...> 2010/02/23

At Wed, 24 Feb 2010 01:28:24 +0900,

[#40469] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NARUSE, Yui" <naruse@...> 2010/02/23

(2010/02/24 1:57), Akinori MUSHA wrote:

[#40470] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "Akinori MUSHA" <knu@...> 2010/02/23

At Wed, 24 Feb 2010 02:07:00 +0900,

[#40472] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NAKAMURA, Hiroshi" <nakahiro@...> 2010/02/23

2010/2/24 Akinori MUSHA <knu@idaemons.org>:

[#40473] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "Akinori MUSHA" <knu@...> 2010/02/23

At Wed, 24 Feb 2010 06:06:13 +0900,

[#40486] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NAKAMURA, Hiroshi" <nakahiro@...> 2010/02/25

MjAxMC8yLzI0IEFraW5vcmkgTVVTSEEgPGtudUBpZGFlbW9ucy5vcmc+Ogo+PiAbJEIwRTlmPWhN

[#41367] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NAKAMURA, Hiroshi" <nakahiro@...> 2010/05/20

2010/2/25 NAKAMURA, Hiroshi <nakahiro@gmail.com>:

[#41373] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "Akinori MUSHA" <knu@...> 2010/05/20

 長いことほとんど Ruby に時間が割けておらずすみません。

[#41518] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NAKAMURA, Hiroshi" <nakahiro@...> 2010/06/03

2010/5/20 Akinori MUSHA <knu@idaemons.org>:

[#41520] Re: [ruby-cvs:33954] Ruby:r26739 (trunk): * ext/openssl/ossl_digest.c (GetDigestPtr): Allow to pass the — "NARUSE, Yui" <naruse@...> 2010/06/03

成瀬です。

[#40492] [Bug #2794] Aborted (core dumped) BUG on Ruby/DL — Takao NISHI <redmine@...>

Bug #2794: Aborted (core dumped) BUG on Ruby/DL

10 messages 2010/02/26

[ruby-dev:40310] Re: Why can't we use get_stack()

From: KOSAKI Motohiro <kosaki.motohiro@...>
Date: 2010-02-03 13:35:54 UTC
List: ruby-dev #40310
2010年2月3日21:19 KOSAKI Motohiro <kosaki.motohiro@gmail.com>:
> 小崎です
>
> p26549で、FreeBSDではgetrlimit()ではメインスレッドのスタックサイズが取れない問題に対する対処が入りましたが、
> thread_pthread.c には、知りうる限り全OSを網羅しているスタック情報取得関数get_stack()があるので、
> これを使うべきじゃないかという疑問があります。
>
> なにか不都合ありますでしょうか?
>
> ps IRCで聞かれましたがLinuxのglibcはpthread_getattr_np()でメインスレッドのスタックも正しくとれるので、
> get_stack()は意図通り動きます。LinuxThradまで遡ると自信ないけど

現状、configureがHAVE_PTHREAD_GETATTR_NP を絶対ONにしないので、get_stack()は
定義されないという指摘をいただきました(*)
修正したパッチを送ります。

(*) すでに使われている箇所があるのに、なんでそうなるの(T_T)


---
 configure.in     |    5 ++++-
 thread_pthread.c |   32 +++++++++++++-------------------
 2 files changed, 17 insertions(+), 20 deletions(-)

diff --git a/configure.in b/configure.in
index da63857..9b51b80 100644
--- a/configure.in
+++ b/configure.in
@@ -1507,7 +1507,10 @@ if test x"$enable_pthread" = xyes; then
     else
 	AC_MSG_WARN("Don't know how to find pthread library on your system
-- thread support disabled")
     fi
-    AC_CHECK_FUNCS(nanosleep sched_yield pthread_attr_setinheritsched)
+    AC_CHECK_FUNCS(nanosleep sched_yield pthread_attr_setinheritsched \
+	pthread_getattr_np pthread_attr_get_np \
+	pthread_get_stackaddr_np pthread_get_stacksize_np \
+	thr_stksegment pthread_stackseg_np)
     if test x"$ac_cv_func_nanosleep" = xno; then
        AC_CHECK_LIB(rt, nanosleep)
        if test x"$ac_cv_lib_rt_nanosleep" = xyes; then
diff --git a/thread_pthread.c b/thread_pthread.c
index d2d8b04..da97371 100644
--- a/thread_pthread.c
+++ b/thread_pthread.c
@@ -234,10 +234,10 @@ get_stack(void **addr, size_t *size)
     CHECK_ERR(pthread_attr_getstacksize(&attr, size));
 # endif
     CHECK_ERR(pthread_attr_getguardsize(&attr, &guard));
+    *size -= guard;
 # ifndef HAVE_PTHREAD_GETATTR_NP
     pthread_attr_destroy(&attr);
 # endif
-    size -= guard;
 #elif defined HAVE_PTHREAD_GET_STACKADDR_NP && defined
HAVE_PTHREAD_GET_STACKSIZE_NP
     pthread_t th = pthread_self();
     *addr = pthread_get_stackaddr_np(th);
@@ -296,14 +296,11 @@ ruby_init_stack(volatile VALUE *addr
     }
 #endif
     {
-	size_t size = 0, space = 0;
-#if defined(__FreeBSD__) || defined(__DragonFly)
-	pthread_attr_t attr;
-	if (pthread_attr_init(&attr) == 0) {
-	    if (pthread_attr_get_np(native_main_thread.id, &attr) == 0)
-		pthread_attr_getstacksize(&attr, &size);
-	    pthread_attr_destroy(&attr);
-	}
+	size_t size = 0;
+	size_t space = 0;
+#ifdef STACKADDR_AVAILABLE
+	void* addr;
+	get_stack(&addr, &size);
 #elif defined(HAVE_GETRLIMIT)
 	struct rlimit rlim;
 	if (getrlimit(RLIMIT_STACK, &rlim) == 0) {
@@ -328,17 +325,14 @@ native_thread_init_stack(rb_thread_t *th)
 	th->machine_stack_maxsize = native_main_thread.stack_maxsize;
     }
     else {
-#ifdef HAVE_PTHREAD_GETATTR_NP
-	pthread_attr_t attr;
+#ifdef STACKADDR_AVAILABLE
 	void *start;
-	CHECK_ERR(pthread_getattr_np(curr, &attr));
-# if defined HAVE_PTHREAD_ATTR_GETSTACK
-	CHECK_ERR(pthread_attr_getstack(&attr, &start, &th->machine_stack_maxsize));
-# elif defined HAVE_PTHREAD_ATTR_GETSTACKSIZE && defined
HAVE_PTHREAD_ATTR_GETSTACKADDR
-	CHECK_ERR(pthread_attr_getstackaddr(&attr, &start));
-	CHECK_ERR(pthread_attr_getstacksize(&attr, &th->machine_stack_maxsize));
-# endif
-	th->machine_stack_start = start;
+	size_t size;
+
+	if (get_stack(&start, &size) == 0) {
+	    th->machine_stack_start = start;
+	    th->machine_stack_maxsize = size;
+	}
 #else
 	rb_raise(rb_eNotImpError, "ruby engine can initialize only in the
main thread");
 #endif
-- 
1.6.6

In This Thread

Prev Next