gradle-msbuild-plugin icon indicating copy to clipboard operation
gradle-msbuild-plugin copied to clipboard

exec hangs for hours after msbuild completes

Open jr4 opened this issue 7 years ago • 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

gradledaemonstack.txt

jr4 avatar Nov 18 '16 19:11 jr4

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 ?

gluck avatar Nov 21 '16 08:11 gluck

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

jr4 avatar Nov 21 '16 23:11 jr4

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.

gluck avatar Nov 22 '16 11:11 gluck

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.

gluck avatar Nov 22 '16 11:11 gluck