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