
Deadlock: frog vs. snake
Photo: David Maitland / National Geographic
Continuing the discussion about the embedded community moving to muticore/hetrogeneous hardware from watch out here comes multicore, embedded software development teams have historically been shielded from mulitcore issues. This is due to the specialized functionality of many embedded application classes and the inherent serialized nature of the C language.[1]
Muticore is an ambiguous term for software developers and one they don’t really use; software developers think in terms of threads/processes and concurrency, not how many cores or processors are available on the target. Concurrency is not a new topic either as Mark Smotherman captured in a history of multithreading, it has been a subject in computer science since its early beginnings in the 1950s.
What has changed is the rapidly increasing use of multicore technologies for embedded devices. One of the prominent software challenges that moving to multicore execution exposes is latent deadlocking bugs as true parallel execution comes into play, instead of a single core’s task scheduling/context switching techniques.
As an example, consider the following code snippet, which has been paraphrased from a deadlock discovered in a real-world open source multithreaded project.
Can you spot the deadlock?
lock_t lock1, lock2;
int refCount = 0;
void enter() {
reserve_lock(lock1);
if( refCount == 0 )
reserve_lock(lock2);
release_lock(lock1);
refCount++;
}
void leave() {
reserve_lock(lock1);
refCount--;
if( refCount == 0 )
release_lock(lock2);
release_lock(lock1);
}
To see the answer and understand the conditions that lead to the deadlock, download Klocwork’s whitepaper on Developing software for multicore.
A little about the picture in this post. I found it when searching for pictures of deadlocks. The photographer, David Maitland, titled his image “Deadlock” and describes it as a continuing struggle between a Morelet’s tree frog and cat-eyed snake. After three hours in the high-stakes cage match, Maitland said there was no clear winner.
VDC Research, “Next Generation Embedded Hardware Architectures: Driving Onset of Project Delays, Costs Overruns, and Software Development Challenges”, September 2010.
Marketing is shifting, becoming more analytical and its results should have a direct impact on the bottom line. Originally from the software development side of high-tech, I have landed in marketing via product management. In general, I’m interested in conversations about software development methodologies, website measurement and analytics and marketing automation as well as general topics like marketing and mobile technologies. 
Eric,
Two things I have to say about this example:
1. I’d fire the programmer who did such a mistake in his code. But then again – it can easily could have been me :-)
2. It’s great that static analysis tools can find this f&@k-ups that programmers do when they are too caffeinated and sleepless.
Tsahi