[ruby-dev:3003] Re: experimental release 1.1b9_27
From:
WATANABE Tetsuya <tetsu@...>
Date:
1998-06-24 00:55:16 UTC
List:
ruby-dev #3003
続けちゃってごめんなさい(また長いです)。Linux での変な動きの件です。
malloc 関係かなと思い、gnumalloc をプリロードして(RedHat Linux での
Netscape 付属品)みたら、backtrace がちゃんととれました。
ruby-1.1b9_27 で、「tcltklib/extconf.rb にパッチ(TurboLinux 用 /usr/jp
ディレクトリに依存しているため)。ext/Setup で curses に「#」を加える」
という修正をしています。
./configure --prefix=/t でコンパイル、make test は OK で make install
しています。
あと、次の環境変数を設定して実行しました。
export LD_PRELOAD=/t/lib/netscape/gnumalloc.glibc.so
------------------------------
#0 0x40080c29 in __kill ()
#1 0x400525d9 in raise (sig=134886792)
#2 0x808303d in sigsegv (sig=11) at signal.c:332
#3 0xbfffe614 in ?? ()
#4 0x4000b8ce in free ()
#5 0x805e8ed in obj_free (obj=134934628) at gc.c:738
#6 0x805e5b0 in gc_sweep () at gc.c:609
#7 0x805ea1e in gc_gc () at gc.c:845
#8 0x805ddc5 in rb_newobj () at gc.c:257
#9 0x8085a31 in str_new (ptr=0x0, len=10) at string.c:40
#10 0x80916c7 in big2str (x=134934708, base=16) at bignum.c:313
#11 0x808451c in f_sprintf (argc=1, argv=0xbfffe9e4) at sprintf.c:378
#12 0x8063107 in f_printf (argc=6, argv=0xbfffe9d0) at io.c:1464
#13 0x8055746 in rb_call0 (klass=135134348, recv=135131368, id=6401, argc=6, argv=0xbfffe9d0, body=0x80d77f8, nosuper=1) at eval.c:3331
#14 0x80560c1 in rb_call (klass=135134348, recv=135131368, mid=6401, argc=6, argv=0xbfffe9d0, scope=1) at eval.c:3598
#15 0x8052760 in rb_eval (self=135131368, node=0x80d1380) at eval.c:1985
#16 0x80515cc in rb_eval (self=135131368, node=0x80d1358) at eval.c:1596
#17 0x805193c in rb_eval (self=135131368, node=0x80d113c) at eval.c:1705
#18 0x80515cc in rb_eval (self=135131368, node=0x80d1114) at eval.c:1596
#19 0x8055e22 in rb_call0 (klass=135134488, recv=135131368, id=8529, argc=0, argv=0xbffff13c, body=0x80d1b50, nosuper=0) at eval.c:3517
#20 0x80560c1 in rb_call (klass=135134488, recv=135131368, mid=8529, argc=2, argv=0xbffff134, scope=1) at eval.c:3598
#21 0x8052760 in rb_eval (self=135131368, node=0x80cd938) at eval.c:1985
#22 0x80515cc in rb_eval (self=135131368, node=0x80cd8fc) at eval.c:1596
#23 0x805193c in rb_eval (self=135131368, node=0x80cd870) at eval.c:1705
#24 0x80515cc in rb_eval (self=135131368, node=0x80cd80c) at eval.c:1596
#25 0x80500ce in eval_node (self=135131368) at eval.c:925
#26 0x805017d in ruby_run () at eval.c:955
#27 0x804f12c in main (argc=4, argv=0xbffff828, envp=0xbffff83c) at main.c:32
#28 0x804f0ae in ___crt_dummy__ ()
------------------------------
同時に strace もしたので、参考にしてください(gnumalloc がここにはでて
こないのですがそういうものかな? それとも役立っていない情報なのか?)。
------------------------------
execve("/home/tetsu/bin/hd.rb", ["hd.rb", "-n", "/home/tetsu/Xerr.txt-2"], [/* 32 vars */]) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40006000
mprotect(0x40000000, 19984, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
mprotect(0x8048000, 380687, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
stat("/etc/ld.so.cache", {st_mode=S_IFREG|0644, st_size=10427, ...}) = 0
open("/etc/ld.so.cache", O_RDONLY) = 4
mmap(0, 10427, PROT_READ, MAP_SHARED, 4, 0) = 0x40007000
close(4) = 0
open(ptrace: umoven: I/O error
0xbfffffc3, O_RDONLY) = 4
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 12288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4000a000
mmap(0x4000a000, 6528, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 0) = 0x4000a000
mmap(0x4000c000, 2532, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x1000) = 0x4000c000
close(4) = 0
mprotect(0x4000a000, 6528, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
stat("/etc/ld.so.preload", 0xbffff7a4) = -1 ENOENT (No such file or directory)
open("./libdl.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libdl.so.1", O_RDONLY) = 4
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 12288, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4000d000
mmap(0x4000d000, 4008, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 0) = 0x4000d000
mmap(0x4000e000, 4276, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0) = 0x4000e000
close(4) = 0
mprotect(0x4000d000, 4008, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
open("./libm.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libm.so.5", O_RDONLY) = 4
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 36864, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40010000
mmap(0x40010000, 25012, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 0) = 0x40010000
mmap(0x40017000, 4480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x6000) = 0x40017000
close(4) = 0
mprotect(0x40010000, 25012, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
open("./libc.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.5", O_RDONLY) = 4
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 880640, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40019000
mmap(0x40019000, 646637, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 0) = 0x40019000
mmap(0x400b7000, 25100, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x9d000) = 0x400b7000
mmap(0x400be000, 204460, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x400be000
close(4) = 0
mprotect(0x40019000, 646637, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
munmap(0x40007000, 10427) = 0
mprotect(0x8048000, 380687, PROT_READ|PROT_EXEC) = 0
mprotect(0x4000a000, 6528, PROT_READ|PROT_EXEC) = 0
mprotect(0x4000d000, 4008, PROT_READ|PROT_EXEC) = 0
mprotect(0x40010000, 25012, PROT_READ|PROT_EXEC) = 0
mprotect(0x40019000, 646637, PROT_READ|PROT_EXEC) = 0
mprotect(0x40000000, 19984, PROT_READ|PROT_EXEC) = 0
personality(PER_LINUX) = 0
geteuid() = 5844
getuid() = 5844
getgid() = 500
getegid() = 500
brk(0x80adb9c) = 0x80adb9c
brk(0x80ae000) = 0x80ae000
brk(0x80af000) = 0x80af000
brk(0x80e0000) = 0x80e0000
brk(0x80e1000) = 0x80e1000
brk(0x80e2000) = 0x80e2000
brk(0x80e3000) = 0x80e3000
brk(0x80e4000) = 0x80e4000
brk(0x80e5000) = 0x80e5000
brk(0x80e6000) = 0x80e6000
brk(0x80e7000) = 0x80e7000
brk(0x80e8000) = 0x80e8000
brk(0x80e9000) = 0x80e9000
brk(0x80ea000) = 0x80ea000
brk(0x80eb000) = 0x80eb000
brk(0x80ec000) = 0x80ec000
brk(0x80ed000) = 0x80ed000
brk(0x80ee000) = 0x80ee000
brk(0x80ef000) = 0x80ef000
brk(0x80f0000) = 0x80f0000
brk(0x80f1000) = 0x80f1000
brk(0x80f2000) = 0x80f2000
brk(0x80f3000) = 0x80f3000
brk(0x80f4000) = 0x80f4000
brk(0x80f5000) = 0x80f5000
brk(0x80f6000) = 0x80f6000
brk(0x80f7000) = 0x80f7000
brk(0x80f8000) = 0x80f8000
brk(0x80f9000) = 0x80f9000
brk(0x80fa000) = 0x80fa000
brk(0x80fb000) = 0x80fb000
brk(0x80fc000) = 0x80fc000
brk(0x80fd000) = 0x80fd000
sigaction(SIGINT, {0x8082f90, [], 0}, NULL) = 0
sigaction(SIGBUS, {0x8083020, [], SA_INTERRUPT|SA_NOMASK|SA_ONESHOT}, {SIG_DFL}) = 0
sigaction(SIGSEGV, {0x8083030, [], SA_INTERRUPT|SA_NOMASK|SA_ONESHOT}, {SIG_DFL}) = 0
brk(0x80fe000) = 0x80fe000
brk(0x80ff000) = 0x80ff000
brk(0x8100000) = 0x8100000
getuid() = 5844
geteuid() = 5844
getgid() = 500
getegid() = 500
open("/home/tetsu/bin/hd.rb", O_RDONLY) = 4
close(4) = 0
open("/home/tetsu/bin/hd.rb", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0755, st_size=4555, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40007000
read(4, "#! /usr/local/bin/ruby\n# /home/"..., 4096) = 4096
brk(0x8101000) = 0x8101000
brk(0x8102000) = 0x8102000
read(4, "end\nend\n\nif $in_kanji_code =="..., 4096) = 459
brk(0x8103000) = 0x8103000
read(4, "", 4096) = 0
close(4) = 0
munmap(0x40007000, 4096) = 0
stat("/t/lib/ruby/site_ruby/i686-linux/kconv.rb", 0xbffff260) = -1 ENOENT (No such file or directory)
stat("/t/lib/ruby/site_ruby/kconv.rb", 0xbffff260) = -1 ENOENT (No such file or directory)
stat("/t/lib/ruby/i686-linux/kconv.rb", 0xbffff260) = -1 ENOENT (No such file or directory)
stat("/t/lib/ruby/kconv.rb", 0xbffff260) = -1 ENOENT (No such file or directory)
stat("./kconv.rb", 0xbffff260) = -1 ENOENT (No such file or directory)
stat("/t/lib/ruby/site_ruby/i686-linux/kconv.so", 0xbffff25c) = -1 ENOENT (No such file or directory)
stat("/t/lib/ruby/site_ruby/kconv.so", 0xbffff25c) = -1 ENOENT (No such file or directory)
stat("/t/lib/ruby/i686-linux/kconv.so", {st_mode=S_IFREG|0755, st_size=38227, ...}) = 0
stat("/etc/ld.so.cache", {st_mode=S_IFREG|0644, st_size=10427, ...}) = 0
open("/etc/ld.so.cache", O_RDONLY) = 4
mmap(0, 10427, PROT_READ, MAP_SHARED, 4, 0) = 0x40007000
close(4) = 0
open("/t/lib/ruby/i686-linux/kconv.so", O_RDONLY) = 4
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3"..., 4096) = 4096
mmap(0, 24576, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x400f0000
mmap(0x400f0000, 15868, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 0) = 0x400f0000
mmap(0x400f4000, 4416, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED, 4, 0x3000) = 0x400f4000
close(4) = 0
mprotect(0x400f0000, 15868, PROT_READ|PROT_WRITE|PROT_EXEC) = 0
open("./libc.so.5", O_RDONLY) = -1 ENOENT (No such file or directory)
munmap(0x40007000, 10427) = 0
brk(0x8104000) = 0x8104000
open("/home/tetsu/Xerr.txt-2", O_RDONLY) = 4
fstat(4, {st_mode=S_IFREG|0644, st_size=20193255, ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40007000
read(4, "\n\nXFree86 Version 3.3.2 / X Wi"..., 4096) = 4096
fstat(1, {st_mode=S_IFCHR|0666, st_rdev=makedev(1, 3), ...}) = 0
mmap(0, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x40008000
ioctl(1, TCGETS, 0xbfffe660) = -1 ENOTTY (Not a typewriter)
brk(0x8105000) = 0x8105000
brk(0x8106000) = 0x8106000
brk(0x8107000) = 0x8107000
brk(0x8108000) = 0x8108000
brk(0x8109000) = 0x8109000
brk(0x810a000) = 0x810a000
brk(0x810b000) = 0x810b000
write(1, "00000000 0a0a5846 72656538 3620"..., 4096) = 4096
brk(0x810c000) = 0x810c000
brk(0x810d000) = 0x810d000
brk(0x810e000) = 0x810e000
brk(0x810f000) = 0x810f000
brk(0x8110000) = 0x8110000
brk(0x8111000) = 0x8111000
write(1, "00000400 352c2063 79626572 3933"..., 4096) = 4096
brk(0x8112000) = 0x8112000
brk(0x8113000) = 0x8113000
brk(0x8114000) = 0x8114000
brk(0x8115000) = 0x8115000
brk(0x8116000) = 0x8116000
brk(0x8117000) = 0x8117000
write(1, "00000800 0a282a2a 2920584b 423a"..., 4096) = 4096
brk(0x8118000) = 0x8118000
brk(0x8119000) = 0x8119000
brk(0x811a000) = 0x811a000
brk(0x811b000) = 0x811b000
brk(0x811c000) = 0x811c000
brk(0x811d000) = 0x811d000
brk(0x811e000) = 0x811e000
read(4, " MB/s\n(--) SVGA: Using XAA (XFr"..., 4096) = 4096
write(1, "00000c00 282a2a29 20535647 413a"..., 4096) = 4096
brk(0x811f000) = 0x811f000
brk(0x8120000) = 0x8120000
brk(0x8121000) = 0x8121000
brk(0x8122000) = 0x8122000
brk(0x8123000) = 0x8123000
brk(0x8124000) = 0x8124000
brk(0x8125000) = 0x8125000
write(1, "00001000 204d422f 730a282d 2d29"..., 4096) = 4096
brk(0x8126000) = 0x8126000
brk(0x8127000) = 0x8127000
brk(0x8128000) = 0x8128000
brk(0x8129000) = 0x8129000
brk(0x812a000) = 0x812a000
write(1, "00001400 705f7265 765f632c 2045"..., 4096) = 4096
write(1, "00001800 2c207265 616c7465 6b2c"..., 4096) = 4096
read(4, "ffer at 0xfc000000 (4032MB)\n(--"..., 4096) = 4096
write(1, "00001c00 30302c20 4d4d494f 2040"..., 4096) = 4096
write(1, "00002000 66666572 20617420 3078"..., 4096) = 4096
write(1, "00002400 7468616e 20362d31 3220"..., 4096) = 4096
write(1, "00002800 33342c20 636c6764 3534"..., 4096) = 4096
read(4, "owed dot-clock: 170.000 MHz\n(**"..., 4096) = 4096
write(1, "00002c00 73653a20 74797065 3a20"..., 4096) = 4096
write(1, "00003000 6f776564 20646f74 2d63"..., 4096) = 4096
write(1, "00003400 41413a20 53637265 656e"..., 4096) = 4096
write(1, "00003800 73383663 3230322c 2073"..., 4096) = 4096
read(4, "49.87\n(--) SVGA: clocks: 64.98"..., 4096) = 4096
write(1, "00003c00 35342c20 63743635 3535"..., 4096) = 4096
write(1, "00004000 34392e38 370a282d 2d29"..., 4096) = 4096
brk(0x812b000) = 0x812b000
write(1, "00004400 413a2063 6c676435 3436"..., 4096) = 4096
write(1, "00004800 4151290a 4f706572 6174"..., 4096) = 4096
read(4, " vertical timing for mode \"400x"..., 4096) = 4096
write(1, "00004c00 67643735 34382c20 636c"..., 4096) = 4096
write(1, "00005000 20766572 74696361 6c20"..., 4096) = 4096
write(1, "00005400 2c20636c 6f636b20 7573"..., 4096) = 4096
write(1, "00005800 65732061 6e642073 6567"..., 4096) = 4096
read(4, "stands for probed/default values"..., 4096) = 4096
write(1, "00005c00 75693934 30306378 692c"..., 4096) = 4096
brk(0x812b000) = 0x812b000
brk(0x8121000) = 0x8121000
write(1, "00006000 7374616e 64732066 6f72"..., 4096) = 4096
write(1, "00006400 20313638 2e32340a 282a"..., 4096) = 4096
write(1, "00006800 6f707469 6f6e0a28 2a2a"..., 4096) = 4096
read(4, "li2228, ali2301, ali2302, ali230"..., 4096) = 4096
write(1, "00006c00 41313238 2c204554 3430"..., 4096) = 4096
brk(0x8122000) = 0x8122000
brk(0x8123000) = 0x8123000
write(1, "00007000 6c693232 32382c20 616c"..., 4096) = 4096
brk(0x8124000) = 0x8124000
brk(0x8125000) = 0x8125000
brk(0x8126000) = 0x8126000
brk(0x8127000) = 0x8127000
brk(0x8128000) = 0x8128000
write(1, "00007400 312f666f 6e74732f 5370"..., 4096) = 4096
brk(0x8129000) = 0x8129000
brk(0x812a000) = 0x812a000
brk(0x812b000) = 0x812b000
brk(0x812c000) = 0x812c000
--- SIGSEGV (Segmentation fault) ---
write(2, "/home/tetsu/bin/hd.rb:77: [BUG] "..., 50/home/tetsu/bin/hd.rb:77: [BUG] Segmentation fault) = 50
write(2, "\n", 1
) = 1
sigprocmask(SIG_UNBLOCK, [ABRT], NULL) = 0
write(1, "00007800 64652073 656c6563 7469"..., 1024) = 1024
getpid() = 3176
kill(3176, SIGABRT) = 0
--- SIGABRT (IOT trap/Abort) ---
+++ killed by SIGABRT +++
------------------------------
--
WATANABE Tetsuya HP Japan
e-mail tetsu@jpn.hp.com