青木です。

  In mail "[ruby-dev:22491] Re: ruby-1.8.1 build failed on HP-UX 11.11"
    MIYAMUKO Katsuyuki <k-miyamuko / az.jp.nec.com> wrote:

> みやむこです。
> 
> > でも、テストを実行すると [ruby-list:38962] と同じ問題がでました・・・。

CVS HEAD ですが、Tru64UNIX でも drb のテストで落ちました。
落ちる場所もスタックトレースも実質的に同じです。
以下、test/drb/ と runner.rb だけ ~/tmp に置いて試しています。

  ~/tmp % ruby runner.rb
  Loaded suite .
  Started
  ..........................
  /usr/local/lib/ruby/1.9/drb/drb.rb:877: [BUG] rb_sys_fail() - errno == 0
  ruby 1.9.0 (2004-01-05) [alphaev56-osf5.1]

  zsh: 8517 abort (core dumped)  ruby runner.rb

  ~/tmp % uname -srm
  OSF1 V5.1 alpha

  ~/tmp % cc -V
  Compaq C V6.5-011 on Compaq Tru64 UNIX V5.1B (Rev. 2650)
  Compiler Driver V6.5-003 (sys) cc Driver

configure の引数は

  ./configure CFLAGS=-g --with-lookup-order-hack=INET

です。


> > #4  0x50388 in rb_bug (fmt=0xea178 "rb_sys_fail(%s) - errno == 0")
> >     at error.c:199
> > #5  0x51dd0 in rb_sys_fail (mesg=0x0) at error.c:899
> > #6  0x68458 in fptr_finalize (fptr=0x4015a668, noraise=0) at io.c:1371

(ladebug) where
>0  0x3ff800e93f8 in __kill(...) in /usr/shlib/libc.so
#1  0x3ff80213190 in UnknownProcedure18FromFile10(...) in /usr/shlib/libc.so
#2  0x3ff8013bfd4 in __tis_raise(...) in /usr/shlib/libc.so
#3  0x3ff801c97c8 in abort(...) in /usr/shlib/libc.so
#4  0x120052bd0 in rb_bug(fmt=0x140003520="rb_sys_fail(%s) - errno == 0") "error.c":207
#5  0x120054994 in rb_sys_fail(mesg=0x0) "error.c":986
#6  0x12007caf8 in fptr_finalize(fptr=0x140479240, noraise=0) "io.c":1757
#7  0x12007cb70 in rb_io_fptr_cleanup(fptr=0x140479240, noraise=0) "io.c":1770
#8  0x12007cc98 in rb_io_close(io=5373012136) "io.c":1806
#9  0x12007cd88 in rb_io_close_m(io=5373012136) "io.c":1837
#10 0x12002d7e8 in call_cfunc(func=0x12007cd04, recv=5373012136,
        len=0, argc=0, argv=0x0) "eval.c":5356
#11 0x12002e37c in rb_call0(klass=5369276680, recv=5373012136, id=7297,
        oid=7297, argc=0, argv=0x0, body=0x140089968, nosuper=0) "eval.c":5487
#12 0x12002ec6c in rb_call(klass=5369276680, recv=5373012136,
        mid=7297, argc=0, argv=0x0, scope=0) "eval.c":5708
#13 0x1200278e4 in rb_eval(self=5373012336, n=0x1401ecef8) "eval.c":3236


> HP-UX と UX/4800 の場合、fclose が EOF を返しても errno が設定されない
> 場合があるようです。このことが原因でしょうか。

こちらは違っていました。

> % a.out a.out
> fp=7b030f68
> fclose=0, errno=12345
> fclose=-1, errno=123456

  ~/tmp % ./a.out close.c
  fp=3ffc00800f8
  fclose=0, errno=12345
  fclose=-1, errno=9

というふうに、ちゃんと errno=9 (EBADF) になっています。
-------------------------------------------------------------------
青木峰郎