3,686 research outputs found
Sound Static Deadlock Analysis for C/Pthreads (Extended Version)
We present a static deadlock analysis approach for C/pthreads. The design of
our method has been guided by the requirement to analyse real-world code. Our
approach is sound (i.e., misses no deadlocks) for programs that have defined
behaviour according to the C standard, and precise enough to prove
deadlock-freedom for a large number of programs. The method consists of a
pipeline of several analyses that build on a new context- and thread-sensitive
abstract interpretation framework. We further present a lightweight dependency
analysis to identify statements relevant to deadlock analysis and thus speed up
the overall analysis. In our experimental evaluation, we succeeded to prove
deadlock-freedom for 262 programs from the Debian GNU/Linux distribution with
in total 2.6 MLOC in less than 11 hours
Maintenance of Strongly Connected Component in Shared-memory Graph
In this paper, we present an on-line fully dynamic algorithm for maintaining
strongly connected component of a directed graph in a shared memory
architecture. The edges and vertices are added or deleted concurrently by fixed
number of threads. To the best of our knowledge, this is the first work to
propose using linearizable concurrent directed graph and is build using both
ordered and unordered list-based set. We provide an empirical comparison
against sequential and coarse-grained. The results show our algorithm's
throughput is increased between 3 to 6x depending on different workload
distributions and applications. We believe that there are huge applications in
the on-line graph. Finally, we show how the algorithm can be extended to
community detection in on-line graph.Comment: 29 pages, 4 figures, Accepted in the Conference NETYS-201
Deadlock detection of Java Bytecode
This paper presents a technique for deadlock detection of Java programs. The
technique uses typing rules for extracting infinite-state abstract models of
the dependencies among the components of the Java intermediate language -- the
Java bytecode. Models are subsequently analysed by means of an extension of a
solver that we have defined for detecting deadlocks in process calculi. Our
technique is complemented by a prototype verifier that also covers most of the
Java features.Comment: Pre-proceedings paper presented at the 27th International Symposium
on Logic-Based Program Synthesis and Transformation (LOPSTR 2017), Namur,
Belgium, 10-12 October 2017 (arXiv:1708.07854
- …