Project

General

Profile

Bug #13766

Ruby 2.3.4 build problem with "-fstack-check"

Added by taca (Takahiro Kambe) about 3 years ago. Updated about 3 years ago.

Status:
Closed
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.3.4p301 (2017-03-30 revision 58214) [x86_64-netbsd]
[ruby-dev:50184]

Description

pkgsrcで PKGSRC_USE_STACK_CHECK を yes に設定すると Ruby 2.3.4 のビルドに失敗します。
現象としては、tool/generic_erb.rb で encdb.h を生成する際に erb.rb でエラーとなります。

lib/erb.rb:654:in `block in compile': can't modify frozen String (RuntimeError)

調べたところ、作成した miniruby は frozen_string_literal のmagic commentがあると、それで設定した値に
関わらず true に設定したことになってしまっています。PKGSRC_USE_STACK_CHECK を設定したことによる
gccの-fstack-chceckオプションの有無で挙動が変わります。

原因は compile.c でif文のブロック内で定義した自動変数のアドレスを、ブロックを抜けた後で参照している
ためです。

幸い、 r57971 で加えた修正で一緒にこの問題は直してしまっているので、Ruby 2.4では問題はありません。
また、Ruby 2.3より前ではfrozen_string_literalのmagic commentはサポートされていないので問題は起きま
せん。

pkgsrcでは次の修正で解決しました: http://mail-index.netbsd.org/pkgsrc-changes/2017/07/24/msg160523.html

#1

Updated by k0kubun (Takashi Kokubun) about 3 years ago

  • Backport changed from 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN to 2.2: DONTNEED, 2.3: REQUIRED, 2.4: DONTNEED

Updated by k0kubun (Takashi Kokubun) about 3 years ago

  • Assignee set to usa (Usaku NAKAMURA)

r57971 が既にupstreamにある以上、 http://mail-index.netbsd.org/pkgsrc-changes/2017/07/24/msg160523.html の変更をいれるより r57971 をバックポートしてしまった方が今後のバックポートが楽になる気がしました。 なので2.3ブランチメンテナに担当者を変更しました。

#3

Updated by usa (Usaku NAKAMURA) about 3 years ago

  • Status changed from Open to Closed

Updated by usa (Usaku NAKAMURA) about 3 years ago

  • Backport changed from 2.2: DONTNEED, 2.3: REQUIRED, 2.4: DONTNEED to 2.2: DONTNEED, 2.3: DONE, 2.4: DONTNEED

r57971の単純なバックポートでいければよかったんですが、世の中はそんなに甘くありませんでした :-P

Also available in: Atom PDF