* [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