[devel] Re: middleman vs pcre

Sergey Vlasov =?iso-8859-1?q?vsu_=CE=C1_altlinux=2Eru?=
Ср Ноя 12 12:49:42 MSK 2003


On Wed, Nov 12, 2003 at 12:45:49PM +0300, Stanislav Ievlev wrote:
> On Wed, Nov 12, 2003 at 12:24:20PM +0300, Sergey Vlasov wrote:
> > On Wed, Nov 12, 2003 at 11:32:49AM +0300, Stanislav Ievlev wrote:
> > > On Tue, Nov 11, 2003 at 06:47:50PM +0300, Sergey Vlasov wrote:
> > > > On Tue, Nov 11, 2003 at 08:36:26PM +0500, Andrey Rahmatullin wrote:
> > > > Content-Description: signed data
> > > > > В сообщении от 11 Ноябрь 2003 19:38 Sergey Vlasov написал(a):
> > > > > 
> > > > > [...]
> > > > > > Попробуйте запустить программу под valgrind - он умеет отлавливать
> > > > > > подобные ошибки
> > > > > [...]
> > > > > 
> > > > > Ой блин...
> > > > > 
> > > > > ==16664== Invalid write of size 4
> > > > > ==16664==    at 0x403261F9: regcomp (in /lib/libc-2.2.6.so)
> > > > > ==16664==    by 0x806F536: reg_compile (regexp.c:33)
> > > > > ==16664==    by 0x804C4E4: global_general_insert (global.c:464)
> > > > > ==16664==    by 0x804ACE6: global_load (global.c:102)
> > > > > ==16664==    Address 0x412BE104 is 4 bytes after a block of size 12 alloc'd
> > > > > ==16664==    at 0x40026942: malloc (vg_replace_malloc.c:153)
> > > > > ==16664==    by 0x806610C: xmalloc (mem.c:35)
> > > > > ==16664==    by 0x806F51F: reg_compile (regexp.c:31)
> > > > > ==16664==    by 0x804C4E4: global_general_insert (global.c:464)
> > > > > 
> > > > > И так кучу раз (похоже, что на каждый регэксп).
> > > > 
> > > > Вот бардак... У этой дряни что, собственное левое определение regex_t
> > > > (такая гадость иногда встречается)?
> > > Если это намёк на pcre, то почему сразу дрянь. Имеет право.
> > > Всё что связано с regex это weekalias (как просвятил меня Дима). У
> > > pcre же есть очень удобный POSIX интерфейс с поддержкой расширений
> > > perl. А уж если POSIX интерфейс, то и есть regex_t. Было бы
> > > удивительно если бы она (pcre) использовала glibc'шный.
> > 
> > Ну здесь-то явно используется regcomp из glibc.  Т.е. где-то
> > перепутались заголовки и библиотеки.
> Наверное забыли -lpcreposix?

Похоже на то.

> > Против самой pcre я не выступаю.  А вот pcreposix - это гадость, т.к.
> > вполне может сломать работу POSIX regexp в других библиотеках (не
> > glibc).  
> Не поломает, если будут использовать что-то одно ;)

Поломает - если другая libxxx.so была скомпилирована с regex из glibc,
а получит реализацию из libpcreposix.so.

> >Следовало бы делать эту эмуляцию не прямым переопределением
> > regcomp/regexec/..., а через #define regcomp __pcre_regcomp в
> > <pcreposix.h> - тогда это бы влияло только на файлы, которые были
> > скомпилированы с #include <pcreposix.h>.
> Самое смешное, что теперь так и есть ;)

Ну вот и прекрасно - видимо, на это уже кто-то наступил.
----------- следующая часть -----------
Было удалено вложение не в текстовом формате...
Имя     : =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Тип     : application/pgp-signature
Размер  : 189 байтов
Описание: =?iso-8859-1?q?=CF=D4=D3=D5=D4=D3=D4=D7=D5=C5=D4?=
Url     : <http://lists.altlinux.org/pipermail/devel/attachments/20031112/80ea4613/attachment-0001.bin>


Подробная информация о списке рассылки Devel