[#2810] [BUG] IO#eof? when Thread using — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

31 messages 1998/06/08
[#2826] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2827] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2828] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2829] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2831] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2841] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2842] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/10

まつもと ゆきひろです

[#2843] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/10

けいじゅ@日本ラショナルソフトウェアです.

[#2845] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/11

まつもと ゆきひろです

[#2846] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/11

けいじゅ@日本ラショナルソフトウェアです.

[#2847] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/11

まつもと ゆきひろです

[#2848] Re: [BUG] IO#eof? when Thread using — keiju@... (石塚圭樹 ) 1998/06/11

けいじゅ@日本ラショナルソフトウェアです.

[#2849] Re: [BUG] IO#eof? when Thread using — matz@... (Yukihiro Matsumoto) 1998/06/11

まつもと ゆきひろです

[#2854] experimental release 1.1b9_25 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

23 messages 1998/06/11
[#2870] Re: experimental release 1.1b9_25 — Takahiro Maebashi <maebashi@...> 1998/06/15

前橋です。

[#2911] experimental release 1.1b9_26 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

33 messages 1998/06/18
[#2912] Re: experimental release 1.1b9_26 — WATANABE Hirofumi <watanabe@...> 1998/06/18

わたなべです.

[#2913] Re: experimental release 1.1b9_26 — matz@... (Yukihiro Matsumoto) 1998/06/18

まつもと ゆきひろです

[#2916] Re: experimental release 1.1b9_26 — Takahiro Maebashi <maebashi@...> 1998/06/18

前橋です。

[#2917] Re: experimental release 1.1b9_26 — matz@... (Yukihiro Matsumoto) 1998/06/18

まつもと ゆきひろです

[#2940] experimental release 1.1b9_27 — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

21 messages 1998/06/19

[#2965] feature freeze for 1.1c — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

25 messages 1998/06/22

[#3056] experimental release 1.1b9_28 — matz@... (Yukihiro Matsumoto)

subject says all.

28 messages 1998/06/26
[#3104] Re: experimental release 1.1b9_28 — Takahiro Maebashi <maebashi@...> 1998/06/30

前橋です。

[#3086] Re: Enumerable#reverse ([ruby-list:8579]) — gotoken@... (GOTO Kentaro)

ごとけんです

19 messages 1998/06/29
[#3120] Re: Enumerable#reverse ([ruby-list:8579]) — keiju@... (Keiju ISHITSUKA) 1998/06/30

けいじゅ@日本ラショナルソフトウェアです.

[#3130] Re: Enumerable#reverse ([ruby-list:8579]) — gotoken@... (GOTO Kentaro) 1998/06/30

ごとけんです

[#3146] [REQ] trace_func — keiju@... (Keiju ISHITSUKA)

けいじゅ@日本ラショナルソフトウェアです.

15 messages 1998/06/30
[#3190] Re: [REQ] trace_func — matz@... (Yukihiro Matsumoto) 1998/07/02

まつもと ゆきひろです

[#3807] Re: [REQ] trace_func — keiju@... (石塚圭樹 ) 1998/12/14

けいじゅ@日本ラショナルソフトウェアです.

[ruby-dev:3001] Re: experimental release 1.1b9_27

From: WATANABE Tetsuya <tetsu@...>
Date: 1998-06-24 00:16:49 UTC
List: ruby-dev #3001
>>>>> "W" == WATANABE Tetsuya <tetsu@jpn.hp.com> writes:
W> しばらく ruby-1.1b9_25 を使ってみて、現象が起きないことを確認
W> してから(条件により違ってきたりするので)、

入力ファイルをでかいものにしたら ruby-1.1b9_25 でも
発生しました(eval.c はオリジナルもの)。ということで、
ruby-1.1b9_25 で起きないというのは私の確認不足でし
た。

------------------------------
$ /t/bin/ruby =hd.rb -n Xerr.txt-2 > /dev/null  
/home/tetsu/bin/hd.rb:77: [BUG] Segmentation fault
------------------------------

------------------------------
#0  0x4007dc29 in __kill ()
#1  0x4004f5d9 in raise (sig=134888636)
#2  0x808336d in posix_signal ()
#3  0xbfffe628 in ?? ()
#4  0x400b8840 in av_ ()
#5  0x400b8838 in av_ ()
#6  0x400b8830 in av_ ()
#7  0x400b8828 in av_ ()
#8  0x80ca608 in ?? ()
#9  0x39 in ?? ()
Cannot access memory at address 0x46747865.
------------------------------

いまのところ現象が確認できているスクリプトはこれだ
けなので、お邪魔かもしれませんが添付します。

「特定の条件で必ず発生する」と、書けないのが面倒な
ところなのです。入力ファイルが大きい場合は起きやす
いです。起きるデータは必ず起きますけど、データのパ
ターンではないようなのです。というのは、ソースコー
ドにコメントを増やしたりするだけで、発生パターンが
変化してしまうので... (変だなぁ 私の環境だけかなぁ)

------------------------------
#! /usr/local/bin/ruby
# /home/tetsu/src/ruby/toolbox/hd.rb
# Created: February 22,1998 Sunday 18:39:06
# Author: tetsu(WATANABE Tetsuya)
# $Id: hd.rb,v 1.16 1998/06/21 17:06:16 tetsu Exp tetsu $
# usage: hd.rb -byte -little -sE -0100 /vmlinuz | less
# Thanks [ruby-list:8395] hd.rb 1.8 patch/鄭 明毅

require 'kconv'

RCS_ID = %q$Id: hd.rb,v 1.16 1998/06/21 17:06:16 tetsu Exp tetsu $

def usage
  STDERR.print <<E
usage: #$0
     [-seSE]
     [-(byte|short|long)]
     [-(big|little)]
     [-(num|0xhex|0oct)]
     [files ...]

 -[0-9]+          offset decimal
 -0[0-7]+                octal
 -0x[0-9a-fA-F]+         hex

 -byte     byte size dump
 -short    short word size dump
 -long     long word size dump (default)

 -big      big-endian dump (default)
 -little   little-endian dump

 -s    sjis/input code
 -e    euc /input code (default)
 -S    sjis/output code
 -E    euc /output code (default)

#{RCS_ID}

E
  exit 1
end

class String
  def bin_to_str
    return self.tr("\177-\377", '.') if $no_kanji
    w = ($kanji_chip + self).gsub($kanji_re) {
      Kconv.kconv($1, Kconv::JIS, $in_kanji_code)
    }.gsub($kana_re) {
      Kconv.kconv($1, Kconv::JIS, $in_kanji_code)
    }
    w[0,1] = '' if $kanji_chip == w[0,1]
    $kanji_chip = if $kanji_chip_re =~ w[-1,1] then w[-1,1] else '' end
    Kconv.kconv(w.tr("\177-\377", '.'), $out_kanji_code, Kconv::JIS)
  end
end

def hd(f, offset)
  if offset > 0
    begin
      f.pos = offset
    rescue
      offset = 0
    end
  end

  l_unpackformat = Unpackformat[$datasize][$endian] + '*'
  unpackformat = Unpackformat[$datasize][$endian]
  l_packformat = Unpackformat[$datasize][:little] + '*'
  packformat = Unpackformat[$datasize][:little]
  dumpformat = Dumpformat[$datasize]
  dumplastformat = Dumplastformat[$datasize]

  while $_ = f.read(16) and $_.length == 16
    bin = $_.unpack(l_unpackformat)
    $_ = bin.pack(l_packformat) if $datasize != 1 and $byteswap
    printf(dumpformat, offset, *bin)
    print $_.tr("\000-\037\177", '.').bin_to_str, "\n"
    offset += 16
  end

  if $_ and $_.length > 0
    n = $_.length / $datasize
    left_byte = $_.length % $datasize
    bin = $_.unpack(unpackformat + n.to_s + 'a' + left_byte.to_s)

    if $datasize != 1 and $byteswap
      $_ = bin[0..n-1].pack(packformat + n.to_s)
      if left_byte > 0
	$_ += format('%' + $datasize.to_s + 's',
		     bin[-1].unpack('C*').reverse.pack('C*'))
      end
    end

    n.times {|i|
      bin[i] = format(dumplastformat, bin[i])
    }

    if left_byte > 0
      w = bin[-1].split('')
      if $byteswap
	w.reverse!
      end
      foo = ''
      w.each_index {|i|
	foo += format('%2.2x', w[i][0])
      }
      bin[-1] = foo + if $byteswap
			''
		      else 
			'  ' * ($datasize - left_byte)
		      end
    end

    (16/$datasize - bin.size).times { bin.push(' ') }

    printf(dumpformat.gsub('x', 's'),
	   format('%08x', offset), *bin)
    print $_.tr("\000-\037\177", '.').bin_to_str, "\n"
  end
end

Dumpformat = {
  4 => '%08x  %08x %08x %08x %08x  ',
  2 => '%08x  ' + '%04x %04x %04x %04x  ' * 2,
  1 => '%08x  ' + '%02x %02x %02x %02x  ' * 4
}

Dumplastformat = {
  4 => '%8.8x', 2 => '%4.4x', 1 => '%2.2x'
}

Unpackformat = {
  4 => { :big => 'N', :little => 'V' },
  2 => { :big => 'n', :little => 'v' },
  1 => { :big => 'C', :little => 'C' },
}

$endian = :big
$byteswap = false
$datasize = 4

$no_kanji = false
$kanji_chip = ''
$in_kanji_code = Kconv::EUC
$out_kanji_code = Kconv::EUC

offset = 0

while $_ = ARGV[0] and /^-/
  case ARGV.shift
  when /^-0([0-7]+)$/
    offset = $1.oct
  when /^-0x([\da-fA-F]+)$/
    offset = $1.hex
  when /^-(\d+)$/
    offset = $1.to_i
  when '-byte'
    $datasize = 1
  when '-short'
    $datasize = 2
  when '-long'
    $datasize = 4
  when '-big'
    $endian = :big
  when '-little'
    $endian = :little
    $byteswap = true
  when /^-[sen]+$/i
    if /n/i then
      $no_kanji = true
    else
      $in_kanji_code   = if /s/ then Kconv::SJIS elsif /e/ then Kconv::EUC end
      $out_kanji_code  = if /S/ then Kconv::SJIS elsif /E/ then Kconv::EUC end
    end
  else
    usage
  end
end

if $in_kanji_code == Kconv::EUC
  $kanji_re = /((?:[\241-\376][\241-\376])+)/n
  $kana_re = /((?:\216[\241-\337])+)/n
  $kanji_chip_re = /^[\216\241-\376]$/n
else
  $kanji_re = /((?:[\201-\237\340-\357][\100-\176\200-\374])+)/n
  $kana_re = /([\241-\337]+)/n
  $kanji_chip_re = /^[\201-\237\340-\357]$/n
end

if ARGV.length == 0
  hd(STDIN, offset)
else
  while file = ARGV.shift
    f = File.open(file)
    hd(f, offset)
    f.close
  end
end

exit
------------------------------

--
WATANABE Tetsuya HP Japan
e-mail  tetsu@jpn.hp.com

In This Thread