1

現在、Doctrine PHPCR バンドルを使用して、Symfony2 アプリケーションに問題があります。Sonata 管理者の投稿リストを表示しようとすると、セグメンテーション エラーが発生しました。

[Thu Aug 01 12:33:11 2013] [通知] child pid 4239 exit signal セグメンテーション違反 (11)

たくさんの投稿があったので、適切なパフォーマンスが得られるように分割しました。このように、投稿パスは「/blog/economics/2014/02/10/my-awesome-post」のようになります。私たちのノードは、対応するクラスで次のとおりです。

|_ Blog (Generic)
    |_ Economics (Section)
        |_ 2014 (Shard)
            |_ 02 (Shard)
               |_ 10 (Shard)
                   |_ my-awesome-post (Post)

私の管理者リストは次のようになります。

/**
 * @param FormMapper $formMapper
 */
protected function configureListFields(ListMapper $listMapper)
{
    $listMapper
        // ...
        ->add('parentTitle', 'string', array('sortable' => true))
        // ...
    ;
}

そして今、関連する 2 つのドキュメント メソッド:

/**
 * Return document section name or "/" by default
 *
 * @return string
 */
public function getParentTitle()
{
    $parent = $this->getSectionParent();

    if ($parent instanceof Section) {
        return $parent->getTitle();
    }

    return '/';
}

public function getSectionParent()
{
    $parent = $this->getParent();
    while ($parent instanceof Shard) {
        $parent = $parent->getParent();
    }

    return $parent;
}

しばらく手探りした後、これら 2 つの方法のいずれかでセグメンテーション違反が発生していることに気付きました。正確な場所はわかりません。でハードライトされた文字列を返すとgetParentTitle、すべて正常に動作します。しかし、 を呼び出すとすぐにgetSectionParentセグメンテーション違反が発生します。

でデバッグしようとしましgdbたが、これが私が見つけた最も正確なスタックです:

Core was generated by `/usr/sbin/apache2 -k start'.
Program terminated with signal 11, Segmentation fault.
#0  zval_mark_grey (pz=0xd0b48751b7bc) at /usr/src/php5/source/php-5.4.25/Zend/zend_gc.c:426
426     /usr/src/php5/source/php-5.4.25/Zend/zend_gc.c: Aucun fichier ou dossier de ce type.

これらのデータがすべて十分かどうかはわかりません (私は segfault デバッグの初心者です)。

このメッセージを Google で検索しようとしましたが、結論を下すものは見つかりませんでした。それでも、zend.enable_gc = 0作品を介してガベージコレクターを無効にします。ただし、メモリ消費の些細な理由から、本番環境では渡しません。

何か案が?

編集

マシンを最初から再インストールした後も、まだ問題が発生しています。それでも、デフォルトの Debian PHP バージョン (5.4.4) から DotDeb バージョン (5.4.25) に移行することで問題は解決しました。ただし、同じ場所に別のセグメンテーション違反が発生しました。

Core was generated by `/usr/sbin/apache2 -k start'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007f09371c774b in timelib_timezone_db_data_builtin () from /usr/lib/apache2/modules/libphp5.so

まだ助けが必要です。:)

4

0 に答える 0