操作
Bug(バグ) #3337
未完了PostgreSQL で openpne:install を動かそうとすると segumentation fault が発生する
開始日:
2013-05-01
期日:
進捗率:
0%
予定工数:
3.6 で発生するか:
Unknown (未調査)
3.8 で発生するか:
Unknown (未調査)
説明
概要¶
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' という文字列.
操作