ALT Linux Team development discussions
 help / color / mirror / Atom feed
* [devel] glibc 2.3 - argp_parse broken??
@ 2004-05-19 15:31 Victor Forsyuk
  2004-05-19 15:37 ` Dmitry V. Levin
  0 siblings, 1 reply; 4+ messages in thread
From: Victor Forsyuk @ 2004-05-19 15:31 UTC (permalink / raw)
  To: ALT Devel discussion list

Hi,

Или subj, или я чего-то не понимаю. Замечена поломка опции "-o" в ccze
(ccze-0.2.1-alt2). Без указания этой опции программа работает. Например:

> tail -f /var/log/exim/main.log|ccze -A -p exim

Как только указываем что-либо в этой опции, имеем сегфолт:

> tail -f /var/log/exim/main.log|ccze -A -p exim -o nolookups
Segmentation fault

Запуск под отладчиком показал, что сегфолт происходит внутри вызова
argp_parse (строка 749 файла src/ccze.c). На glibc 2.2 всё работало,
поломка замечена после установки glibc 2.3.

Апгрейд glibc до текущей из сизифа (glibc-2.3.3.200405070341-alt1)
проблему не полечил.

Bug, изменения в функции с обратной несовместимостью, проявившаяся
ошибка в программе? Подскажите, кто с argp_parse знаком ближе
(я никогда ее не использовал), у меня разбираться, к сожалению,
практически нет времени.


p.s. Заодно, чтобы не писать отдельного письма - кто знает куда
подевался Виктор Исмакаев? Я написал ему на прошлой неделе -
тишина. Хотел согласовать с ним новую сборку exim. Если не
отыщется, мне придется наверное самому выкладывать в incoming.



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

* Re: [devel] glibc 2.3 - argp_parse broken??
  2004-05-19 15:31 [devel] glibc 2.3 - argp_parse broken?? Victor Forsyuk
@ 2004-05-19 15:37 ` Dmitry V. Levin
  2004-05-19 16:03   ` Victor Forsyuk
  0 siblings, 1 reply; 4+ messages in thread
From: Dmitry V. Levin @ 2004-05-19 15:37 UTC (permalink / raw)
  To: ALT Devel discussion list

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

On Wed, May 19, 2004 at 06:31:05PM +0300, Victor Forsyuk wrote:
> Или subj, или я чего-то не понимаю. Замечена поломка опции "-o" в ccze
> (ccze-0.2.1-alt2). Без указания этой опции программа работает. Например:
> 
> > tail -f /var/log/exim/main.log|ccze -A -p exim
> 
> Как только указываем что-либо в этой опции, имеем сегфолт:
> 
> > tail -f /var/log/exim/main.log|ccze -A -p exim -o nolookups
> Segmentation fault

ccze -A -p exim -o nolookups </dev/null тоже падает.

> Запуск под отладчиком показал, что сегфолт происходит внутри вызова
> argp_parse (строка 749 файла src/ccze.c). На glibc 2.2 всё работало,
> поломка замечена после установки glibc 2.3.
> 
> Апгрейд glibc до текущей из сизифа (glibc-2.3.3.200405070341-alt1)
> проблему не полечил.
> 
> Bug, изменения в функции с обратной несовместимостью, проявившаяся
> ошибка в программе? Подскажите, кто с argp_parse знаком ближе
> (я никогда ее не использовал), у меня разбираться, к сожалению,
> практически нет времени.

Я посмотрю.

> p.s. Заодно, чтобы не писать отдельного письма - кто знает куда
> подевался Виктор Исмакаев? Я написал ему на прошлой неделе -
> тишина. Хотел согласовать с ним новую сборку exim. Если не
> отыщется, мне придется наверное самому выкладывать в incoming.

Он уже давно не отзывается, думаю, что имеет смысл выкладывать, не
дожидаясь.


-- 
ldv

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

* Re: [devel] glibc 2.3 - argp_parse broken??
  2004-05-19 15:37 ` Dmitry V. Levin
@ 2004-05-19 16:03   ` Victor Forsyuk
  2004-05-19 16:42     ` Dmitry V. Levin
  0 siblings, 1 reply; 4+ messages in thread
From: Victor Forsyuk @ 2004-05-19 16:03 UTC (permalink / raw)
  To: ALT Devel discussion list

On Wed, May 19, 2004 at 07:37:52PM +0400, Dmitry V. Levin wrote:
> On Wed, May 19, 2004 at 06:31:05PM +0300, Victor Forsyuk wrote:
> > Или subj, или я чего-то не понимаю. Замечена поломка опции "-o" в ccze
> > (ccze-0.2.1-alt2). Без указания этой опции программа работает. Например:
> > 
> > > tail -f /var/log/exim/main.log|ccze -A -p exim
> > 
> > Как только указываем что-либо в этой опции, имеем сегфолт:
> > 
> > > tail -f /var/log/exim/main.log|ccze -A -p exim -o nolookups
> > Segmentation fault
> 
> ccze -A -p exim -o nolookups </dev/null тоже падает.

Да, я и так проверял. До обработки данных дело вообще не доходит,
сегфолт внутри argp_parse.
 
> > Bug, изменения в функции с обратной несовместимостью, проявившаяся
> > ошибка в программе? Подскажите, кто с argp_parse знаком ближе
> > (я никогда ее не использовал), у меня разбираться, к сожалению,
> > практически нет времени.
> 
> Я посмотрю.

Повесить баг (вроде как bugzilla поднялась уже) или не нужно?
 
> > p.s. Заодно, чтобы не писать отдельного письма - кто знает куда
> > подевался Виктор Исмакаев? Я написал ему на прошлой неделе -
> > тишина. Хотел согласовать с ним новую сборку exim. Если не
> > отыщется, мне придется наверное самому выкладывать в incoming.
> 
> Он уже давно не отзывается, думаю, что имеет смысл выкладывать, не
> дожидаясь.

Ok, так и сделаю.



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

* Re: [devel] glibc 2.3 - argp_parse broken??
  2004-05-19 16:03   ` Victor Forsyuk
@ 2004-05-19 16:42     ` Dmitry V. Levin
  0 siblings, 0 replies; 4+ messages in thread
From: Dmitry V. Levin @ 2004-05-19 16:42 UTC (permalink / raw)
  To: ALT Devel discussion list


[-- Attachment #1.1: Type: text/plain, Size: 1470 bytes --]

On Wed, May 19, 2004 at 07:03:31PM +0300, Victor Forsyuk wrote:
> On Wed, May 19, 2004 at 07:37:52PM +0400, Dmitry V. Levin wrote:
> > On Wed, May 19, 2004 at 06:31:05PM +0300, Victor Forsyuk wrote:
> > > Или subj, или я чего-то не понимаю. Замечена поломка опции "-o" в ccze
> > > (ccze-0.2.1-alt2). Без указания этой опции программа работает. Например:
> > > 
> > > > tail -f /var/log/exim/main.log|ccze -A -p exim
> > > 
> > > Как только указываем что-либо в этой опции, имеем сегфолт:
> > > 
> > > > tail -f /var/log/exim/main.log|ccze -A -p exim -o nolookups
> > > Segmentation fault
> > 
> > ccze -A -p exim -o nolookups </dev/null тоже падает.
> 
> Да, я и так проверял. До обработки данных дело вообще не доходит,
> сегфолт внутри argp_parse.

Нет,
Program received signal SIGSEGV, Segmentation fault.
0x0804a0dd in parse_opt (key=111, arg=0xbffffa07 "nolookups", state=0xbffff7b4) at ccze.c:277

> > > Bug, изменения в функции с обратной несовместимостью, проявившаяся
> > > ошибка в программе? Подскажите, кто с argp_parse знаком ближе
> > > (я никогда ее не использовал), у меня разбираться, к сожалению,
> > > практически нет времени.
> > 
> > Я посмотрю.
> 
> Повесить баг (вроде как bugzilla поднялась уже) или не нужно?

Это фатальная опечатка в программе, плюс необратимое изменение в glibc
от 8 марта этого года, собственно и делающее эту опечатку фатальной.

Патч на ccze и текст изменения прилагаются.


-- 
ldv

[-- Attachment #1.2: ccze-0.2.1-alt-argp.patch --]
[-- Type: text/plain, Size: 923 bytes --]

diff -uprk.orig ccze-0.2.1.orig/src/ccze.c ccze-0.2.1/src/ccze.c
--- ccze-0.2.1.orig/src/ccze.c	2003-05-13 22:09:30 +0400
+++ ccze-0.2.1/src/ccze.c	2004-05-19 20:21:02 +0400
@@ -209,7 +209,7 @@ parse_opt (int key, char *arg, struct ar
 	}
       break;
     case 'a':
-      plugin = strtok (optarg, "=");
+      plugin = strtok (arg, "=");
       value = strtok (NULL, "\n");
       ccze_plugin_argv_set (plugin, value);
       break;
@@ -249,7 +249,7 @@ parse_opt (int key, char *arg, struct ar
       ccze_config.remfac = 1;
       break;
     case 'm':
-      subopts = optarg;
+      subopts = arg;
       while (*subopts != '\0')
 	{
 	  switch (getsubopt (&subopts, m_subopts, &value))
@@ -273,7 +273,7 @@ parse_opt (int key, char *arg, struct ar
 	}
       break;
     case 'o':
-      subopts = optarg;
+      subopts = arg;
       while (*subopts != '\0')
 	{
 	  switch (getsubopt (&subopts, o_subopts, &value))

[-- Attachment #1.3: optarg_change --]
[-- Type: text/plain, Size: 2522 bytes --]

2004-03-08  Marcus Brinkmann  <marcus@gnu.org>

	* posix/getopt.h (_getopt_internal): Move to ...
	* posix/getopt_int.h: ... here.  New file.
	* include/getopt_int.h: New file.
	* include/getopt.h: Remove libc_hidden_proto for getopt_long
	and getopt_long_only.
	* posix/getopt1.c: Include "getopt_int.h".  Remove
	libc_hidden_def for getopt_long and getopt_long_only.
	(_getopt_long_r, _getopt_long_only_r): New functions.
	* posix/getopt.c: Include "getopt_int.h".
	(__getopt_initialized): Variable removed.
	(nextchar, ordering, posixly_correct, first_nonopt, last_nonopt):
	Static variables removed.
	(nonoption_flags_max_len, nonoption_flags_len) [_LIBC &&
	USE_NONOPTION_FLAGS]: Static variables removed.
	(getopt_data): New static variable.
	(SWAP_FLAGS): Use d->__nonoption_flags_len instead
	nonoption_flags_len.
	(exchange): Add new argument D of type struct getopt_data *.
	Replace optind with d->optind, optarg with d->optarg, opterr with
	d->opterr, optopt with d->optopt, nextchar with d->__nextchar,
	first_nonopt with d->__first_nonopt, last_nonopt with
	d->__last_nonopt, d->ordering with d->__ordering,
	d->posixly_correct with d->__posixly_correct (which is now an
	int instead a string, so fix users), nonoption_flags_len
	with d->__nonoption_flags_len, nonoption_flags_max_len with
	d->__nonoption_flags_max_len.
	(_getopt_initialize): Likewise.
	(_getopt_internal): Rename to ...
	(_getopt_internal_r): ... this.  Also add new argument D of type
	struct getopt_data * and use of members of D rather than global or
	static variables as described for exchange() above.  Add new argument
	to invocations of _getopt_initialize and exchange.
	(_getopt_internal): Reimplement in terms of _getopt_internal_r.
	* argp/argp-parse.c: Include <getopt_int.h>.
	[_LIBC]: Do not include <bits/libc-lock.h>.
	[!_LIBC && HAVE_CTHREADS_H]: Do not include <cthreads.h>.
	[!_LIBC] (_argp_hang): Make static.
	(getopt_lock, LOCK_GETOPT, UNLOCK_GETOPT): Remove.
	(_argp_unlock_xxx): Remove.
	(parser_init): Do not use LOCK_GETOPT.
	(parser_finalize): Do not use UNLOCK_GETOPT.
	(struct parser): New member OPT_DATA.
	(parser_init): Initialize parser->opt_data.  Use
	parser->opt_data.opterr instead of opterr.
	(parser_parse_opt): Use parser->opt_data.optarg instead optarg.
	(parser_parse_next): Likewise.  Use parser->opt_data.optind
	instead optind.  Use parser->opt_data.optopt instead of optopt.
	Call _getopt_long_only_r and _getopt_long_r instead of
	getopt_long_only and getopt_long, and pass the extra argument.

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

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

end of thread, other threads:[~2004-05-19 16:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-05-19 15:31 [devel] glibc 2.3 - argp_parse broken?? Victor Forsyuk
2004-05-19 15:37 ` Dmitry V. Levin
2004-05-19 16:03   ` Victor Forsyuk
2004-05-19 16:42     ` Dmitry V. Levin

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