Project

General

Profile

Bug(バグ) #3337

PostgreSQL で openpne:install を動かそうとすると segumentation fault が発生する

Added by Yuya Watanabe about 9 years ago. Updated over 2 years ago.

Status:
New(新規)
Priority:
Normal(通常)
Assignee:
-
Target version:
Start date:
2013-05-01
Due date:
% Done:

0%

3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)

Description

概要

PostgreSQL で openpne:install を動かそうとすると segumentation fault が発生する.
PostgreSQL には正式に対応しているわけではないため, トラッカーは「Enhancement(改善)」のほうがいいかもしれない.

lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/task/sfDoctrineBuildModelTask.class.php
 71     $import->importSchema($schema, 'yml', $config['models_path']);

下記部分で $name が 'CommuntityTopic' となるとき.

lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Schema.php 
282         foreach ($array as $name => $definition) {
283             if ( ! empty($models) && !in_array($definition['className'], $models)) {
284                 continue;
285             }
286             
287             $builder->buildRecord($definition);
288         }

下記,スタックトレースのようなもの.

lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Builder.php
1062             $this->writeDefinition($baseClass);
...
1205         $definitionCode = $this->buildDefinition($definition);
...
 969             $setUpCode = $this->buildSetUp($definition);
...
 485             $ret[$i] = $this->buildActAs($definition['actAs']);
...
 753         $build = $this->innerBuildActAs($actAs, 0, null, $emittedActAs);
...
 814                     $build .= $this->emitAssign($level, $template, null); 

最終的には下記 714 行目でセグフォが起きる.

lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Import/Builder.php
 710     private function emitAssign($level, $name, $option)
 711     {
 712         // find class matching $name
 713         $classname = $name;
 714         if (class_exists("Doctrine_Template_$name", true)) {
 715             $classname = "Doctrine_Template_$name";
 716         }
 717         return "        \$" . strtolower($name) . "$level = new $classname($option);". PHP_EOL;
 718     }

この時 $name に入っているのは 'opCommunityTopicPluginImagesBehavior' という文字列.

History

#2 Updated by kaoru n over 2 years ago

  • Target version set to OpenPNE 3.10.x

Also available in: Atom PDF