RFR: JDK-8204564: Need better error output when GenerateLinkOptData fails

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Thu Jan 31 08:17:45 UTC 2019


On 2019-01-30 19:45, Erik Joelsson wrote:
> Here is a new webrev:
>
> http://cr.openjdk.java.net/~erikj/8204564/webrev.02/
Looks good to me!

/Magnus
>
> /Erik
>
> On 2019-01-30 08:52, Erik Joelsson wrote:
>> Hello,
>>
>> On 2019-01-30 01:51, Magnus Ihse Bursie wrote:
>>> On 2019-01-30 02:18, Erik Joelsson wrote:
>>>> Hello,
>>>>
>>>> Some recent build failures reminded me of this issue and increased 
>>>> the need to fix it ASAP to be able to diagnose them. 
>>>> GenerateLinkOptData.gmk runs a java tool to generate data which is 
>>>> later used to optimize the JDK image with jlink. The problem here 
>>>> is that the tool needs to print some of that data on stdout, which 
>>>> the build captures as one build artifact, and will print some 
>>>> "garbage" on stderr if things go well. So currently we just hide 
>>>> all that output from the build log. Because of this, if something 
>>>> goes wrong, we won't see the error.
>>>>
>>>> This patch tries to capture the stderr output and only print it 
>>>> (along with stdout) if the java command fails.
>>>>
>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-8204564
>>>>
>>>> Webrev: http://cr.openjdk.java.net/~erikj/8204564/webrev.01/
>>>
>>> Good idea, but could you please include some more information in the 
>>> case of failure? The classlist data generation gets a lot of blame 
>>> when the real cause is that the JDK is stillborn.
>>>
>>> Something like:
>>>
>>>             || ( exitcode=$$? && $(ECHO) "ERROR: Classlist file 
>>> generation failed. This is typically a sign that the newly built JDK 
>>> is broken, and not of an error in the Classlist generation." && 
>>> $(ECHO) "Classlist stderr: " &&
>>> $(CAT) $(LINK_OPT_DIR)/stderr && $(ECHO) "Classlist trace file:" && 
>>> $(CAT) $(JLI_TRACE_FILE) \
>>>                  && exit $$exitcode )
>>>
>>> but with better line breaks :)
>>>
>> Sure, but please note that this is not the first time we are running 
>> the newly built JVM in the build. To run the classlist generation, we 
>> must first create a couple of jmods and jlink them together into the 
>> interim image, so the newly built JVM/JDK cannot be completely broken 
>> for this to happen.
>>
>> /Erik
>>
>>> /Magnus
>>>>
>>>> /Erik
>>>>
>>>




More information about the build-dev mailing list