Some update on Cygwin hangs

Erik Joelsson erik.joelsson at oracle.com
Tue Oct 23 08:10:31 PDT 2012


I'm now experimenting with a rewrite of Images.gmk. It's currently based 
around a lot of pattern rules, which makes it unique in the new build, 
where most makefiles are using macro expansions to create large sets of 
specific rules instead. I have rewritten the large bulk of pattern rules 
to macro expansions (was surprisingly easy and probably made it slightly 
more readable too). Initial test was promising, but will let it build in 
a loop over night, fingers crossed.

/Erik

On 2012-10-22 10:42, Magnus Ihse Bursie wrote:
> More updates:
>
> It does not seem to be mkdir that is the problem. The code that hangs 
> looks like this:
>     $(ECHO) $(LOG_INFO) Copying $(patsubst $(OUTPUT_ROOT)/%,%,$@)
>     $(install-file)
>
> The install-file macro was defined elsewhere. Defining it locally 
> did'nt help. Exploding it in place didn't help. It looks like this:
>     $(MKDIR) -p $(@D)
>     $(CP) -fP '$<' '$@'
>
> I added an additional
> $(ECHO) testing
> in front of the "Copying" line (suspecting macro expansion of patsubst 
> might be involved). The result was that it still hanged just before 
> executing the first line:
> /usr/bin/echo testing
>
> I sprinkled some $(info testing) in the recipe. These were all 
> executed properly, before the recipe execution. Then it still hanged 
> at the first echo.
>
> I tried adding a dummy command:
> touch /tmp/testing
> as first, if there would be a problem with echo specifically. It 
> actually seemed to help, but this is tricky to repeat and I might have 
> let it run too short time. I changed this so that the mkdir statement 
> was first, instead of the echo. This still hanged.
>
> I suspected the Makefile (Images.gmk) might be too complex -- or 
> rather, contain too many rules, and split it into two: J2SDKImages.gmk 
> and J2REImages.gmk. It did not help. If I run with J2REImages.gmk 
> first, it stops (as usual) on attach.diz, if I run with 
> J2SDKImages.gmk first, it stops on appletviewer.exe. It sounds like 
> it's an sorted order of the targets.
>
> I tried running the makefile directly using make -f Images.gmk -I ... 
> SPEC=..., and it hanged, so it's not due to makefile calling makefile.
>
> Just now, I attached to the hanged make with Visual Studio. It tells 
> me I'm at an INT 3 in ntdll, which Visual Studio helpfully tells me is 
> the result of a detected incorrect situation, such as trashed memory. 
> Cygwin debug symbols does not seem to be available for download, so I 
> can't get much further here, unfortunately.
>
> Still, it's obvious that this is a bug in Cygwin make, and I've 
> managed to exclude a list of potential causes. But we still don't know 
> what the problem is or how to work around it. :-(
>
> /Magnus



More information about the build-infra-dev mailing list