[#31692] cannot run test-all — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
9 messages
2007/09/01
[#31697] Re: [ruby-list:43970] 次の1.8.6 — Tadayoshi Funaba <tadf@...>
> * [ruby-dev:31379]がペンディング
10 messages
2007/09/01
[#31699] Re: [ruby-list:43970] 次の1.8.6
— Urabe Shyouhei <shyouhei@...>
2007/09/01
Tadayoshi Funaba wrote:
[#31700] Re: [ruby-list:43970] 次の1.8.6
— Tadayoshi Funaba <tadf@...>
2007/09/01
> > WIN32OLE も Time も担当でないし、この報告が何をいいたいのかもよくわか
[#31703] Re: [ruby-list:43970] 次の1.8.6
— Urabe Shyouhei <shyouhei@...>
2007/09/01
Tadayoshi Funaba wrote:
[#31706] Re: [ruby-list:43970] 次の1.8.6
— Tadayoshi Funaba <tadf@...>
2007/09/01
> 今後サポートを続けるべきかはご判断にお任せします。OLEで使われてるん
[#31709] [BUG] non-initialized struct — Tanaka Akira <akr@...>
以下のようにすると [BUG] が出ます。
6 messages
2007/09/02
[#31715] string literal encoding — Nobuyoshi Nakada <nobu@...>
なかだです。
12 messages
2007/09/02
[#31716] Re: string literal encoding
— Yukihiro Matsumoto <matz@...>
2007/09/02
まつもと ゆきひろです
[#31729] packed st_table — Nobuyoshi Nakada <nobu@...>
なかだです。
8 messages
2007/09/04
[#31734] [m17n] String#chop & String#succ — Nobuyoshi Nakada <nobu@...>
なかだです。
2 messages
2007/09/05
[#31744] [m17n] String#encode — Nobuyoshi Nakada <nobu@...>
なかだです。
7 messages
2007/09/06
[#31768] shellescape — "Akinori MUSHA" <knu@...>
shellwords.rb に shellescape() 等を追加しようと思います。
5 messages
2007/09/10
[#31774] RSTRING(value)->ptr == NULL ? — Tietew <tietew+ruby-dev@...>
Tietew です。
7 messages
2007/09/11
[#31778] Re: RSTRING(value)->ptr == NULL ?
— Yukihiro Matsumoto <matz@...>
2007/09/12
まつもと ゆきひろです
[#31781] `scan': character encodings differ (ArgumentError) — Kouhei Sutou <kou@...>
須藤です。
5 messages
2007/09/15
[#31787] 文字列のinspect — eklerni <eklerni@...>
eklerniといいます。
5 messages
2007/09/15
[#31798] generator from Enumerable#map — "Yusuke ENDOH" <mame@...>
遠藤と申します。
7 messages
2007/09/19
[#31810] rb_obj_is_kind_of — Tanaka Akira <akr@...>
rb_obj_is_kind_of の TYPE(cl) ですが、[ruby-dev:31805] の例
5 messages
2007/09/21
[#31815] 文字列の式展開 — eklerni <eklerni@...>
eklerniといいます。
6 messages
2007/09/22
[#31835] Kernel#` is blocked with Ruby/GLib2 on Intel Mac — Kouhei Sutou <kou@...>
須藤です。
5 messages
2007/09/24
[#31842] 拡張ライブラリ内での SIGVTALRM — とみたまさひろ <tommy@...>
とみたです。
10 messages
2007/09/24
[#31848] huge `if' dumps core — "Yusuke ENDOH" <mame@...>
遠藤と申します。
5 messages
2007/09/24
[#31850] meta programming might dump core — "Yusuke ENDOH" <mame@...>
遠藤と申します。
2 messages
2007/09/24
[#31853] optimize T_OBJECT space — Tanaka Akira <akr@...>
T_OBJECT なインスタンスで、インスタンス変数の名前をクラス側
7 messages
2007/09/25
[#31880] Re: optimize T_OBJECT space
— Tanaka Akira <akr@...>
2007/09/28
In article <87r6kne799.fsf@fsij.org>,
[ruby-dev:31865] Re: 拡張ライブラリ内での SIGVTALRM
From:
Tanaka Akira <akr@...>
Date:
2007-09-25 20:38:48 UTC
List:
ruby-dev #31865
In article <20070926002126.06db083c.tommy@tmtm.org>,
とみたまさひろ <tommy@tmtm.org> writes:
> Solaris では、かなり前([ruby-dev:17878])にも同じような問題が起きたこと
> があるので、常に --enable-pthread しといた方が無難なのかもしれません。
--enable-pthread だと
% ./ruby -ve 'Thread.new {}
r, w = IO.pipe
r.sysread(10)'
ruby 1.8.6 (2007-09-26 patchlevel 5000) [i686-linux]
-e:3:in `sysread': Interrupted system call (Errno::EINTR)
from -e:3
とか、
% ./ruby -rnet/http -e '
Thread.new {}
h = Net::HTTP.new("www.ruby-lang.org")
h.read_timeout = nil
h.get("/")'
/home/akr/ruby/18pth/lib/ruby/1.8/net/protocol.rb:135:in `sysread': Interrupted system call (Errno::EINTR)
...
とか、
% ./ruby -e 'Thread.new {}
r, w = IO.pipe
p w.syswrite("a" * 1024 * 1024)
p w.syswrite("a" * 1024 * 1024)'
65536
-e:4:in `syswrite': Interrupted system call (Errno::EINTR)
from -e:4
とか、
nute(5:32:01)% ./ruby -e '
Thread.new { }
n = 5000
w = STDOUT
loop {
w.write("a" * n)
w.write("b" * n)
w.flush
}
'|./ruby -e '
n = 5000
r = STDIN
loop {
sleep 0.1
s = r.read(n); p [s.length, s.squeeze]
sleep 0.1
s = r.read(n); p [s.length, s.squeeze]
}
'
[5000, "a"]
[5000, "b"]
[5000, "a"]
[5000, "b"]
[5000, "a"]
[5000, "b"]
[5000, "a"]
[5000, "b"]
[5000, "a"]
[5000, "b"]
[5000, "a"]
[5000, "b"]
[5000, "a"]
[5000, "ba"]
[5000, "ab"]
[5000, "ba"]
[5000, "aba"]
[5000, "ab"]
...
% ./ruby -v
ruby 1.8.6 (2007-09-26 patchlevel 5000) [i686-linux]
とか起きるしなぁ。それはそれでなかなか。
なお、ここで使っている ./ruby は --enable-pthread です。
> # setitimer(ITIMER_VIRTUAL) はユーザー空間での CPU 時間がカウントされる
> # ものだと思っていたので、システムコール中に SIGVTALRM が発生するのが不
> # 思議。そういうものではないのかな…。
この件がそうであるかどうかはわかりませんが、
setitimer(ITIMER_VIRTUAL) がシステムコール中に SIGVTALRM を
引き起こす例をひとつ知っています。
拡張ライブラリが内部的にネイティブスレッドを使っていて、その
ネイティブスレッドが SIGVTARLM をマスクしている場合には、
SIGVTARLM がシステムコール中に発生することがあります。そのネ
イティブスレッドがユーザー空間での CPU 時間を消費してタイマ
が発火した時そのネイティブスレッドがシグナルを受け付けない場
合、他の、システムコールでブロックしているスレッドにシグナル
が到着する、というストーリーみたいです。
% cat extconf.rb
require 'mkmf'
have_library('pthread')
create_makefile('pth')
% cat pth.c
#include <stdlib.h>
#include <errno.h>
#include <signal.h>
#include <pthread.h>
static void *
loop(void *arg)
{
sigset_t sigset;
int ret;
if (sigfillset(&sigset) == -1) { perror("sigfillset"); exit(1); }
ret = pthread_sigmask(SIG_BLOCK, &sigset, NULL);
if (ret != 0) { perror("pthread_sigmask"); exit(1); }
while (1);
}
void
Init_pth()
{
pthread_t pth;
int ret;
ret = pthread_create(&pth, NULL, loop, NULL);
if (ret != 0) { errno = ret; perror("pthread_create"); exit(1); }
}
% ruby-1.8 extconf.rb
checking for main() in -lpthread... yes
creating Makefile
% make
gcc -I. -I. -I/home/akr/ruby/18/lib/ruby/1.8/i686-linux -I. -fPIC -g -O2 -c pth.c
gcc -shared -o pth.so pth.o -L. -L/home/akr/ruby/18/lib -Wl,-R/home/akr/ruby/18/lib -L. -rdynamic -Wl,-export-dynamic -lpthread -ldl -lcrypt -lm -lc
% ruby-1.8 -rpth -e '
Thread.new {}
r, w = IO.pipe
r.sysread(10)'
-e:4:in `sysread': Interrupted system call (Errno::EINTR)
from -e:4
zsh: exit 1 ruby-1.8 -rpth -e ' Thread.new {} r, w = IO.pipe r.sysread(10)'
% strace ruby-1.8 -rpth -e '
Thread.new {}
r, w = IO.pipe
r.sysread(10)'
...
read(3, 0x8135308, 10) = ? ERESTARTSYS (To be restarted)
--- SIGVTALRM (Virtual timer expired) @ 0 (0) ---
sigreturn() = ? (mask now [])
...
% ruby-1.8 -v
ruby 1.8.6 (2007-09-26 patchlevel 5000) [i686-linux]
なお、この ruby-1.8 は --enable-pthread ではありません。
--
[田中 哲][たなか あきら][Tanaka Akira]