From: kentkt@... Date: 2014-07-17T09:07:35+00:00 Subject: [ruby-dev:48416] [ruby-trunk - Bug #8716] segmation fault 正規表現で大量のグループを利用時 Issue #8716 has been updated by Ken Takata. クローズの際の取り決めがあるのかということを気にしていました。 (勝手に閉じて良いのかとか、Backport 欄は誰が何を設定するとか。) > 該当修正部分のみを抽出して取り込むことになるかと思います。 関連コミットを挙げておきます。以下の4件となります。 1. alloca でスタックオーバーフロー https://github.com/k-takata/Onigmo/commit/b9fba1dc63ccb42a86e934011b468e6022fabb74 https://github.com/k-takata/Onigmo/commit/c1fc76b9bd463948ffc5058bc352bf93732f0314 https://github.com/k-takata/Onigmo/commit/a0efc0a200f7108ca3d5ac3039c8f952e0051619 2. キャプチャグループの数を ONIG_MAX_CAPTURE_GROUP_NUM (32767) 個に制限 https://github.com/k-takata/Onigmo/commit/c7cda4ed5676167b0d01bb5555724f6164fbdb13 1.9.3 もバックポート対象とした方が良いかもしれません。(が、コンフリクトが発生するはず。) ---------------------------------------- Bug #8716: segmation fault 正規表現で大量のグループを利用時 https://bugs.ruby-lang.org/issues/8716#change-47826 * Author: taka-yoshi taka * Status: Closed * Priority: Normal * Assignee: Yui NARUSE * Category: regexp * Target version: current: 2.2.0 * ruby -v: trunk * Backport: 2.0.0: REQUIRED, 2.1: REQUIRED ---------------------------------------- =begin WindowsとOS Xで検証しました。 *再現手順 ruby 2.0.0p247 (2013-06-27) [x64-mingw32] a="()" (32767.times{a<<'()'} eval "/#{a}/=~''" *再現手順 ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.2.1] a="()" (1<<21).times{a<<'()'} eval "/#{a}/=~''" 以上よろしくお願いします。 =end -- https://bugs.ruby-lang.org/