Welcome! Log In Create A New Profile

Advanced

Re: nginx-0.8.30

Maxim Dounin
December 21, 2009 10:34AM
Hello!

On Mon, Dec 21, 2009 at 05:41:11PM +0300, Igor Sysoev wrote:

> On Mon, Dec 21, 2009 at 04:58:12PM +0300, Maxim Dounin wrote:
>
> > > > Это второй репорт который я видел про ngx_http_ephemeral(),
> > > > предыдущий был тоже gcc 4.1. Если ты знаешь где ещё это вылезает
> > > > - свисти, вдруг у меня завалялось. :)
> > > >
> > > > > Твой вариант с memcpy мне не нравится: оно не мешает при переконфигурации,
> > > > > но как общее решение не подходит - зачем копировать лишнее в run-time.
> > > >
> > > > Там проблема в том что объект на стеке в той же функции, и
> > > > соответственно гарантированно имеет effective type.
> > > > Альтернативные варианты решения:
> > > >
> > > > 1. Аллоцировать динамически. Что кстати приведёт к
> > > > гарантированно правильному выравниванию, и сюрпризов при
> > > > преобразовании в sockaddr_in на strict alignment платформах
> > > > гарантировано не будет.
> > >
> > > Там проблема не в выравнивании, а вот в этом:
> > > http://cellperformance.beyond3d.com/articles/2006/06/understanding-strict-aliasing.html
> > > http://cellperformance.beyond3d.com/articles/2006/05/demystifying-the-restrict-keyword.html
> >
> > Там проблема в том, что нарушаются strict aliasing rules
> > прописанные в стандарте ISO C, и поэтому gcc ругается.
> >
> > В данном случае - ругается вполне правильно, ибо насколько я могу
> > судить - потенциально это место чревато проблемами в случае
> > архитектур со строгим выравниванием.
> >
> > Ибо выделяется char[] на стеке, требования к выравниванию у
> > которого одни, а используется - вполне себе struct sockaddr_in,
> > требования к выравниванию элементов коего совсем другие. Если
> > повезёт - всё будет хорошо, но может и не повезти.
>
> Нет, к выравниванию это не имеет никакого отношения, потому что
> ругаться начинает только при -O2, -O3 и -Os. По-твоему получается,
> что при -O0 и -O1 выравнивание компилятор не волнует.
>
> Это именно проблемы оптимизации, когда два указателя указывают
> на одну и ту же память.

Волнует компилятор действительно только проблема оптимизации. Что
там случится с выравниванием - он знать не знает, ведать не ведает
(тем более - на других архитектурах). Если что - в runtime будет
SIGBUS или ругань про unaligned access.

Я как бы пытаюсь сказать, что выдав warning по результатам своего
анализа о возможности оптимизации - он заодно вполне осмысленно
предупредил о возможных проблемах выравнивания. Ибо ноги у обоих
проблем растут из одного и того же нарушения strict-aliasing
rules.

Maxim Dounin

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

nginx-0.8.30

Igor Sysoev December 15, 2009 10:22AM

Re: nginx-0.8.30

Timur Bakeyev December 16, 2009 12:36PM

Re: nginx-0.8.30

Andrew Sitnikov December 21, 2009 04:02AM

Re[2]: nginx-0.8.30

Denis F. Latypoff December 21, 2009 04:18AM

Re[2]: nginx-0.8.30

Denis F. Latypoff December 21, 2009 04:38AM

Re: nginx-0.8.30

Maxim Dounin December 21, 2009 05:30AM

Re[2]: nginx-0.8.30

Denis F. Latypoff December 21, 2009 05:44AM

Re: nginx-0.8.30

Maxim Dounin December 21, 2009 07:10AM

Re: nginx-0.8.30

Igor Sysoev December 21, 2009 05:48AM

Re: nginx-0.8.30

Maxim Dounin December 21, 2009 06:42AM

Re: nginx-0.8.30

Igor Sysoev December 21, 2009 08:10AM

Re: nginx-0.8.30

Maxim Dounin December 21, 2009 09:00AM

Re: nginx-0.8.30

Igor Sysoev December 21, 2009 09:42AM

Re: nginx-0.8.30

Maxim Dounin December 21, 2009 10:34AM

Re: nginx-0.8.30

Igor Sysoev December 21, 2009 10:50AM

Re: nginx-0.8.30

Andrew Sitnikov December 21, 2009 10:56AM

Re: nginx-0.8.30

Maxim Dounin December 21, 2009 11:48AM

Re: nginx-0.8.30

Andrew Sitnikov December 21, 2009 07:38AM

Re: nginx-0.8.30

Igor Sysoev December 21, 2009 07:52AM

Re: nginx-0.8.30

Maxim Dounin December 21, 2009 08:18AM

Re: nginx-0.8.30

Igor Sysoev December 21, 2009 08:28AM

Вчера nginx выдал интересный сбой.

nginx@rufox.ru December 24, 2009 02:16AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 318
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready