exec hangs for hours after msbuild completes
Opened this issue · 4 comments
After the msbuild process ends (verified in task manager), the gradle process continues to hang. Windows 7, VS 2013 or 2015, Java 8, Gradle 3.0 or 3.2. No issues on Linux.
This is effectively a blocker for any nontrivial build.
Attaching jstack output.
Looks similar to a complaint about gradle here: https://discuss.gradle.org/t/weirdness-in-gradle-exec-on-windows/13660/6
I verified and the build of il-repack doesn't exhibit this behavior (feel free to confirm).
It's using gradle 2.9, JDK 8 and VS 2015.
If it's indeed related to msbuild passing its FD out to child processes, maybe it has something to do with your build env ?
Thanks for testing that, you're right, gradle 2.x seems to be ok. I just tested my build using gradle 2.14.1 and had no problem. But gradle 3.0 and 3.2 both hang consistently.
I see that the plugin uses project.exec for the build but not for the ProjectFileParser. I changed the plugin code to avoid project.exec and use similar code in both cases. It resolves this issue, so I'm confident there's something weird going on with gradle 3's exec. I don't know for a fact that it's related to FDs and child processes, but it's possible and does have the same symptoms. What we do know is gradle3+the plugin will consistently hang for certain msbuild projects, on multiple versions of VS.
So although the problem is not in the plugin, would you be willing to include this code so that builds don't hang on gradle 3? https://github.com/jr4/gradle-msbuild-plugin/commit/6efbe1d2aa07ccae1065e8c7fa53ebe103661a5c
I tested 3.1 (with daemon) on il-repack, no issue, also tested 3.2 with --no-daemon
, same.
Can you confirm ?
Using 3.2 with daemon is messy, lots of popups from each task exec, I suspect that's related to the recent changes to DaemonMain.
Note that even though the behavior with Gradle 3.2 + daemon is a mess, I do not reproduce your issue, as the stackdump of the daemon after the build is clean of any msbuild ref.