[#47548] [ruby-trunk - Feature #8696][Open] Process.setproctitle — "znz (Kazuhiro NISHIYAMA)" <redmine@...>

13 messages 2013/07/27

[#47559] [ruby-trunk - Bug #8711][Open] 最近NoMemoryErrorが多い — "naruse (Yui NARUSE)" <naruse@...>

13 messages 2013/07/31

[ruby-dev:47523] [ruby-trunk - Bug #8652] gem で rb_secure(4) を使用するとビルドエラーとなる

From: "naruse (Yui NARUSE)" <naruse@...>
Date: 2013-07-18 05:52:47 UTC
List: ruby-dev #47523
Issue #8652 has been updated by naruse (Yui NARUSE).


shugo (Shugo Maeda) wrote:
> naruse (Yui NARUSE) wrote:
> > > 個人的には、$SAFEを4以上にセットするコードはエラーにすべきですが、rb_secure(4)のようなコードはビルドできた方がよいと考えています。
> > 
> > 実行時にエラーでこけるより、コンパイル時にこけたほうが早く気付けて良いのではないですか?
> 
> rb_secure(4)は$SAFEを4以上にセットするものではなく、$SAFEが4以上にセットされている時にSecurityErrorを発生されるものです。
> # おおざっぱに言えば、rb_secure(4)はif $SAFE >= 4; raise SecurityError; endのような意味です。
> trunkでは$SAFEを4以上にセットできないので、rb_secure(4)で実行時に例外が発生することはないはずですが、何か勘違いしているでしょうか。
> 
> rb_secure(4)が残っていてもごくわずかなオーバーヘッドがあるだけで実害はないと思いますので、サードパーティの拡張ライブラリのことも考えると、互換性のためにコンパイルエラーとしない方がよいと考えています。

おぉ、仰るとおり混同していました。

* rb_set_safe_level() がコンパイル時にエラーになるのはそのまま
* rb_secure(4) はコンパイル時にはエラーにしない → 事実上何もしない
とするべき、という話ですね。

んー、わたしは間とって rb_secure(4) にコンパイル時 warning 派かなぁ。
----------------------------------------
Bug #8652: gem で rb_secure(4) を使用するとビルドエラーとなる
https://bugs.ruby-lang.org/issues/8652#change-40561

Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: High
Assignee: nobu (Nobuyoshi Nakada)
Category: core
Target version: current: 2.1.0
ruby -v: ruby 2.1.0dev (2013-07-18 trunk 42031) [x86_64-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


linux で ruby-fcgi(https://github.com/saks/ruby-fcgi) という rb_secure(4) を使っている gem を trunk でコンパイルしようと失敗してしまいます。

$ make
compiling fcgi.c

(snip)

fcgi.c:231:3: エラー: call to ‘ruby$safe_level$4’ declared with attribute error: $SAFE=4 is obsolete
fcgi.c: 関数 ‘fcgi_stream_putc’ 内:
fcgi.c:219:3: エラー: call to ‘ruby$safe_level$4’ declared with attribute error: $SAFE=4 is obsolete
make: *** [fcgi.o] エラー 1

Mac OS X 10.8.4 だと上記のエラーは発生しません。

エラーが発生する linux の gcc は gcc バージョン 4.6.4 (Funtoo 4.6.4) です。


-- 
http://bugs.ruby-lang.org/

In This Thread