File.statとFile.chownのuid

pdumpfsを使ってバックアップを取っていると、

in `chown': bignum too big to convert into `long' (RangeError)

とのエラーが。なぜ??と思いエラーが出たファイルを見てみると、ownerのuid,gidが4294967294になってます。なんだこれ?と思いつつ16進に直してみると、0xFFFFFFFE、32ビット符号ありで-2ってことですね。検索してみると、nobodyのuidにこいつが割り当てられることもあるみたいです。

エラーの原因ですが、chownは、符号付き32ビットの範囲しか引数を取れないようです。で、statで得られるuidは符号なし32ビットみたいです。てなわけで、0xFFFFFFFEは符号なしで4294967294と解釈されるが符号付き32ビットでは表せないためRangeErrorの例外が出てたようです。ここで、chownに-2を与えてやればうまくいくみたいなので、

  stat = File.stat(src_filename)
  uid, gid = [stat.uid, stat.gid].pack("I2").unpack("i2")
  File.chown(uid, gid, dst_filename)

のようにしてごまかしましたが、これってRubyの仕様なんですかねぇ。
それ以前に見覚えないuidが出てくるようないい加減な管理をするなって言われたらそれまでなんですがf(^^: