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 в > > - тогда это бы влияло только на файлы, которые были > > скомпилированы с #include . > Самое смешное, что теперь так и есть ;) Ну вот и прекрасно - видимо, на это уже кто-то наступил.