Welcome! Log In Create A New Profile

Advanced

Re: nginx-0.8.30

Igor Sysoev
December 21, 2009 08:28AM
On Mon, Dec 21, 2009 at 04:16:16PM +0300, Maxim Dounin wrote:

> Hello!
>
> On Mon, Dec 21, 2009 at 03:50:27PM +0300, Igor Sysoev wrote:
>
> > On Mon, Dec 21, 2009 at 02:36:26PM +0200, Andrew Sitnikov wrote:
> >
> > > Hello Igor,
> > >
> > > IS> Это не только gcc 4.1, но на фрибсдшном наборе gcc это не воспроизводится.
> > > IS> Твой вариант с memcpy мне не нравится: оно не мешает при переконфигурации,
> > > IS> но как общее решение не подходит - зачем копировать лишнее в run-time.
> > > на 0.7.x такого кстати нет.
> >
> > Тут две проблемы в разных файлах.
> > Твоя появилась в 0.8.12.
> > А та, которую фиксил Макс, скорее всего, в 0.8.21.
>
> Вот кстати третья (gcc 4.4.0, Ubuntu 4.4.0-8ubuntu2):
>
> gcc-4.4 -c -O -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Wunused-function -Wunused-variable -Wunused-value -Werror -g -O2 -I src/core -I src/event -I src/event/modules -I src/os/unix -I objs \
> -o objs/src/os/unix/ngx_channel.o \
> src/os/unix/ngx_channel.c
> cc1: warnings being treated as errors
> src/os/unix/ngx_channel.c: In function ‘ngx_write_channel’:
> src/os/unix/ngx_channel.c:39: error: dereferencing type-punned pointer will break strict-aliasing rules
> src/os/unix/ngx_channel.c: In function ‘ngx_read_channel’:
> src/os/unix/ngx_channel.c:156: error: dereferencing type-punned pointer will break strict-aliasing rules
>
> Патч прилагается.
>
> Вот тут IMHO memcpy вполне правилен, правильнее некуда.

Только, если gcc его заинланит. А то очень похоже на

len = strlen("статическая строка");

> Maxim Dounin

> diff -r 72104cd120ec src/os/unix/ngx_channel.c
> --- a/src/os/unix/ngx_channel.c Tue Dec 15 00:00:00 2009 +0300
> +++ b/src/os/unix/ngx_channel.c Mon Dec 21 16:10:45 2009 +0300
> @@ -36,7 +36,7 @@
> cmsg.cm.cmsg_len = CMSG_LEN(sizeof(int));
> cmsg.cm.cmsg_level = SOL_SOCKET;
> cmsg.cm.cmsg_type = SCM_RIGHTS;
> - *(int *) CMSG_DATA(&cmsg.cm) = ch->fd;
> + ngx_memcpy(CMSG_DATA(&cmsg.cm), &ch->fd, sizeof(ch->fd));
> }
>
> msg.msg_flags = 0;
> @@ -153,7 +153,7 @@
> return NGX_ERROR;
> }
>
> - ch->fd = *(int *) CMSG_DATA(&cmsg.cm);
> + ngx_memcpy(&ch->fd, CMSG_DATA(&cmsg.cm), sizeof(ch->fd));
> }
>
> if (msg.msg_flags & (MSG_TRUNC|MSG_CTRUNC)) {

> _______________________________________________
> nginx-ru mailing list
> nginx-ru@nginx.org
> http://nginx.org/mailman/listinfo/nginx-ru


--
Игорь Сысоев
http://sysoev.ru

_______________________________________________
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: 315
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