On 3/21/2022 10:28 AM, Magnus Ihse Bursie wrote:
Hi,
I'm working for Oracle on the OpenJDK build team. We're using GNU make to build
the JDK on all supported platforms. For Windows, we use Cygwin as our build
environment, including the Cygwin version of GNU make.
We have had a long-standing issue with make losing jobserver tokens.
("long-standing" here means for years, and years, at least since GNU make 4.0,
up to and including the current latest version in Cygwin.)
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.
I started out by sending a question to bug-m...@gnu.org. The folks over there
reported that this was not a known problem with GNU make on Windows in general,
and that as far as they knew, the mingw port did not suffer from this problem.
Instead, they suggested that it was a Cygwin-specific problem, possibly related
to issues with emulating Posix pipes and/or signals in Cygwin.
So, my first question is: Is this a known problem in Cygwin GNU make? Are there
any workarounds/fixes to get around it?
No, it's not a known problem.
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.
For starters, is your Cygwin installation up to date? Cygwin's internal
implementation of pipes was overhauled starting with cygwin-3.3.0.
Ken
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple