It doesn't need to lock anything and it shouldn't. But I'll double check, I've missed something perhaps. Thanks for letting me know!
In the latest build I explicitly use fmOpenRead when reading .pas files. I can't prove if it helps, it it may. Please give it a try.
Thanks for the Info. I think you have to specify fmOpenRead or fmShareDenyWrite.
fmOpenRead alone doesn't seem to be enough as I said in the example above.
I fear that the concurrency problem still exists, but now it manifests itself in a different way. I let a build run on our server with 10 dcc32 and 10 FixInsightCL tasks in parallel.
The first one failed on one project with lots of "Fatal parser error" messages in line 1 col 1 for 10-12 different .pas files.
<message line="1" col="1" id="FATAL">Fatal parser error</message>
I triggered a few more builds: Same failure but with a different .dpr and different .pas files this time.
The interesting thing is that with 2016.09 and 2017.11 I only had intermittent "Exception EInOutError in module FixInsight.Services.dll at 000B3B7C" failures. With 2019.01upd I now have 100% failures in the parallel analysis step.
Currently I run all FixInsight and all dcc32 tasks in parallel (10+10 at the same time). Before I tried to optimize the parallel builds I ran only two parallel tasks. One for dcc32 which built 10 applications and one for FixInsight which ran the analysis on the same 10 applications.
Since FixInsight is the most time consuming step of our build, I really want to cut down the time.
I'll now try two things:
1. run all FixInsight steps sequential, but in parallel to dcc32. This will probably tell me, if FixInsight interferes with dcc32.
2. run all FixInsight steps parallel but in sequence to all parallel dcc32 steps. So FixInsight and dcc32 should not interfere with each other.
I have to mention that FixInsight 2019.01upd1 is not installed "properly" on the build server. The installed version is still 2016.09 and FixInsight2019.01 is run from a folder which contains just the .exe and .dll files.
Everything runs fine locally with 2019.01upd1 installed, but there are no parallel tasks. Maybe I write a script that fires 10xCreateprocess or so.
Fun fact: several instances of dcc seem to have no problem running in parallel
Finally I was able to reproduce that. Seems like fmShareDenyWrite was missing at one place. I'll upload an update tomorrow.
Please try the update http://sourceoddity.com/download/FixInsight_2019.01upd1_setup.exe
Hopefully the issue is fixed...