Hi Volker,
1) adding awt-dev. Semyon did the review on swing but really it should
always
(and mainly!) have been awt.
2) Yes, this ought to be pushed to 9-client, specifically not 9-dev.
Assuming it goes to 9-dev we may need to deal with conflicts.
Also if it causes any kind of problem with 9-dev I would not want to pile
fix on fix, so it would probably just get anti-deltaed. Just a warning.
3) It strictly needs a JPRT run before pushing so someone will need to
do that.
4) This change definitely needs two reviewers.
And we were discussing RTLD_NOLOAD is not Posix as that came up why it
was not
a solution in a cross-platform solution for determining whether libs were
already loaded but it was reported to not be able to detect some cases.
So I thought we had determined it was not a general solution.
Leaving aside why it is in there after that (something I will need to
check),
the lack of the other flag may explain why it was apparently "not working".
So one interesting thing is it appears to me that I thought we pushed
the .v6 webrev - the one I thought we (or I) approved since it was the
latest
obviously
http://mail.openjdk.java.net/pipermail/swing-dev/2016-April/005684.html
but this looks like the v5 webrev was pushed :
http://mail.openjdk.java.net/pipermail/swing-dev/2016-April/005678.html
All of this "detection" code was the main issue at that juncture.
So I would like some time to disentangle that before anything is changed.
-phil
On 5/4/16, 11:32 AM, Volker Simonis wrote:
Hi,
can somebody please review this small change which fixes the AIX build
after change 8145547, but also fixes an incorrect usage pattern of
RTLD_NOLOAD in 8145547:
http://cr.openjdk.java.net/~simonis/webrevs/2016/8156020/
https://bugs.openjdk.java.net/browse/JDK-8156020
Here are the details from the bug report:
Change 8145547 uses the RTLD_NOLOAD flag when calling dlopen to probe
the availability of the GTK libraries.
But unfortunately RTLD_NOLOAD is not Posix and for example not
available on AIX and BSD.
I also found out, that the implementation of 8145547 contains a bug.
It uses RTLD_NOLOAD in an incorrect way. The man page for dlopen
clearly states that one of the two flags RTLD_LAZY or RTLD_NOW has to
be included in the flags. But the current implementation uses
RTLD_NOLOAD as single flag. Therefor the call to dlopen() currently
always returns NULL, no difference if the corresponding library has
been loaded already or not.
The bug report also contains a small C program which can be used to
reproduce the problem.
The fix is to only use RTLD_NOLOAD if it is defined. The change
removes the 'flags' argument from the various check() functions and
replaces it with a boolean 'load' argument. It indicates if the check
functions should just look for a previously loaded version of the GTK
libraries (i.e. if 'load' == false) or if it should additionally try
to load the libraries if that hasn't been done before (i.e. if 'load'
== true).
I hope I haven't changed the previous program semantics with my
change. At least I couldn't see any difference :)
I've built and smoke tested on Linux/Solaris and AIX with various
combinations for jdk.gtk.version,
-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel and
FileDialog implementations.
I'd like to push this directly to jdk9-dev to fix the AIX build as
fast as possible. Would that be OK?
Thank you and best regards,
Volker