ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=)
@ 2016-07-03 15:51 Sergey Y. Afonin
  2016-07-03 16:11 ` Hihin Ruslan
                   ` (2 more replies)
  0 siblings, 3 replies; 9+ messages in thread
From: Sergey Y. Afonin @ 2016-07-03 15:51 UTC (permalink / raw)
  To: ALT Linux Team development discussions

Приветствую.

Наткнулся на какой-то полтергейст при сборке xymon для i586 (с x86_64 поведение
ожитаемое: MAXCHECK нулю не равен). Проявляется в логе в виде

2016-05-23 14:47:35.120075 logfetch: /var/log/httpd2/error_log delta 2109847 bytes exceeds max buffer size 0; skipping some data

Если посмотреть в client/logfetch.c, там написано:

#define MAXCHECK   102400   /* When starting, don't look at more than 100 KB of data */
...
errprintf("logfetch: %s delta %zu bytes exceeds max buffer size %zu; skipping some data\n", filename, bufsz, MAXCHECK);

Каким образом может обнуляться значение, заданное через #define ? 
Ситуация одна и та же в p7 (gcc 4.7.2) и p8 (gcc 5.3.1). Правда,
это ситуация конца мая, месяц к этому вопросу не возвращался.

-- 
С уважением, Сергей Афонин


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=)
  2016-07-03 15:51 [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=) Sergey Y. Afonin
@ 2016-07-03 16:11 ` Hihin Ruslan
  2016-07-03 16:39   ` [devel] Полтергейст в gcc/i586 (#define) Sergey Y. Afonin
  2016-07-04 13:21 ` Sergey Afonin
  2016-07-04 13:54 ` [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=) Ivan A. Melnikov
  2 siblings, 1 reply; 9+ messages in thread
From: Hihin Ruslan @ 2016-07-03 16:11 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 1167 bytes --]

Здравствуйте Sergey Y. Afonin
  В сообщении от 3 июля 2016 Sergey Y. Afonin написал(a):
> Приветствую.
>
> Наткнулся на какой-то полтергейст при сборке xymon для i586 (с
> x86_64 поведение ожитаемое: MAXCHECK нулю не равен).
> Проявляется в логе в виде
>
> 2016-05-23 14:47:35.120075 logfetch: /var/log/httpd2/error_log
> delta 2109847 bytes exceeds max buffer size 0; skipping some
> data
>
> Если посмотреть в client/logfetch.c, там написано:
>
> #define MAXCHECK   102400   /* When starting, don't look at
> more than 100 KB of data */ ...
> errprintf("logfetch: %s delta %zu bytes exceeds max buffer
> size %zu; skipping some data\n", filename, bufsz, MAXCHECK);
>
> Каким образом может обнуляться значение, заданное через
> #define ? Ситуация одна и та же в p7 (gcc 4.7.2) и p8 (gcc
> 5.3.1). Правда, это ситуация конца мая, месяц к этому вопросу
> не возвращался.

Ну, вообще-то 2,109,847 больше 102,400, но я-бы код проверил с 
помощью cppcheck.

-- 
***
  А ещё говорят так  (fortune):
 
From the cradle to the coffin underwear comes first. -- Bertolt 
Brecht 
________________________________________________________________________
С уважением Хихин Руслан

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Полтергейст в gcc/i586 (#define)
  2016-07-03 16:11 ` Hihin Ruslan
@ 2016-07-03 16:39   ` Sergey Y. Afonin
  2016-07-03 17:34     ` Hihin Ruslan
  0 siblings, 1 reply; 9+ messages in thread
From: Sergey Y. Afonin @ 2016-07-03 16:39 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Sunday 03 July 2016, Hihin Ruslan wrote:

> > Каким образом может обнуляться значение, заданное через
> > #define ? Ситуация одна и та же в p7 (gcc 4.7.2) и p8 (gcc
> > 5.3.1). Правда, это ситуация конца мая, месяц к этому вопросу
> > не возвращался.
> 
> Ну, вообще-то 2,109,847 больше 102,400
 
Это не имеет абсолютно никакого значения. Дело не в этом. В лог
выводятся три значения: filename, bufsz, MAXCHECK. И вот на метсе
MAXCHECK выводится ноль, хотя должно быть 102400.

> но я-бы код проверил с помощью cppcheck.

Ну так компилятор бы ругнулся на что-то неправильное. И на x86_64
работает, как надо.

-- 
С уважением, Сергей Афонин


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Полтергейст в gcc/i586 (#define)
  2016-07-03 16:39   ` [devel] Полтергейст в gcc/i586 (#define) Sergey Y. Afonin
@ 2016-07-03 17:34     ` Hihin Ruslan
  0 siblings, 0 replies; 9+ messages in thread
From: Hihin Ruslan @ 2016-07-03 17:34 UTC (permalink / raw)
  To: devel

[-- Attachment #1: Type: text/plain, Size: 499 bytes --]

Здравствуйте Sergey Y. Afonin
  В сообщении от 3 июля 2016 Sergey Y. Afonin написал(a):
> Ну так компилятор бы ругнулся на что-то неправильное. И на
> x86_64 работает, как надо.

Совершенно не обязательно. Всякие переполнения могут быть и не 
пойманы компилятором.

-- 
***
  А ещё говорят так  (fortune):
 
If God had meant for us to be in the Army, we would have been 
born with green, baggy skin. 
________________________________________________________________________
С уважением Хихин Руслан

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Полтергейст в gcc/i586 (#define)
  2016-07-03 15:51 [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=) Sergey Y. Afonin
  2016-07-03 16:11 ` Hihin Ruslan
@ 2016-07-04 13:21 ` Sergey Afonin
  2016-07-04 13:54 ` [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=) Ivan A. Melnikov
  2 siblings, 0 replies; 9+ messages in thread
From: Sergey Afonin @ 2016-07-04 13:21 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Sunday 03 July 2016, Sergey Y. Afonin wrote:

> errprintf("logfetch: %s delta %zu bytes exceeds max buffer size %zu; skipping some data\n", filename, bufsz, MAXCHECK);
 
Совсем интересно. Как будто где-то живёт четвёртый параметр, и он ноль.
Точнее, третий. Вот так работает:

errprintf("logfetch: %s delta %zu bytes exceeds max buffer size %zu,%zu; skipping some data\n", filename, bufsz, MAXCHECK);

То есть, в третьей позиции всё тот же ноль, а в четвёртой - правильное
значение MAXCHECK. Дело не #define, а в чём-то ещё.

-- 
С уважением, Сергей Афонин.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=)
  2016-07-03 15:51 [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=) Sergey Y. Afonin
  2016-07-03 16:11 ` Hihin Ruslan
  2016-07-04 13:21 ` Sergey Afonin
@ 2016-07-04 13:54 ` Ivan A. Melnikov
  2016-07-04 14:04   ` [devel] Полтергейст в gcc/i586 Sergey Afonin
  2 siblings, 1 reply; 9+ messages in thread
From: Ivan A. Melnikov @ 2016-07-04 13:54 UTC (permalink / raw)
  To: ALT Linux Team development discussions

2016-07-03 18:51 GMT+03:00 Sergey Y. Afonin <asy@altlinux.ru>:
> #define MAXCHECK   102400   /* When starting, don't look at more than 100 KB of data */
> ...
> errprintf("logfetch: %s delta %zu bytes exceeds max buffer size %zu; skipping some data\n", filename, bufsz, MAXCHECK);


%zu -- это size_t, errprintf ожидает 32 бита в вашем случае. Какой тип
переменной у bufsz? Уж не 64-битный ли?

-- 
WBR,
Ivan A. Melnikov

^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Полтергейст в gcc/i586
  2016-07-04 13:54 ` [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=) Ivan A. Melnikov
@ 2016-07-04 14:04   ` Sergey Afonin
  2016-07-04 14:09     ` Sergey Afonin
  0 siblings, 1 reply; 9+ messages in thread
From: Sergey Afonin @ 2016-07-04 14:04 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Monday 04 July 2016, Ivan A. Melnikov wrote:

> > #define MAXCHECK   102400   /* When starting, don't look at more than 100 KB of data */
> > ...
> > errprintf("logfetch: %s delta %zu bytes exceeds max buffer size %zu; skipping some data\n", filename, bufsz, MAXCHECK);

> %zu -- это size_t, errprintf ожидает 32 бита в вашем случае. Какой тип
> переменной у bufsz? Уж не 64-битный ли?

off_t, кстати. Уже подумал об этом, как раз посмотрю сейчас, что получится,
если заменить на size_t. Почти собралось.

-- 
С уважением, Сергей Афонин.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Полтергейст в gcc/i586
  2016-07-04 14:04   ` [devel] Полтергейст в gcc/i586 Sergey Afonin
@ 2016-07-04 14:09     ` Sergey Afonin
  2016-07-05  6:48       ` Ivan A. Melnikov
  0 siblings, 1 reply; 9+ messages in thread
From: Sergey Afonin @ 2016-07-04 14:09 UTC (permalink / raw)
  To: ALT Linux Team development discussions

On Monday 04 July 2016, Sergey Afonin wrote:

> > %zu -- это size_t, errprintf ожидает 32 бита в вашем случае. Какой тип
> > переменной у bufsz? Уж не 64-битный ли?
> 
> off_t, кстати. Уже подумал об этом, как раз посмотрю сейчас, что получится,
> если заменить на size_t. Почти собралось.
 
Да, работает правильно, если сделать size_t bufsz вместо off_t. Но, вроде
как, есть off64_t же ? Хотя фиг с ним, дальше пусть апстрим разбирается.
Спасибо.

-- 
С уважением, Сергей Афонин.


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [devel] Полтергейст в gcc/i586
  2016-07-04 14:09     ` Sergey Afonin
@ 2016-07-05  6:48       ` Ivan A. Melnikov
  0 siblings, 0 replies; 9+ messages in thread
From: Ivan A. Melnikov @ 2016-07-05  6:48 UTC (permalink / raw)
  To: ALT Linux Team development discussions

2016-07-04 17:09 GMT+03:00 Sergey Afonin <asy@altlinux.ru>:
> Да, работает правильно, если сделать size_t bufsz вместо off_t. Но, вроде
> как, есть off64_t же ? Хотя фиг с ним, дальше пусть апстрим разбирается.
> Спасибо.

off_t и off64_t -- синонимы если определён макрос __USE_FILE_OFFSET64.
У нас это так, и это очень правильно в современном мире. Проблемный
код мог быть написан в системе, где этот макрос не определён, и тогда
off_t был 32-битен и код работал правильно.

Btw, правильно распечатать off_t printf-подобными функциями это то ещё
веселье. В C99 рекомендуют что-то вроде

  printf("%jd\n", (intmax_t)bufsz);

Для застрявших на C89 жизнь ещё печальнее.

-- 
WBR,
Ivan A. Melnikov

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2016-07-05  6:48 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-07-03 15:51 [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=) Sergey Y. Afonin
2016-07-03 16:11 ` Hihin Ruslan
2016-07-03 16:39   ` [devel] Полтергейст в gcc/i586 (#define) Sergey Y. Afonin
2016-07-03 17:34     ` Hihin Ruslan
2016-07-04 13:21 ` Sergey Afonin
2016-07-04 13:54 ` [devel] Полтергейст в gcc/i586 (#define для =?utf-8?b?INC60L7QvdGB0YLQsNC90YLRiw==?=) Ivan A. Melnikov
2016-07-04 14:04   ` [devel] Полтергейст в gcc/i586 Sergey Afonin
2016-07-04 14:09     ` Sergey Afonin
2016-07-05  6:48       ` Ivan A. Melnikov

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git