LINUX.ORG.RU

Глючит с ключем -О2 .....


0

0

Подскажите плиз. Я попробовал скомпилять проект с ключем -О2, в проекте часто используется форк, обработчики сиигналов и семафоры. Глюки пошли не описуемые. Я часа четыре глюки искал. Не нашел. Убрал этот поганый ключ и все заработало. Хотелось бы выяснить. Это глюки РедХатовского gcc - 2.96(я слышал что вещь крайне неудачная) или нельзя в принципе этот ключ в описанной ситуации применять?

★★★★

Ну AFAIK оптимизация на взаимодействие процессов никак не влияет (насчет нитей -- не знаю, думаю, что тоже нет, но зарекаться не буду). Но: к вопросу об обработчиках сигналов. Переменными, к которым есть доступ и из обработчика, и откуда еще, *должны объявляться* volatile (а еще лучше использовать только тип sig_atomic_t). Скорее всего, проблема именно в этом -- когда оптимизация выключена, то все переменные ведут себя как будто они volatile. -O2 существенно меняет картину.

aa5779
()

Ну так прикол в том, что я и объявлял эти переменные как sig_atomic_t. Значит все таки 2.96 глючный?

Dead ★★★★
() автор топика

Нет, просто сама оптимизация часто глючна и не имеет достаточного теоретического обоснования. Помнится, на какой-то конференции, гда представляли кой-то оптимизирующий Фортран и ПЛ/1 (на ЕС ЭВМ ещё) докладчику тут же представили программку в 7-8 строк, которая оптимизировалась неправильно. Оптимизируй сам, эсли не хочешь иметь траха с отладкой... ++ это вполне позволяет.

С уважением -- Смоляное Чучелко

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.