1
Я пытаюсь получить простую программу, запущенную на Ubuntu 12.04 x64, скомпилированную с clang ++ 3.3 libC++ libC++ abi.std :: cerr on linux с clang ++ и libC++ вызывает SIGABRT
Программа:
#include <iostream>
int main(int argc, char **argv) {
try {
std::cerr << "Test cerr \n";
} catch (...) {
std::cout << "catch exception";
}
return 0;
}
Запись в StD :: сегг выводит сообщение, но результаты в SIGABRT.
Однако запись в std :: cout прекрасна.
Здесь LDD выход исполняемого файла:
$ldd cerr_test
linux-vdso.so.1 => (0x00007fffce5ff000)
libc++abi.so.1 => /usr/local/lib/libc++abi.so.1 (0x00007fa4079fd000)
libc++.so.1 => /usr/local/lib/libc++.so.1 (0x00007fa407759000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa40745c000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fa407246000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa406e87000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fa406c69000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fa406a61000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa407c55000)
Может кто-нибудь дать мне подсказку, как это исправить?
Вот трассировка:
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Test cerr
Program received signal SIGABRT, Aborted.
0x00007ffff704e425 in raise() from /lib/x86_64-linux-gnu/libc.so.6
(gdb) backtrace
#0 0x00007ffff704e425 in raise() from /lib/x86_64-linux-gnu/libc.so.6
#1 0x00007ffff7051b8b in abort() from /lib/x86_64-linux-gnu/libc.so.6
#2 0x00007ffff792a437 in std::uncaught_exception()() from /usr/local/lib/libc++.so.1
#3 0x00007ffff79324e2 in std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()()
from /usr/local/lib/libc++.so.1
#4 0x000000000040118e in std::__1::operator<< <std::__1::char_traits<char> > (__os=..., __str=0x401784 "Test cerr \n")
at /usr/local/include/c++/v1/ostream:990
#5 0x0000000000400d41 in main (argc=1, argv=0x7fffffffe728) at cerr_test.cpp:5
(gdb)
может скомпилировать с отладочной и после аварии StackTrace? – bobah
уверен. просто добавил backtrace к сообщению –
В моей Linux-системе (32-бит gcc 4.7 и clang 3.2) он отлично работает. Какие варианты компиляции вы используете? – Claudio