[devel] Re: middleman vs pcre

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


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.  Т.е. где-то
перепутались заголовки и библиотеки.

Против самой pcre я не выступаю.  А вот pcreposix - это гадость, т.к.
вполне может сломать работу POSIX regexp в других библиотеках (не
glibc).  Следовало бы делать эту эмуляцию не прямым переопределением
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/0b366738/attachment-0001.bin>


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