Documentation Home
> Sun Studio 12: Thread Analyzer User's Guide
Sun Studio 12: Thread Analyzer User's Guide
Book Information
Index
A
D
T
Preface
Chapter 1 What is the Thread Analyzer and What Does It Do?
1.1 Getting Started With the Thread Analyzer
1.2 What is a Data Race?
1.3 What is a Deadlock?
1.4 The Thread Analyzer Usage Model
Chapter 2 The Data-Race Tutorial
2.1 Tutorial Source Files
2.1.1 Complete Listing of omp_prime.c
2.1.2 Complete Listing of pthr_prime.c
2.1.2.1 Data Races in omp_prime.c and pthr_prime.c
2.2 Creating Experiments
2.2.1 Instrument the Source Code
2.2.2 Create a Data-Race Detection Experiment
2.2.3 Examine the Data-Race Detection Experiment
2.3 Understanding the Experiment Results
2.3.1 Data Races in omp_prime.c
2.3.2 Data Races in pthr_prime.c
2.4 Diagnosing the Cause of a Data Race
2.4.1 Check Whether or Not the Data Race is a False Positive
2.4.2 Check Wether or Not the Data Race is Benign
2.4.3 Fix the Bug, Not the Data Race
2.4.3.1 Fixing Bugs in omp_prime.c
2.4.3.2 Fixing Bugs in pthr_prime.c
2.5 False Positives
2.5.1 User-Defined Synchronizations
2.5.2 Memory That is Recycled by Different Threads
2.6 Benign Data-Races
2.6.1 A Program for Finding Primes
2.6.2 A Program that Verifies Array-Value Types
2.6.3 A Program Using Double-Checked Locking
Chapter 3 The Deadlock Tutorial
3.1 The Dining Philosophers Source File
3.2 The Dining Philosophers Scenario
3.2.1 How the Philosophers Can Deadlock
3.2.2 Introducing a Sleep Time for Philosopher One
3.3 How to Use the Thread Analyzer to Find Deadlocks
3.3.1 Compile the Source Code
3.3.2 Create a Deadlock-Detection Experiment
3.3.3 Examine the Experiment Results
3.3.3.1 The Thread Analyzer Interface
3.3.3.2 The er_print Interface
3.4 Understanding the Experiment Results
3.4.1 Examining Runs That Deadlock
3.4.2 Examining Runs That Complete Despite Deadlock Potential
3.5 Fixing the Deadlocks and Understanding False-Positives
3.5.1 Regulating the Philosophers With Tokens
3.5.1.1 A False-Positive Report
3.5.2 An Alternative System of Tokens
Appendix A Thread Analyzer User API
A.1 The Thread-Analyzer's User-APIs
A.2 Other Recognized APIs
A.2.1 POSIX Thread APIs
A.2.2 Solaris Thread APIs
A.2.3 Memory-Allocation APIs
A.2.4 OpenMP APIs
Appendix B Thread Analyzer Frequently Asked Questions
B.1 FAQ
© 2010, Oracle Corporation and/or its affiliates