The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"Паранормальные глюки с GCC"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"Паранормальные глюки с GCC"
Сообщение от lexluther emailИскать по авторуВ закладки(??) on 07-Янв-05, 14:59  (MSK)
Добрый день,

У меня есть CGI программа, написанная на C++, не делающая операций файлового ввода вывода, код которой приведен ниже. Как видите, все заголовки передаются, и никаких проблем с правами доступа физически быть не может. К тому же для исполняемого файла все права установлены в 777.

#include <stdio.h>
int main(int argc, char* argv[])
{
puts("Content-type:text/html;\n\n<br>START<br><br>");
return 0;
}

Сам механизм проблемы проявляется следующим образом:

1. Если я предварительно компилирую (g++ -o main.cgi main.cpp) данный код у себя на компьютере, то при последующем переносе данного (полностью скомпилированного) CGI-приложения на сервер программа исполняется идеально как из консоли (под SHH) так и под Apache в виде CGI.

2. В случае же, если я компилирую аналогичный код на сервере (из исходника g++ -o main.cgi main.cpp, или же из предварительно скомпилированного локально на моем компьютере объектного файла), то при запуске данного приложения как CGI, Apache выдает ошибку 500 и жалуется на заголовки. Если же я запускаю данное приложение в консоли (под SHH), то ошибки не происходит и приложение работает как ему и следует. Т.е. происходит что-то паранормальное. В консоли приложение выполняется, а в Apache нет.

ПО на сервере:
Apache/2.0.46 (Red Hat),
gcc version 3.2.3 20030502 (Red Hat Linux 3.2.3-24),
GNU ld version 2.14.90.0.4 20030523

Данный механизм я протестировал несколько десятков раз с разным исходным кодом (в том числе с объектными файлами) и поэтому могу дать 100% гарантию, что все именно так и происходит. Хотя объяснить логически суть подобной ошибки я не могу.

PS: Помнится что на заре моей работы с FreeBSD, я работал с версией данной системы 4.4 и у меня происходил следующий глюк: я компилировал тестовое простое (консольное на C++) приложение с помощью GCC и приложение работало, но только до следующей перезагрузки. После перезагрузки системы при попытке запустить данное консольное приложение мне выдавалась ошибка, связанная с какими то библиотеками. Я тогда плюнул и скачал компилятор под ADA95, поскольку одинаково хорошо программирую и на этом языке.

С уважением
LeXLuTHeR

  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "Паранормальные глюки с GCC"
Сообщение от DeadMustdie emailИскать по авторуВ закладки(??) on 07-Янв-05, 16:31  (MSK)
ldd -r progfile.cgi

Дальше копаем в сторону ldconfig и/или LD_LIBRARY_PATH.

Паранормальщины на свете нету.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "Паранормальные глюки с GCC"
Сообщение от Асен Тотин emailИскать по авторуВ закладки on 08-Янв-05, 15:00  (MSK)
Привет,

ваш код компилируется и работает без ошибок на:

[root@frodo unf]# gcc --version
gcc (GCC) 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)
[root@frodo unf]# ld --version
GNU ld version 2.15.92.0.2 20040927

Apache стоит, однако, 1.3.33. Вы пробовали запускать собранныю на сервере скрипт под Apache 1.3? А пробовали убрать точку с запятой в конце выражения "text/html"?

WWell,

  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру