AddressSanitizer / LeakSanitizer Ошибка с -lsupc ++ и -stdlib = libc ++ в никогда не вызываемой виртуальной функции, которая пишет в поток

Следующий код бросает Ошибка AddressSanitizer при компиляции на Debian Jessie clang 3.5.

Похоже, что это связано с комбинацией связанных библиотек, но я не смог найти что-то подобное в Интернете.

Воспроизведение ошибки

Призвание: clang++ -stdlib=libc++ -lc++abi -fsanitize=address,vptr sample.cpp -lsupc++ -o sample

//sample.cpp
#include <iostream>

class Foo {
virtual void bar() {
std::cerr << std::endl;
}
public:
virtual ~Foo() { }
};

int main() {
Foo foo;
try{
throw 1;
} catch(int i) {
return i;
}
return -1;
}

При пропуске флага компиляции -lc++abi, Ошибка выполнения LeakSanitizer происходит вместо

Опуская любой из других флагов компиляции, Нет ошибок происходит.

Что вызывает ошибку? Что-то не так с моим кодом или это недопустимая комбинация флагов компиляции, и если да, то что вызывает конфликт?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector