Hi,
I'm working for Oracle on the OpenJDK build team. We're using GNU make
exclusively to build the JDK on all supported platforms. For Windows, we
(typically) use the Cygwin version.
We have had a long-standing issue with make losing jobserver tokens on
Windows. Most runs end with something like:
make[2]: INTERNAL: Exiting with 11 jobserver tokens available; should be 12!
Since the build still succeeds, and it just affects performance (and
typically not that much), we have not spend too much time getting to the
bottom of this.
Now, however, I've come across a machine where this happens repeatedly,
and on a much worse scale:
make[2]: INTERNAL: Exiting with 1 jobserver tokens available; should be 24!
This effectively turns the highly parallelized builds into
single-threaded builds, and is absolutely detrimental for performance.
:-( On the flip side, this also makes for the perfect testing
environment to really get to the bottom of this issue.
So, my first question is: Is this a known problem? Are there any
workarounds/fixes to get around it?
Otherwise: Any suggestions on how to go on and debug this? I am willing
to build and test an instrumented debug build of make, but I will need
assistance to find my way around the source and spot likely candidates
for the source of the problem.
/Magnus