Описание тега thread-sanitizer

ThreadSanitizer (TSan) - это детектор гонки данных для программ C/C++.
1 ответ

Запись-запись данных из std::set insert() и find()?

Чтобы поэкспериментировать с потоком-дезинфицирующим средством, я создал крошечную программу на C++, которая по назначению содержит гонку данных. Действительно, Цан обнаруживает ошибку, отлично! Однако я озадачен сгенерированным сообщением... Он соо…
1 ответ

Инструмент для обнаружения злоупотреблений API POSIX pthreads, но не Helgrind

По какой-то причине я не могу использовать Helgrind для обнаружения злоупотреблений API POSIX pthreads (например, разблокировка неблокированного мьютекса, освобождение памяти, которая содержит заблокированный мьютекс и т. Д.). Я пытался найти другой…
1 ответ

Гонка данных в источнике таймера отправки

ThreadSanitizer обнаруживает гонку данных в следующей программе Swift macOS: import Dispatch class Foo<T> { var value: T? let queue = DispatchQueue(label: "Foo syncQueue") init(){} func complete(value: T) { queue.sync { self.value = value } } …
0 ответов

Как встроить Джулию в C++ cmake-приложение, созданное с помощью gcc

Я делаю библиотеку для исполняемого приложения C++ cmake. В этой библиотеке я хочу иметь возможность вызывать функции julia, как показано в этом примере. Для этого я скачал бинарные файлы Julia Linux, которые включают в себя исполняемое приложение, …
1 ответ

Дезинфицирующее средство потока Gcc ложно положительно только для флага отладочной информации

У меня возникла проблема с средством очистки потоков Gcc, которое я не могу найти в их bugzilla или в stackru, поэтому я не уверен, что я что-то упустил или это действительно ошибка. Если я создаю файл main.cpp, содержащий: #include <thread> i…
25 фев '15 в 13:06
0 ответов

Средство очистки потока сообщает о гонке данных при использовании std::packaged_task/std::exception_ptr

Я испытываю некоторые проблемы с обработчиком потоков (TSan), жалуясь на гонку данных в некотором производственном коде, где std::packaged_task передается потоку диспетчера, помещая их в std:: function. Для этого вопроса я упростил то, что он делает…
1 ответ

ThreadSanitizer печатает только 2 кадра

По какой-то причине стеки вызовов, создаваемые ThreadSanitizer в моем журнале, всегда ровно в два кадра (#0, #1). Есть ли скрытая настройка, ограничивающая количество кадров? С уважением
23 июл '18 в 19:09
2 ответа

ThreadSanitizer сообщает "гонка данных при удалении оператора (void*)" при использовании встроенного счетчика ссылок

Пожалуйста, посмотрите на следующий код: #include <pthread.h> #include <boost/atomic.hpp> class ReferenceCounted { public: ReferenceCounted() : ref_count_(1) {} void reserve() { ref_count_.fetch_add(1, boost::memory_order_relaxed); } voi…
3 ответа

C++11 (санация потока g++) Упорядочивание неатомарных операций с атомами (ложное срабатывание?)

Я экспериментирую с g ++ и обработчиком потоков и думаю, что получаю ложные срабатывания. Это правда или я совершаю большую ошибку? Программа (вырезано и вставлено Энтони Уильямсом: параллелизм C++ в действии, стр. 145, листинг 5.13) #include <at…
15 авг '16 в 09:43
1 ответ

GCC 4.9.1 ThreadSanitizer "Как будто синхронизируется через сон"

Я работаю над очисткой предупреждений ThreadSanitizer в крупном проекте. В частности, в этом конкретном случае существует порожденная нить, которая читает файл, производитель. Затем есть один или несколько декомпрессионных потоков как часть пула пот…
31 июл '14 в 20:51
1 ответ

Как избежать гонки данных с GCD DispatchWorkItem.notify?

В Swift 3.1 на XCode 8.3 при запуске следующего кода с Thread Sanitizer обнаруживается гонка данных (см. Комментарии "запись и чтение" в коде): private func incrementAsync() { let item = DispatchWorkItem { [weak self] in guard let strongSelf = self …
1 ответ

Сбой процесса XPC в старых macOS из-за отсутствия дезинфицирующих средств

Когда я беру Debug Build своего приложения MacOS, встроенного в Xcode 9.1, и перемещаю его на Mac с MacOS 10.11 или 10.12 для тестирования, я обнаруживаю, что процесс XPC моего приложения аварийно завершает работу при загрузке, и в отчете о сбое ука…
1 ответ

ThreadSanitizer (tsan) - значимая информация из общей библиотеки

Мое приложение использовало библиотеку wxWidgets, созданную из исходного кода через gcc 5.1.0, с использованием -g и -O0. Я скомпилировал свое приложение, используя clang++36 -g -fsanitize=thread -stdlib=libC++, и связал его, используя clang++36 -g …
0 ответов

iOS - использовать Thread Sanitizer в PacketTunnelProvider?

Я хотел бы использовать Thread Sanitizer для отладки потоков в моем проекте, однако большая часть моего кода выполняется в моем PacketTunnelProvider. Проблема заключается в том, что Thread Sanitizer доступен только при запуске на симуляторе, а библи…
1 ответ

Дезинфицирующее средство заставляет приложение постоянно зависать?

Всякий раз, когда я запускаю приложение с включенным дезинфицирующим средством, оно просто зависает. Когда я приостанавливаю выполнение, я всегда вижу какой-то вызов функции tsan, на котором основной поток полностью застрял. Как я могу предотвратить…
05 май '17 в 00:42
1 ответ

Ошибка теневой памяти и fPie при запуске кода с помощью средства очистки потока?

Следующий пример кода скомпилирован с последующим вводом командной строки #include <pthread.h> #include <stdio.h> #include <string> #include <map> typedef std::map<std::string, std::string> map_t; void *threadfunc(void …
27 авг '18 в 14:29
1 ответ

Как я могу подавить предупреждения Thread Sanitizer в Xcode из внешней библиотеки?

Xcode 8 включает Thread Sanitizer, инструмент для определения условий гонки и других проблем, связанных с многопоточностью. Я пытаюсь запустить это против моего проекта и обнаруживаю много проблем со сторонней двоичной библиотекой. Эти проблемы прео…
07 июл '16 в 17:07
1 ответ

Отсутствует libclang_rt.tsan-x86_64.a в clang-7.0

Я пытаюсь найти тупик в многопоточном коде, который использует переменную условия. Кто-то посоветовал использовать дезинфицирующее средство для нитей. Поэтому я скомпилировал LLVM из исходного кода и включил средство для очистки потоков LLVM собран …
10 окт '18 в 14:55
0 ответов

Захват локального объекта в лямбде по ссылке может вызвать гонку данных или нет?

У меня есть некоторый кусок кода, который вызывает ошибку при запуске с Thread Sanitizer на: bool Renderer::render(std::optional<int32_t> cancellationToken) { const RenderWatcher renderWatcher{cancellationToken}; ... return Render(... [&re…
24 фев '18 в 08:39
1 ответ

Clang ThreadSanitizer: разблокировка разблокированного мьютекса, и атомная система создает гонку данных

Я анализирую потоки с помощью ThreadSanitizer и получаю предупреждение, которое очень, очень запутывает мое понимание того, как работают мьютексы. Я использую gcc 6.3 на Debian Stretch. В одном классе у меня есть: auto MyPtr = std::make_shared<My…