Есть ли способ подавить вывод, который glibc генерирует при повреждении памяти ? Вот что я вижу
make
*** glibc detected *** /home/myname/php/sapi/cli/php: free(): invalid pointer: x0045d67f ***
======= Backtrace: =========
/lib/libc.so.6(+0x6eb41)[0x380b41]
<snip>
======= Memory map: ========
00115000-00116000 r-xp 00000000 00:00 0 [vdso]
001d7000-001ee000 r-xp 00000000 ca:01 540738 /lib/libpthread-2.12.2.so
001ee000-001ef000 r--p 00016000 ca:01 540738 /lib/libpthread-2.12.2.so
001ef000-001f0000 rw-p 00017000 ca:01 540738 /lib/libpthread-2.12.2.so
<snip>
Что касается работы, которую я выполняю, мне наплевать на эту информацию, важно только то, что make не удалась (возвращаемое значение! = 0). Эти сообщения заполняют экран, что делает остальную часть моего вывода нечитаемой. Я пробовал:
make &> /dev/null
{ make ; } &> /dev/null
x=`make 2>&1` &> /dev/null
, но ни один из них не улавливал вывод. Если он не записывается в stderr, черт возьми, откуда он берется? Я бы хотел решение, которое не требует перестройки glibc, если это возможно.
Вот код, который выдает такое сообщение об ошибке, но учтите, что это не имеет ничего общего с кодом, над которым я работаю (исходный код php код). Я просто хочу отключить этот тип вывода с моей консоли.
int main()
{
char* ptr = (char*)malloc(sizeof("test"));
char array[]= "test";
ptr = array;
free(ptr);
return 0;
}