Serge Beauchamp (Freescale Semiconductor )
Making at Eclipse · Standard
Thursday, 13:30, 20 minutes | Stevens Creek
Multi-threaded programming has always been a hard domain to master.
Even by carefully designing programs where data access is protected by synchronization primitives, when systems grow in complexity and modules, it becomes impossible to effectively manage the ever more complex web of locks to avoid the unpredictable and dreaded deadlocks.
Most programs then resort to simply reducing concurrency of the system, limiting parallelism to few restricted and well defined operations and modules, leading to sub-optimal performance and usability.
In order to help the Eclipse community solve this problem, Freescale is releasing an open source tool, the deadlock preventer, which allows to detect dynamically the potential deadlocks present in a java program deterministically without depending on unpredictable race-conditions.
By using the deadlock preventer, both as a development tool and as integrated as part of a release engineering process, a software can eventually be guaranteed before release not to contain any undiscovered deadlocks that would otherwise reveal themselves unpredictably to the users.
Without this tool, developers are reduced to being blindfolded, fixing deadlocking issues when they arise, based on unpredictable race conditions. Worse, developers can't ensure that a code change to fix a deadlock will not introduce another deadlock in a different code path.
In this talk, we will look in depth on how can the deadlock preventer can be used to find potential and existing deadlocks in java programs using java synchronized blocks, java 1.5 concurrent API and Eclipse lock/Jobs API, including the Eclipse Platform and Eclipse plugins.
Udpate: screencast of the talk:
Serge Beauchamp is Senior Software Engineer at Freescale Semiconductor. He has been developing C/C++ IDE since 2000 where he joined the IDE team at Metrowerks to work on their CodeWarrior tools. He is an Eclipse Platform committer, and has worked on the 3.6 flexible resource features.