Проблема с настройкой RApache в OS X 10.5.8 - PullRequest
2 голосов
/ 26 февраля 2010

Я пытался правильно настроить RApache на моем Macbook Pro под управлением OS X 10.5.8. После успешной установки RApache (я думаю) я добавил следующее в файл httpd.conf, как предложено в руководстве.

LoadModule R_module /apache/module/path/mod_R.so 
ROutputErrors
<Location /RApacheInfo> 
    SetHandler r-info 
</Location> 

С этими дополнениями я смог успешно перейти на http://localhost/RApacheInfo и просмотреть информацию о состоянии. Если я добавлю следующую дополнительную строку, REvalOnStartup "библиотека (варево)" Я больше не могу загрузить страницу RApacheInfo успешно.

Я не знаю, в чем здесь проблема. Без вызова REvalOnStartup я вижу следующее в журнале ошибок Apache.

[Fri Feb 26 11:36:36 2010] [notice] Apache/2.2.13 (Unix) mod_ssl/2.2.13 OpenSSL/0.9.7l DAV/2 mod_R/1.1.8 R/2.10.1 configured -- resuming normal operations
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.
The process has forked and you cannot use this CoreFoundation functionality safely. You MUST exec().
Break on __THE_PROCESS_HAS_FORKED_AND_YOU_CANNOT_USE_THIS_COREFOUNDATION_FUNCTIONALITY___YOU_MUST_EXEC__() to debug.

Не очень хороший знак. Есть мысли о том, что может происходить? Или что проверить?

Chris

1 Ответ

2 голосов
/ 01 марта 2010

Я не уверен, почему вы получаете эту ошибку при простой загрузке библиотеки, но мы видели эту проблему на Leopard из-за того, что библиотеки freetype / fontconfig / cairo от Apple вызывают вызовы CoreFoundation:

http://finzi.psych.upenn.edu/R/Rhelp02/archive/118681.html

Как вы установили R?

Я попытался воспроизвести вашу проблему на Snow Leopard с помощью стандартного apache2, двоичного R 2.10.1 из CRAN, Xcode 3.2.1 и rapche 1.1.8, но безуспешно. Моя установка работала как чемпион.

У меня больше нет доступа к Leopard, поэтому мое лучшее предложение - использовать gdb для прерывания этого действительно длинного системного вызова. Вы захотите удалить директиву REvalonStartup и заменить ее вызовом обработчика, который делает то же самое, сконфигурировать apache для запуска только одного дочернего процесса (отсюда и весь объект fork) и подключить к нему gdb. Затем укажите в своем веб-браузере URL-адрес вашего обработчика и посмотрите, не нарушает ли функция gdb функцию, а затем посмотрите на трассировку стека ... Довольно глупо, я знаю, но это все, что я получил на данный момент.

...