Summary of the conversation on dltk-dev with Alexey Panchenko:
DLTK indexing thread should not execute UI code at all, that's the problem.
Could you check that UI and non-UI code is properly separated?
I can give a look at the sources if you provide the link.
It looks like all the code is contained in the single plugin project.
You'd better split the code into UI and non-UI projects, it's the most reliable way of solving this issue.
Right. If modularized correctly, then it's physically not possible
What happens in this particular case: indexer is in the dltk.core (non-UI) and is started earlier. It tries to read some preferences, which are supposed to be in the core part of your IDE. Unfortunately, there is only one module, which includes UI, so deadlock happens.
There could be other similar cases.