[ruby-list:50666] Re: OSXのNet::HTTPResponse の bodyについて

From: nst <nst329@...>
Date: 2018-05-16 00:44:59 UTC
List: ruby-list #50666
那須です

>> write で 2GiB以上だと EINVAL になっているだけのようなので、
>> res.body 自体は正常なのではないでしょうか。

なるほど。単純にwriteで2G以上書けないということですね。
そう言えばそんな制限もありましたね。すっかり忘れてました。
#普段であればそんな大きいサイズ一気に書こうとは思わないのですが・・・。つい

エラーメッセージにもしっかり”Errno::EINVAL"とありますね。

すっかり "Invalid argument @ io_write” というメッセージにつられてしまいした。
この Invalid argumentというメッセージなんとかならないですかね。
システムコールのエラーとは思わなかったです。

> Ubuntu 16.04 だと 2GiB の String を作ろうとした時点で NoMemoryError に
> なるようなので、別の話のようです。
こちらは、メモリ確保の制限ですね。

OSXでは、2Gも問題なく確保できます。
> $ ruby -e '"x"*(2*1024*1024*1024)'
> $ 

ってか確保だけなら、256Gでもいける… 

> $ ruby -e '"x"*(112*1024*1024*1024*1024)'
> ruby(8549,0x7fff980a3380) malloc: *** mach_vm_map(size=123145302315008) failed (error code=3)
> *** error: can't allocate region
> *** set a breakpoint in malloc_error_break to debug
> ruby(8549,0x7fff980a3380) malloc: *** mach_vm_map(size=123145302315008) failed (error code=3)
> *** error: can't allocate region
> *** set a breakpoint in malloc_error_break to debug
> Traceback (most recent call last):
> -e: failed to allocate memory (NoMemoryError)

ここまでエラーなし。 すごいなOSX

どっちにしても疑ってごめんなさいres.bodyさんです

In This Thread

Prev Next