On 2015-12-17 22:32, David Holmes wrote:
On 17/12/2015 7:24 PM, Erik Joelsson wrote:
On 2015-12-17 09:08, David Holmes wrote:
On 17/12/2015 5:54 PM, Erik Joelsson wrote:
On 2015-12-17 01:40, David Holmes wrote:
On 17/12/2015 7:35 AM, Erik Joelsson wrote:
One more thing, where should this fix be pushed? Do you need it
urgently
in hs-rt?
It is urgently needed in both the hs-rt and hs-comp repos as it
affects nightly testing and JPRT. If Alejandro agrees I suggest
pushing to jdk9/hs and it can then be pulled down to the team repos.
Will do.
With regard to the fix ... previously DEBUG_BINARIES was never set in
spec.gmk and so was never externally introduced into the hotspot
build
this way. So why not simply change the name of the variable so
that it
has no affect on the hotspot part of the build?
Well, we don't want it affecting the jdk part of the build either at
this point. This patch aims to restore the "external" and "zipped"
settings to exactly what they were before the patch, as was promised.
I had not inferred from any of this that what was being done via
NativeCompilation.gmk was in any way a problem. I would have expected
any problems there to be readily seen before this was reviewed and
pushed. So I'm a bit confused about this.
I didn't follow this particular review closely as Magnus was on it and
so I had missed the NativeCompilation part. It's true that it is very
unlikely to be part of the problem described in this bug, but I still
feel that the safest action at this point is to restore the behavior of
"external" and "zipped" to what they used to be.
My concern is recognizing that these adjustments do in fact restore
the old behaviour. From the hotspot side it seemed cleaner to avoid
the breakage by using a different variable name.
I'm not sure about this talk about a different variable name? The
*point* of the patch was *exactly* to set DEBUG_BINARIES=true for
internal builds. The problem was that it also set it for
external/zipped, which was incorrect. But neither the writer of the
patch nor me (or any other reviewer) realized that this would have this
"hammer" effect.
Magnus is working on a
complete fix where debug symbols will be enabled for everything in
NativeCompilation.
I'm tempted to say rollback the whole thing rather than hack at it.
Rolling back will be much more work for me than submitting this patch.
There are two changes already that depend on this change. I also don't
dislike the idea of the new configure parameter.
Rolling back the new configure parameters and then reinstating them
again would also not win us any friends as it would be very
disruptive. As others have noted the way we introduce and remove
configure parameters needs to be looked at.
This makes it sound like we're sloppy with configure arguments when we
actually try hard not to be.
Normally, we don't have any problems with introducing new configure
arguments. Most often, when we introduce a new argument, the behaviour
falls back to the old behaviour as default if the argument is not
specified. From time to time, we actually need to change the behaviour
of configure, and this does not really apply. But then again, all
modification somehow change behaviour regardless of if any options are
changed, an all changes in behaviour breaks someones workflow
(compulsory xkcd reference: https://xkcd.com/1172/).
In this case, not setting the new configure option resulted in the old
default behaviour.
As for removing options, we are more conservative. We never remove
options, we just deprecate them. (With a few exceptions, e.g. sometimes
we have introduced temporary options which are clearly announced as
such.) Our plan is to remove deprecated options once some time has
passed (e.g. next major release) but, like the Java language itself, so
far we have not actually removed any deprecated options. :-)
When we deprecate an option, we ignore the value it sets, but prints a
warning stating that the option is deprecated. The configure call will
not fail, though. The warning is repeated as the very last thing so it
should be easy for the user to spot, like this:
The following warnings were produced. Repeated here for convenience:
WARNING: Option --with-override-jaxp is deprecated and will be ignored.
In some cases we've tried to write some "glue" to interpret old and
deprecated options in terms of new. (I only think we've done this in the
closed source). I don't really like it. It means a lot of tests,
handling situations like what if both old and new are set, and they
conflict? Or if both old and new are set and they do *not* conflict?
What if the behaviour has changed slightly, so it does not really match?
When should we stop helping the user to convert from the old to the new?
I was mainly concerned that the out-of-the-box default behaviour was
unchanged.
The stated goal of the patch was that out of the box behaviour should
have been unchanged. The patch was however incorrect, and this fact was
not detected during testing of the patch (I only tested if it built ok,
not that the resulting build did not degrade in performance) nor during
code review. Such things happen, and then you need to fix them.
/Magnus
And apologies as I'm just about to go offline for a few hours at least.
I hope you won't object to me pushing this with just ihse as reviewer. I
feel this is rather a priority to get fixed.
Sure. I had verified that DEBUG_BINARIES is only ever tested against
"true" so setting it to false should be as effective as not setting it
at all.
I'll follow up separately to see where this was pushed and whether we
need to pull it into anywhere else urgently.
Thanks,
David
/Erik