http://redmine.openpne.jp/
http://redmine.openpne.jp/favicon.ico
2011-04-20T16:02:48Z
OpenPNE Issue Tracking System
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=7910
2011-04-20T16:02:48Z
Kiwa Sakai
kiwa@openpne.jp
<ul></ul><p>環境の問題かもしれないため確認が必要なので、OpenPNE3.6のバックポートは作成していません。</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=8285
2011-05-11T08:01:55Z
Shingo Yamada
s.yamada@tejimaya.com
<ul><li><strong>優先度</strong> を <i>Normal(通常)</i> から <i>High(高め)</i> に変更</li></ul>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=8453
2011-05-18T04:03:55Z
Shingo Yamada
s.yamada@tejimaya.com
<ul><li><strong>3.6 で発生するか</strong> を <i>Yes</i> にセット</li></ul>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=8493
2011-05-20T01:22:01Z
Shingo Yamada
s.yamada@tejimaya.com
<ul></ul><p>sakaiさんに本件の発生環境を依頼済みです。(amazonEC2, ~5/25)</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=8508
2011-05-20T09:12:35Z
Minoru Takai
main.coeurl@gmail.com
<ul><li><strong>対象バージョン</strong> を <i>OpenPNE 3.7.0</i> にセット</li></ul>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=8697
2011-06-09T10:57:31Z
Shingo Yamada
s.yamada@tejimaya.com
<ul><li><strong>担当者</strong> を <i>Naoya Tozuka</i> にセット</li></ul>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=8969
2011-06-22T05:37:53Z
Shingo Yamada
s.yamada@tejimaya.com
<ul><li><strong>ステータス</strong> を <i>New(新規)</i> から <i>Accepted(着手)</i> に変更</li><li><strong>担当者</strong> を <i>Naoya Tozuka</i> から <i>Shingo Yamada</i> に変更</li></ul>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=9603
2011-07-19T09:55:05Z
Shingo Yamada
s.yamada@tejimaya.com
<ul></ul><p>openpne:install を実行し SegmentationFault が発生するかどうかをPHPのバージョン毎に確認しました。</p>
<a name="PHPのバージョン毎に確認結果"></a>
<h4 >PHPのバージョン毎に確認結果<a href="#PHPのバージョン毎に確認結果" class="wiki-anchor">¶</a></h4>
<ul>
<li>php-5.2.3 NG</li>
<li>php-5.2.4 NG</li>
<li>php-5.2.5 NG</li>
<li>php-5.2.6 OK</li>
<li>php-5.2.8 OK</li>
<li>php-5.2.17 OK</li>
</ul>
<a name="定義"></a>
<h5 >定義<a href="#定義" class="wiki-anchor">¶</a></h5>
<ul>
<li>OK: SegmentationFault 発生せず</li>
<li>NG: SegmentationFault 発生</li>
</ul>
<a name="NG状態の詳細"></a>
<h5 >「NG」状態の詳細<a href="#NG状態の詳細" class="wiki-anchor">¶</a></h5>
下記のタイミングで「Segmentation fault」が発生
<ul>
<li>「/opt/phpall/bin/php-5.2.x symfony openpne:install」を実施(x ->バージョン)</li>
<li>DB接続情報を入力</li>
<li>(タスクが走り出す)</li>
<li>「installer start clean install」と表示</li>
<li>直後に「Segmentation fault」が表示され、処理がとまる</li>
</ul>
<ul>
<li>「Segmentation fault」発生時の表示<br /><pre>
The Database Port Number :
The Database Name : localhost
The Database Socket :
Is it OK to start this task? (Y/n)
y
>> installer start clean install
Segmentation fault
[shingo@csaXXX op36.shingo]$
</pre></li>
</ul>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=9608
2011-07-19T10:48:11Z
Shingo Yamada
s.yamada@tejimaya.com
<ul></ul><p><a class="external" href="http://openpne3.com/mediawiki/index.php?title=OpenPNE3%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6:SegmentationFault&oldid=462">http://openpne3.com/mediawiki/index.php?title=OpenPNE3%E3%83%8E%E3%82%A6%E3%83%8F%E3%82%A6:SegmentationFault&oldid=462</a><br />上記に、以下の報告がありました。<br /><pre>
OpenPNE3.6にバンドルされているZend_Http_Clientが原因。 lib/vendor/Zendをzend frameworkの最新版に置き換えると正常にコマンドを完了できる。
</pre></p>
<p>stable-3.6.x でも master と同様下記の操作を行い、最新の「zend framework」で 「Segmentation fault」が発生するかどうかを確認します。</p>
<pre>
commit 821abff4e86ab2fe50d592f5fe82209e14b653d7
Author: Kousuke Ebihara <ebihara@tejimaya.com>
Date: Thu Sep 9 16:10:38 2010 +0900
updated bandled ZendFramework to latest stable release (ZendFramework 1.10.8) (fixes #205)
I executed the following command:
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Acl
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Acl.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Exception
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Exception.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Feed
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Feed.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Http
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Http.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Loader
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Loader.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Mail
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Mail.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Mime
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Mime.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Registry
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Registry.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Search
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Search.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Uri
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Uri.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Validate
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Validate.php
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Version
$ svn export http://framework.zend.com/svn/framework/standard/tags/release-1.10.8/library/Zend/Version.php
</pre>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=9609
2011-07-19T11:00:15Z
Shingo Yamada
s.yamada@tejimaya.com
<ul></ul><a name="検証結果"></a>
<h4 >検証結果<a href="#検証結果" class="wiki-anchor">¶</a></h4>
<p>#note-9 の内容を実施する前後で動作確認を行った。</p>
<a name="before"></a>
<h5 >before<a href="#before" class="wiki-anchor">¶</a></h5>
<ul>
<li>stable-3.6.x / php-5.2.3 : NG</li>
<li>stable-3.6.x / php-5.2.6 : OK</li>
</ul>
<a name="after"></a>
<h5 >after<a href="#after" class="wiki-anchor">¶</a></h5>
<ul>
<li>stable-3.6.x / php-5.2.3 : OK</li>
<li>stable-3.6.x / php-5.2.6 : OK</li>
</ul>
<p>上記の結果より、本チケットは ZendFramework 1.10.8 にバージョンアップすることで解決できる問題であるといえる。</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=9771
2011-07-24T02:35:15Z
Shingo Yamada
s.yamada@tejimaya.com
<ul><li><strong>担当者</strong> を <i>Shingo Yamada</i> から <i>Maki Takahashi</i> に変更</li></ul>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=9790
2011-07-27T06:35:39Z
Maki Takahashi
<ul><li><strong>ファイル</strong> <a href="/attachments/download/306/Zend_Uri_Http.patch">Zend_Uri_Http.patch</a> <a class="icon-only icon-magnifier" title="表示" href="/attachments/306/Zend_Uri_Http.patch">表示</a> を追加</li><li><strong>ステータス</strong> を <i>Accepted(着手)</i> から <i>Pending Review(レビュー待ち)</i> に変更</li><li><strong>進捗率</strong> を <i>0</i> から <i>50</i> に変更</li></ul><p>#note-9 の通り、OpenPNE3.7.0(masterブランチ)ではZendFramework 1.10.8にバージョンアップされているため、解決済みですが<br />OpenPNE3.6(stable-3.6.xブランチ)に含まれるZendFramework 1.7.3PL1において</p>
<p>lib/vendor/Zend/ValidateHostname.php 358行目で落ちていることがわかりました。<br /><pre>
// Check each domain part
$status = @preg_match($regexLabel, $domainPart);
</pre></p>
<p><a class="external" href="http://framework.zend.com/manual/ja/zend.validate.set.html#zend.validate.set.hostname.idn">http://framework.zend.com/manual/ja/zend.validate.set.html#zend.validate.set.hostname.idn</a><br />国際化ドメイン名(IDN)を検証しないようにすれば、回避できます。</p>
<p>php5.2.5以降では、国際化ドメインを使用すると「Invalid URI supplied」という例外が発生するようになりますが<br />Punycode変換すれば上記の例外をさけることが可能です。</p>
<p>lib/vendor/Zend/Uri/Http.phpの446行目<br /><pre>
$validate = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_ALL);
</pre><br /> ↓<br /><pre>
$validate = new Zend_Validate_Hostname(Zend_Validate_Hostname::ALLOW_ALL, false);
</pre></p>
<p>上記修正パッチを添付いたします。</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=9934
2011-08-04T02:47:42Z
Shingo Yamada
s.yamada@tejimaya.com
<ul><li><strong>対象バージョン</strong> を <i>OpenPNE 3.7.0</i> から <i>OpenPNE3.6beta13</i> に変更</li></ul><p>master では起こらないため、本チケットの対象バージョンを 3.6 に変更します。<br />作成済みのBPチケットは閉じます。</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=9960
2011-08-04T08:46:45Z
Rimpei Ogawa
ogawa@tejimaya.com
<ul><li><strong>ステータス</strong> を <i>Pending Review(レビュー待ち)</i> から <i>Rejected(差し戻し)</i> に変更</li></ul><p>Zend_Uri_Http を利用している箇所はインストール中に呼ばれるこの箇所だけではないため、「国際化ドメイン名(IDN)を検証しないようにする」という変更を安易にするべきではないと思います。</p>
<p>可能であれば、国際化ドメイン名の検証をした上で Segmentaion fault が発生しないような変更をした方がよいと思いますが、これは難しいでしょうか?<br />(こちらで少し確認したところ master ブランチ同梱の Zend_Uri_Http でも国際化ドメイン名の検証は行っているようなので不可能ではないと思いますが、Zend_Validate_Hostname がかなり変更されていたので容易ではないかもしれませんね...)</p>
<p>ただ、元々 symfony の sfValidatorUrl や _auto_link_urls() は国際化ドメイン名を考慮しない実装となっているため、これらの機構と一緒に Zend_Uri_Http を利用している箇所については、「国際化ドメイン名(IDN)を検証しないようにする」という変更は影響を受けないため、実際には問題ないケースがほとんどかもしれません。</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=9968
2011-08-04T09:21:36Z
Maki Takahashi
<ul><li><strong>ステータス</strong> を <i>Rejected(差し戻し)</i> から <i>Accepted(着手)</i> に変更</li></ul><p>masterに同梱されているZendFrameworkを参考にパッチを作り直します。</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10005
2011-08-05T02:29:28Z
Shingo Yamada
s.yamada@tejimaya.com
<ul><li><strong>360対象</strong> を <i>beta13</i> にセット</li></ul>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10085
2011-08-05T14:29:29Z
Maki Takahashi
<ul><li><strong>ファイル</strong> <a href="/attachments/download/312/Zend_Validate_Hostname.patch">Zend_Validate_Hostname.patch</a> <a class="icon-only icon-magnifier" title="表示" href="/attachments/312/Zend_Validate_Hostname.patch">表示</a> を追加</li><li><strong>ステータス</strong> を <i>Accepted(着手)</i> から <i>Pending Review(レビュー待ち)</i> に変更</li></ul><p>Zend_Validate_Hostname.phpを修正するパッチを作成し、「国際化ドメイン名の検証」を可能にしました。</p>
<p>が、しかし(これはMasterに同梱されているZendFrameworkでも発生するのですが)php5.2.4にて<br />Zend_Http_Clientに日本語ドメインを指定した場合、preg_matchでSegmentaion faultが発生するようですので<br />結果として?(日本語ドメインしか試していませんが)国際化ドメイン名の検証ができない状況のようです。<br />(ざっと調べただけですがpreg_matchの引数が長過ぎるとダメなようなので、うまい回避方法がなさそうに思われます)</p>
<p>(修正としては不十分に思われますが)<br />とりあえず、添付のパッチを適用した状態でphp5.2.4にてインストールが正常に動作することは確認済みです。</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10105
2011-08-08T09:08:24Z
Rimpei Ogawa
ogawa@tejimaya.com
<ul></ul><p>関連していると思われる情報メモ:</p>
<p>PHP 5.2.6 で PCRE のバージョンが上がっている。</p>
<blockquote>
<p>Version 5.2.6</p>
<ul>
<li>Security Fixes
<ul>
<li>Upgraded PCRE to version 7.6 (Nuno)</li>
</ul></li>
</ul>
<p><a class="external" href="http://php.net/ChangeLog-5.php#5.2.6">http://php.net/ChangeLog-5.php#5.2.6</a></p>
</blockquote>
<p>(※以下の表はChangeLogしか確認せずに作っています)</p>
<table>
<tr>
<td> PHP </td>
<td> PCRE </td>
</tr>
<tr>
<td> 5.2.6 </td>
<td> 7.6 </td>
</tr>
<tr>
<td> 5.2.5 </td>
<td> 7.3 </td>
</tr>
<tr>
<td> 5.2.4 </td>
<td> 7.2 </td>
</tr>
<tr>
<td> 5.2.3 </td>
<td> 7.0 </td>
</tr>
</table>
<p>PCRE 7.6 の ChangeLog にそれらしい変更あり。</p>
<blockquote>
<p>Version 7.6 28-Jan-08</p>
</blockquote>
<hr />
<blockquote>
<p>1. A character class containing a very large number of characters with</p>
</blockquote>
codepoints greater than 255 (in UTF-8 mode, of course) caused a buffer<br /> overflow.
<blockquote>
<p><a class="external" href="http://www.pcre.org/changelog.txt">http://www.pcre.org/changelog.txt</a></p>
</blockquote>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10107
2011-08-08T09:53:25Z
Rimpei Ogawa
ogawa@tejimaya.com
<ul></ul><p>まず、こちらでの調査内容を書きます。(修正方針は次のコメントに分けます)</p>
<p>現在の master に同梱されている <a class="external" href="https://raw.github.com/openpne/OpenPNE3/master/lib/vendor/Zend/Validate/Hostname/Jp.php">https://raw.github.com/openpne/OpenPNE3/master/lib/vendor/Zend/Validate/Hostname/Jp.php</a> を読み込んで preg_match() に渡すだけのテストをしてみたところ、たしかに PHP 5.2.3〜5.2.5 では Segmentation fault が発生していました。</p>
<p>検証コード:<br /><pre>
<?php
$jp = include dirname(__FILE__).'/Jp.php';
echo '1 ';
$pattern = $jp[1];
echo '2 ';
preg_match($pattern, '');
echo 'Success'.PHP_EOL;
</pre></p>
<p>実行結果:<br /><pre>
$ phpall test.php
php-5.2.3: 1 2
php-5.2.4: 1 2
php-5.2.5: 1 2
php-5.2.6: 1 2 Success!
php-5.2.8: 1 2 Success!
php-5.2.9: 1 2 Success!
php-5.2.10: 1 2 Success!
php-5.2.11: 1 2 Success!
php-5.2.12: 1 2 Success!
php-5.2.13: 1 2 Success!
php-5.2.14: 1 2 Success!
php-5.2.15: 1 2 Success!
php-5.2.16: 1 2 Success!
php-5.2.17: 1 2 Success!
php-5.3.0: 1 2 Success!
php-5.3.1: 1 2 Success!
php-5.3.2: 1 2 Success!
php-5.3.3: 1 2 Success!
php-5.3.4: 1 2 Success!
php-5.3.5: 1 2 Success!
php-5.3.6: 1 2 Success!
</pre></p>
<pre>
$ php-5.2.3 test.php
1 2 セグメンテーション違反です
$ php-5.2.4 test.php
1 2 セグメンテーション違反です
$ php-5.2.5 test.php
1 2 セグメンテーション違反です
$ php-5.2.6 test.php
1 2 Success!
</pre>
<p>よって、Zend Framework 1.10.8 で問題が完全に解決されたわけではなく、master のコードでも国際化ドメイン名の検証が行われると 3.6 同様に Segmentation fault が発生するものと考えられます。</p>
<p>Zend Framework 1.10.8 で本チケットの問題が発生しなくなったのは、IDN検証用の正規表現によるマッチングの前に非IDNのドメイン名検証用の正規表現によるマッチングを行いこれが成功した場合にはIDN検証用の正規表現を利用しないコードに変更されたからです。そのため、以前のバージョンでは全URLに対して Segmentation fault が発生していたのに対し、新しいバージョンでは実際にIDNのURLを利用しようとしない限りは Segmentation fault が発生しなくなったものと思われます。</p>
<p>lib/vendor/Zend/Validate/Hostname.php<br /><pre>
/**
* Match against IDN hostnames
* Note: Keep label regex short to avoid issues with long patterns when matching IDN hostnames
* @see Zend_Validate_Hostname_Interface
*/
$regexChars = array(0 => '/^[a-z0-9\x2d]{1,63}$/i');
if ($this->_options['idn'] && isset($this->_validIdns[strtoupper($this->_tld)])) {
if (is_string($this->_validIdns[strtoupper($this->_tld)])) {
$regexChars += include($this->_validIdns[strtoupper($this->_tld)]);
} else {
$regexChars += $this->_validIdns[strtoupper($this->_tld)];
}
}
...
// Check each domain part
$checked = false;
foreach($regexChars as $regexKey => $regexChar) {
$status = @preg_match($regexChar, $domainPart);
if ($status > 0) {
...
$checked = true;
break;
...
}
}
</pre></p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10137
2011-08-09T08:47:43Z
Rimpei Ogawa
ogawa@tejimaya.com
<ul><li><strong>ステータス</strong> を <i>Pending Review(レビュー待ち)</i> から <i>Rejected(差し戻し)</i> に変更</li></ul><a name="問題点について整理"></a>
<h3 >問題点について整理<a href="#問題点について整理" class="wiki-anchor">¶</a></h3>
<p>PHP 5.2.3〜5.2.5(本チケットのタイトルは 5.2.5 が抜けている)の環境で、</p>
<ol>
<li>openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
<ul>
<li>Zend_Validate_Hostname を利用するクラス(例えば、Zend_Http_Client)で、特定のドメイン名(※)を含む URL を利用した場合にセグメンテーション違反が発生する
<ul>
<li>(※)国際化ドメイン名を許容し、Zend_Validate_Hostname で用意されている検証用の正規表現が長いもの。例えば、.jp</li>
</ul>
</li>
<li>標準設定では、openpne:install 時に Zend_Http_Client に plugins.openpne.jp を含む URL を渡すために問題が発生する</li>
<li>OpenPNE対象ブランチ
<ul>
<li>master ブランチでは発生しない</li>
<li>stable-3.6.x ブランチでは発生する</li>
<li>stable-3.4.x ブランチではおそらく発生しない(.jp の国際化ドメインに Zend_Validate_Hostname が対応していないため)</li>
</ul>
</li>
</ul>
</li>
<li>(具体的な問題は報告されていないが)国際化ドメイン名を含む URL を利用しようとするとセグメンテーション違反が発生する可能性がある
<ul>
<li>Zend_Validate_Hostname を利用するクラス(例えば、Zend_Http_Client)で、特定のドメイン名(※)の <strong>国際化ドメイン名を含む</strong> URL を利用した場合にセグメンテーション違反が発生する
<ul>
<li>(※)国際化ドメイン名を許容し、Zend_Validate_Hostname で用意されている検証用の正規表現が長いもの。例えば、.jp</li>
<li>例えば、 <code>plugins.openpne.jp</code> は問題なく、 <code>日本語.jp</code> は問題がある</li>
</ul>
</li>
<li>OpenPNE対象ブランチ
<ul>
<li>master ブランチで発生する</li>
<li>stable-3.6.x ブランチで発生する</li>
<li>stable-3.4.x ブランチでも発生すると思われるが、対象のドメイン名は master や 3.6 のものとは異なる(.jp は未対応。また、他のドメインに関してもなぜか正規表現が短いものが多いので発生しないかもしれない)</li>
</ul></li>
</ul></li>
</ol>
<a name="修正方針についての提案"></a>
<h3 >修正方針についての提案<a href="#修正方針についての提案" class="wiki-anchor">¶</a></h3>
<p>まず、本チケットにおいては 問題1 の openpne:install 時にセグメンテーション違反が発生する問題についてのみ対象とし、問題2 については別チケット扱いとするのがよいと思います。(問題2 については具体的な問題が報告されておらず、国際化ドメイン名が利用されて問題の発生する可能性のある箇所も非常に限られているため、緊急性はないと考えられる)</p>
<p>その上で本チケットの修正内容としては、<a href="/issues/2011#note-12">note-12</a> のパッチをベースとし、PHPのバージョンを確認し 5.2.6 未満の場合のみ国際化ドメイン名の検証を行わないようにする分岐を追加する方法を提案します。(バージョンの比較には PHP の <a href="http://www.php.net/manual/ja/function.version-compare.php" class="external">version_compare() 関数</a> が使えます)</p>
<p>PHP 5.2.6 以上の環境についてはこれまで通り動作し、PHP 5.2.6 未満の環境においては元々セグメンテーション違反により国際化ドメイン名が利用できない状態であったので、この変更により現状より悪くなることはありません。</p>
<p>また、 <a href="/issues/2011#note-17">note-17</a> のパッチに比べると小さい変更で済むため、安定版リリース前にも適用しやすいというメリットもあります。</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10185
2011-08-11T14:08:29Z
Maki Takahashi
<ul><li><strong>ステータス</strong> を <i>Rejected(差し戻し)</i> から <i>Accepted(着手)</i> に変更</li></ul>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10212
2011-08-13T08:47:20Z
Maki Takahashi
<ul><li><strong>題名</strong> を <i>php5.2.3・php5.2.4 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する</i> から <i>PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する</i> に変更</li><li><strong>説明</strong> を更新 (<a title="差分を表示" href="/journals/10212/diff?detail_id=13109">diff</a>)</li><li><strong>ステータス</strong> を <i>Accepted(着手)</i> から <i>Pending Review(レビュー待ち)</i> に変更</li></ul><p><a class="changeset" title="(refs #2011) added "IDN domains are not validated" option of Zend_Validate_Hostname if PHP_VERSIO..." href="http://redmine.openpne.jp/projects/op3/repository/revisions/70ef9ba5652e508453c55839d46afb469ebacb0a">70ef9ba5</a> にて<br /><pre>
note-12 のパッチをベースとし、PHPのバージョンを確認し 5.2.6 未満の場合のみ国際化ドメイン名の検証を行わないようにする分岐を追加する方法
</pre><br />を採用しました。</p>
<p>php5.2.4の環境および、php5.3.2の環境両方にてインストールが正常に行えることを確認いたしました。</p>
<p>問題2については、別途チケットを作成しました( <a class="issue tracker-1 status-1 priority-4 priority-default" title="Bug(バグ): PHP 5.2.3〜5.2.5で国際化ドメイン名を含む URL を利用しようとするとセグメンテーション違反が発生する可能性がある (New(新規))" href="http://redmine.openpne.jp/issues/2349">#2349</a> )</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10288
2011-08-17T11:05:31Z
Minoru Takai
main.coeurl@gmail.com
<ul><li><strong>説明</strong> を更新 (<a title="差分を表示" href="/journals/10288/diff?detail_id=13205">diff</a>)</li></ul><p>チケットの Description の一部が古かったので修正</p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10289
2011-08-17T11:56:19Z
Kousuke Ebihara
ebihara@tejimaya.com
<ul><li><strong>ステータス</strong> を <i>Pending Review(レビュー待ち)</i> から <i>Pending Testing(テスト待ち)</i> に変更</li><li><strong>進捗率</strong> を <i>50</i> から <i>70</i> に変更</li></ul>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10301
2011-08-18T10:58:31Z
Mutsumi Imamura
imamura@openpne.jp
<ul></ul><p>下記のPHPバージョン下でインストールタスクを実行し、実行直後にセグメンテーション違反が発生しないことを確認しました。</p>
<ul>
<li>PHP5.2.3</li>
<li>PHP5.2.4</li>
<li>PHP5.2.5</li>
<li>PHP5.2.6</li>
<li>PHP5.2.8</li>
<li>PHP5.2.17</li>
</ul>
<p>テスト実施時に1点気になった点は、PHP5.2.17でインストールタスクを実行したところ、スキーマを読み込む直後くらいにセグメンテーション違反が発生しました。<br />しかし、再度実行したところ再現せず問題なくインストールすることが出来ました。<br />このチケットで問題視されていたインストール直後にセグメンテーション違反が発生することとはまた別の問題であると考えられることと、100%再現するというわけではないのでこのチケットは修正完了とします。<br />別途、チケットを作成し対応するのが望ましいかと思います。</p>
<p>下記はセグメンテーション違反発生時のターミナル出力の一部抜粋です。<br /><pre>
>> file+ /home/tetete/sns/php-5.2.17.tetete.jp/data/fixtures_tmp/012_000_revision_51da175b32839d5dc41ab76d63dab10c.yml
>> file+ /home/tetete/sns/php-5.2.17.tetete.jp/data/fixtures_tmp/012_010_navigation_0d7169e208ca9d16a84085575c34d1b9.yml
>> file+ /home/tetete/sns/php-5.2.17.tetete.jp/data/fixtures_tmp/012_020_gadget_854d0f4d0df31fd028b4c8e75a0a6096.yml
>> doctrine Dropping "doctrine" database
>> doctrine SQLSTATE[HY000]: General error: 1008 Can't drop database 'tetete'; database doesn't exist. Failing Query: "DROP DATABASE tetete"
>> doctrine Creating "prod" environment "doctrine" database
>> doctrine generating model classes
>> file+ /tmp/doctrine_schema_48626.yml
Segmentation fault
</pre></p>
OpenPNE 3 - Bug(バグ) #2011: PHP 5.2.3〜5.2.5 で openpne:install をおこなうとセグメンテーション違反でインストールに失敗する
http://redmine.openpne.jp/issues/2011?journal_id=10302
2011-08-18T11:06:06Z
Mutsumi Imamura
imamura@openpne.jp
<ul><li><strong>ステータス</strong> を <i>Pending Testing(テスト待ち)</i> から <i>Fixed(完了)</i> に変更</li><li><strong>進捗率</strong> を <i>70</i> から <i>100</i> に変更</li></ul><blockquote>
<p>テスト実施時に1点気になった点は、PHP5.2.17でインストールタスクを実行したところ、スキーマを読み込む直後くらいにセグメンテーション違反が発生しました。</p>
</blockquote>
<p>については↓のチケットで対応することにしましょう。</p>
<p>php-5.2.17の環境でインストールタスクを実行するとセグメンテーション違反が発生する場合がある<br /><a class="external" href="http://redmine.openpne.jp/issues/2357">http://redmine.openpne.jp/issues/2357</a></p>