< :前の番号
^ :番号順リスト
> :次の番号
P :前の記事(スレッド移動)
N :次の記事(スレッド移動)
|<:前のスレッド
>|:次のスレッド
^ :返事先
_:自分への返事
>:同じ返事先を持つ記事(前)
<:同じ返事先を持つ記事(後)
---:分割してスレッド表示、再表示
| :分割して(縦)スレッド表示、再表示
~ :スレッドのフレーム消去
.:インデックス
..:インデックスのインデックス
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/