Community
Participate
Working Groups
The static sync lock in org.eclipse.ptp.rdt.sync.git.core.GitServiceProvider serializes synchronization calls. It is also being used in a non-static way to serialize changes to instance variables. This dual use increases the chances of deadlock. Specifically, in the new file filtering code (Bug 369284), deadlock occurs whenever a new configuration is created. One thread is sync'ing while another thread is creating the new configuration. Both threads need access to the sync lock and to the BuildConfigurationManager data structures. (The new code filters remote binary files, and so needs additional information to access the remote files.) This can be fixed by adding a non-static lock for updating instance variables and only using the sync lock for synchronization.
Fix submitted to master and ptp_5_0