On Wed, Jul 15, 2009 at 09:39:03AM +0300, Michael Shigorin wrote: > On Mon, Jul 13, 2009 at 11:34:50PM +0400, Dmitry V. Levin wrote: > > > > *** buffer overflow detected ***: /usr/src/RPM/BUILD/openmotif-2.3.2/clients/uil/.libs/lt-uil terminated > > > Это ещё что такое? > > Это > > *** buffer overflow detected ***: /usr/src/RPM/BUILD/openmotif-2.3.2/clients/uil/.libs/lt-uil terminated > > Ааа, вот как. > > > > > ======= Backtrace: ========= > > > > /lib/libc.so.6(__fortify_fail+0x40)[0x40412f30] > > > > /lib/libc.so.6[0x40411180] > > > > /lib/libc.so.6(__strcpy_chk+0x44)[0x404104f4] > > > > /usr/src/RPM/BUILD/openmotif-2.3.2/lib/Mrm/.libs/libMrm.so.4(UrmCWR__AppendResource+0x18a)[0x40038a3a] > > gcc кое-что нашёл, я об этом сегодня уже рассказывал. > > Вообще сперва по lt- подумал, что это что-то libtool'ное и > следовательно -- вероятнее предположить системный характер > проблемы. > > > В сборке openmotif предупреждений компилятора такое большое > > множество, что найти причину с первого взгляда мне не удалось. > > Вот только почему раньше-то оно не сегфолтилось? Потому что раньше в gcc была ошибка, и он мог не обнаружить переполнение в builtin inline function. В openmotif та же самая ерунда, что и в gnupg: структура, в конце которой помещён union, одним из членов которого является char-массив из одного элемента; эта структура размещается динамически, причём объём выделяемой памяти должен превышать размер структуры примерно на фактическую длину массива в каждом конкретном случае. В отличие от gnupg, стуктура RGMResourceDesc, о которой идёт речь, определена в файле Mrm.h и является частью API, так что при её изменении следует соблюдать известную осторожность. -- ldv