From: kentkt@... Date: 2014-04-16T10:28:03+00:00 Subject: [ruby-dev:48108] [ruby-trunk - Bug #8716] segmation fault 正規表現で大量のグループを利用時 Issue #8716 has been updated by Ken Takata. 落ちる原因が2つあることが分かりました。 1. alloca でスタックオーバーフロー ([修正済み](https://github.com/k-takata/Onigmo/commit/a0efc0a200f7108ca3d5ac3039c8f952e0051619)) 2. そもそも鬼雲(鬼車も)は、グループの数を short で管理しているため、32767個以上のグループを管理できない。32768個あるとインデックスが負になり、不正アクセスが発生。(未修正) グループの数を 32bit で管理するようにするか、それとも 16bit のままとし、不正アクセスが発生しないように何らかのチェックを入れるか検討が必要です。 ---------------------------------------- Bug #8716: segmation fault 正規表現で大量のグループを利用時 https://bugs.ruby-lang.org/issues/8716#change-46228 * Author: taka-yoshi taka * Status: Assigned * Priority: Normal * Assignee: Ken Takata * Category: regexp * Target version: current: 2.2.0 * ruby -v: trunk * Backport: ---------------------------------------- =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/