From: WATANABE Tetsuya Date: 1998-06-24T09:55:16+09:00 Subject: [ruby-dev:3003] Re: experimental release 1.1b9_27 続けちゃってごめんなさい(また長いです)。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