Issue #8652 has been reported by hsbt (Hiroshi SHIBATA).
Bug #8652: gem で rb_secure(4) を使用するとビルドエラーとなる
Author: hsbt (Hiroshi SHIBATA)
Status: Open
Priority: High
Assignee: shugo (Shugo M.)
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(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という 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) です。
Issue #8652 has been updated by shugo (Shugo M.).
Status changed from Open to Assigned
Assignee changed from shugo (Shugo M.) to nobu (Nobuyoshi N.)
hsbt (Hiroshi SHIBATA) wrote:
linux で ruby-fcgi(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という rb_secure(4) を使っている gem
を trunk でコンパイルしようと失敗してしまいます。
blameしたところなかださんがr41273で変更されているようです。
個人的には、$SAFEを4以上にセットするコードはエラーにすべきですが、rb_secure(4)のようなコードはビルドできた方がよいと考えています。
Bug #8652: gem で rb_secure(4) を使用するとビルドエラーとなる
Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: High
Assignee: nobu (Nobuyoshi N.)
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(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という 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) です。
Issue #8652 has been updated by sorah (Shota F.).
ビルドがこけるので良い気がしています。
柴田さんがなぜコケるという事でバグレポートを上げているのか気になります。
意図的な変更だと思っていなかったのか、あるいはコケると何か問題があるという事だと思うのですが、
後者だとしたら具体的に何なのか分かると良いのかなと。
Bug #8652: gem で rb_secure(4) を使用するとビルドエラーとなる
Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: High
Assignee: nobu (Nobuyoshi N.)
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(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という 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) です。
Issue #8652 has been updated by naruse (Yui NARUSE).
shugo (Shugo M.) wrote:
hsbt (Hiroshi SHIBATA) wrote:
linux で ruby-fcgi(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という rb_secure(4) を使っている
gem を trunk でコンパイルしようと失敗してしまいます。
blameしたところなかださんがr41273で変更されているようです。
コンパイルエラーメッセージの通り、その意図の是非はおいておいて、意図的なものですね。
個人的には、$SAFEを4以上にセットするコードはエラーにすべきですが、rb_secure(4)のようなコードはビルドできた方がよいと考えています。
実行時にエラーでこけるより、コンパイル時にこけたほうが早く気付けて良いのではないですか?
Bug #8652: gem で rb_secure(4) を使用するとビルドエラーとなる
Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: High
Assignee: nobu (Nobuyoshi N.)
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(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という 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) です。
Issue #8652 has been updated by shugo (Shugo M.).
naruse (Yui NARUSE) wrote:
linux で ruby-fcgi(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という rb_secure(4) を使っている
gem を trunk でコンパイルしようと失敗してしまいます。
blameしたところなかださんがr41273で変更されているようです。
コンパイルエラーメッセージの通り、その意図の是非はおいておいて、意図的なものですね。
はい、そう思います。
個人的には、$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)が残っていてもごくわずかなオーバーヘッドがあるだけで実害はないと思いますので、サードパーティの拡張ライブラリのことも考えると、互換性のためにコンパイルエラーとしない方がよいと考えています。
sorah (Shota F.) wrote:
ビルドがこけるので良い気がしています。
なぜこけた方がよいと思いますか?
Bug #8652: gem で rb_secure(4) を使用するとビルドエラーとなる
Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: High
Assignee: nobu (Nobuyoshi N.)
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(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という 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) です。
Issue #8652 has been updated by naruse (Yui NARUSE).
shugo (Shugo M.) 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) を使用するとビルドエラーとなる
Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: High
Assignee: nobu (Nobuyoshi N.)
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(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という 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) です。
Issue #8652 has been updated by shugo (Shugo M.).
naruse (Yui NARUSE) wrote:
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) を使用するとビルドエラーとなる
Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: High
Assignee: nobu (Nobuyoshi N.)
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(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という 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) です。
Issue #8652 has been updated by sorah (Shota F.).
なぜこけた方がよいと思いますか?
なるせさんと同じ理由でしたが、rb_secure の挙動がそれなら(勘違いでした)エラーにならない方が良いと思えてきました。
Bug #8652: gem で rb_secure(4) を使用するとビルドエラーとなる
Author: hsbt (Hiroshi SHIBATA)
Status: Assigned
Priority: High
Assignee: nobu (Nobuyoshi N.)
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(GitHub - saks/ruby-fcgi: This is a fork of ruby-fcgi library, but compatible with ruby1.9.1) という 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) です。