mirror of
git://sourceware.org/git/libabigail.git
synced 2025-01-10 03:09:29 +00:00
The Git repository of the Libabigail Project
c022243aac
It can happen that queue::priv_::do_bring_workers_down stays forever waiting for a task to finish (via pthread_join). The it waits for is itself blocked in worker::wait_to_execute_a_task, in pthread_cond_wait. It seems to me that this is because we forget to lock the queue::priv::queue_cond_mutex before inspecting and updating the variables on which the wait on the condition depend. This patch fixes that. The patch also moves tests/test-read-write.cc over to using the work queue to increase test coverage for the work queue interface. * src/abg-workers.cc (queue::priv::tasks_todo_mutex): Make this data member mutable. (more_tasks_to_execute): (queue::priv::do_bring_workers_down): Update the queue::priv::bring_workers_down only in the critical section defined by queue::priv::queue_cond_mutex. (worker::wait_to_execute_a_task): Testing for queue::priv::bring_workers_down is done in the critical section defined by queue::priv::queue_cond_mutex. The loop over waiting ont the condition is also in the critical section, as it ought to be. * tests/test-read-write.cc (struct test_task): New type. (main): Express in terms of the new test_task type. Signed-off-by: Dodji Seketeli <dodji@redhat.com> |
||
---|---|---|
autoconf-archive | ||
bash-completion | ||
doc | ||
include | ||
m4 | ||
scripts | ||
src | ||
tests | ||
tools | ||
.gitignore | ||
abigail.m4 | ||
AUTHORS | ||
ChangeLog | ||
COMMIT-LOG-GUIDELINES | ||
COMPILING | ||
configure.ac | ||
CONTRIBUTING | ||
COPYING | ||
COPYING-GPLV3 | ||
COPYING-LGPLV2 | ||
COPYING-LGPLV3 | ||
default.abignore | ||
gen-changelog.py | ||
install-sh | ||
libabigail.pc.in | ||
ltmain.sh | ||
Makefile.am | ||
NEWS | ||
README | ||
release-text-template.txt | ||
VISIBILITY |
This is the Application Binary Interface Generic Analysis and Instrumentation Library. It aims at constructing, manipulating, serializing and de-serializing ABI-relevant artifacts. The set of artifacts that we are intersted is made of quantities like types, variable, fonctions and declarations of a given library or program. For a given library or program this set of quantities is called an ABI corpus. This library aims at (among other things) providing a way to compare two ABI Corpora (apparently the plural of corpus is copora, heh, that's cool), provide detailed information about their differences, and help build tools to infer interesting conclusions about these differences. You are welcome to contribute to this project after reading the files CONTRIBUTING and COMMIT-LOG-GUIDELINES files in the source tree. Communicating with the maintainers of this project -- including sending patches to be include to the source code -- happens via email at libabigail@sourceware.org.