Date: Sat, 13 Feb 2016 00:09:45 -0800 From: Greg Lewis <glewis@eyesbeyond.com> To: Brian Gardner <openjdk@getsnappy.com> Cc: Magnus Ihse Bursie <magnus.ihse.bursie@oracle.com>, java@freebsd.org Subject: Re: Helping out with JDK 9 on BSD Message-ID: <20160213080945.GC56357@misty.eyesbeyond.com> In-Reply-To: <F993524B-0332-4B9C-93CE-FA3D2071F29F@getsnappy.com> References: <56ADE7D4.8020107@oracle.com> <56ADE943.6020103@oracle.com> <8B9ACABA-F9B2-4288-9DB5-CA843DE48C34@getsnappy.com> <20160203034053.GA36170@misty.eyesbeyond.com> <A4624A53-1329-481E-928C-F2C8167BA001@getsnappy.com> <56B45453.9020006@oracle.com> <A0BD54C7-2DAE-4B7A-B28C-B639E138DA56@getsnappy.com> <1C39812E-E596-47E6-AB45-0A591A017FFB@getsnappy.com> <F993524B-0332-4B9C-93CE-FA3D2071F29F@getsnappy.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Feb 12, 2016 at 10:54:29AM -0800, Brian Gardner wrote: > After giving it some thought, I???ve created an alternate patch for the c= lear_current_thread issue. I like this solution better because it is isola= ted to java_start function in os_bsd.cpp, and it makes java_start responsib= le for cleaning up the current_thread since it also initializes it. Sounds good! What can I do to help get all the changes up for review? -- Greg > > On Feb 10, 2016, at 10:45 PM, Brian Gardner <openjdk@getsnappy.com> wro= te: > >=20 > > Hello again Greg and Magnus, > > I finished up researching the leftover thread-specific data after 4 des= tructor iterations issue. It looks like it???s currently functioning on Fr= eebsd the same way it does on Linux, the only difference is that Freebsd ou= tput that warning were Linux silently stops after it???s forth try. I look= ed into how openjdk8 was working and it looks like there were calls to TLS:= :set_thread(NULL) scattered throughout the code base at the end of some ::r= un methods. I???ve mimicked that behavior in the necessary spots with the = following patch. I can???t help but think there must be a better way to ge= t these Thread???s destructors called, and I tried that in place of making = clear_thread_current public and calling it directly, but it resulted in dea= dlock. > >=20 > > <hotspot__clear_thread_current.patch> > >=20 > >> On Feb 9, 2016, at 2:36 PM, Brian Gardner <openjdk@getsnappy.com <mail= to:openjdk@getsnappy.com>> wrote: > >>=20 > >> Hi Greg and Magnus, > >> I???ve attached the patches needed to build and compile on Freebsd. I= ???ve reverted my changes to TLS, and done more debugging there. There app= ears to be two separate issues. One issue was that the implementation of O= S::bad::gettid() was somehow clearing the current thread previously set wit= h pthread_setspecific. I was able to fix this by porting logic from bad-po= rt/jdk8, see hotspot__os_bd_cpp__getthreadid.patch. The second issue seems= to be related to certain types of threads never getting their destructor c= alled and therefor not clearing pthread_setspecific and resulting in Thread= 803c59000 has exited with leftover thread-specific data after 4 destructor= iterations, errors. This one I haven???t tracked down yet and will contin= ue looking into. While I can compile and execute HelloWorld, I???m getting= a ton of these benign yet annoying messages from ConcurrentGC and Worker t= hreads. I???ll continue looking into that next week. > >>=20 > >>=20 > >>> On Feb 4, 2016, at 11:50 PM, Magnus Ihse Bursie <magnus.ihse.bursie@o= racle.com <mailto:magnus.ihse.bursie@oracle.com>> wrote: > >>>=20 > >>> On 2016-02-04 01:29, Brian Gardner wrote: > >>>> Hi Greg, > >>>> Great to hear from you, it???s been a while since I took on one of t= hese projects, but I do follow the java@freebsd mailing list and see all th= e work you put in. I must tell you how greatly your work is appreciated by = me and I???m sure the rest of the community. I have good news, with fairly= minimal changes I have it compiling, building HelloWorld, and running Hell= oWorld all without errors. > >>>>=20 > >>>> I think it???ll break down into 4 change sets, > >>>> NM - I ported some code from bsd-port/jdk8/hotspot/make/bsd/makefile= s/build_vm_def.sh that fixes a compile error=20 > >>>> SUPPORT_RESERVED_STACK_AREA - define SUPPORT_RESERVED_STACK_AREA for= _ALLBSD_SOURCE > >>>> Serviceability Agent - ported from bad-port/jdk8, currently compiles= but hasn???t been tested > >>>> TLS - there is problems with the TLS in jdk9 used for Thread::curren= t(). This caused several issues for me and while the fix was relatively st= raight forward in using THREAD_LOCAL_DECL completely in place of TLS comple= tely, I???d imagine there was a reason it was implemented in sort of a Hybr= id fashion alongside TLS. > >>>=20 > >>> There is a reason. It is very well described in this comment: > >>> https://bugs.openjdk.java.net/browse/JDK-8132510?focusedCommentId=3D1= 3866505 <https://bugs.openjdk.java.net/browse/JDK-8132510?focusedCommentId= =3D13866505> <https://bugs.openjdk.java.net/browse/JDK-8132510?focusedComme= ntId=3D13866505 <https://bugs.openjdk.java.net/browse/JDK-8132510?focusedCo= mmentId=3D13866505>> > >>>=20 > >>> The TL;DR: in some circumstances the JVM can crash if we do not set u= p an initial TLS. On the other hand, this was for glibc, so maybe this situ= ation does not arise for FreeBSD. > >>>=20 > >>>>=20 > >>>> It would be great if I could post these as web reviews for others to= review. Greg, would getting access to bsd-port/jdk9 allow us to collabora= te through web reviews? =20 > >>>=20 > >>>=20 > >>>> Magnus, do you think using bsd-port/jdk9 for this purpose be a step = towards getting these basic changes into the jdk9 mainline, or would your c= olleagues think "if they have bsd-port/jdk9, why bother with integrating th= em into the jdk9 mainline???? > >>>=20 > >>> I think putting these changes in bsd-port/jdk9 is very reasonable, an= d I do not believe it will in any way hinder their acceptance into jdk9 mai= nline. The only thing to be careful about there, though, is that all contri= butors have signed the OCA (Oracle contributor agreement). Mixing in "legal= ly bad" code can present a real problem for adoption into mainline. > >>>=20 > >>> /Magnus > >>>=20 > >>>>=20 > >>>> Brian Gardner > >>>>=20 > >>>>> On Feb 2, 2016, at 7:40 PM, Greg Lewis < <mailto:glewis@eyesbeyond.= com <mailto:glewis@eyesbeyond.com>>glewis@eyesbeyond.com <mailto:glewis@eye= sbeyond.com> <mailto:glewis@eyesbeyond.com <mailto:glewis@eyesbeyond.com>>>= wrote: > >>>>>=20 > >>>>> On Sun, Jan 31, 2016 at 06:57:26AM -0800, Brian Gardner wrote: > >>>>>> I???m interested in helping. I ported openjdk6 to freebsd and als= o helped out with openjdk8. > >>>>>>=20 > >>>>>> Brian Gardner > >>>>>=20 > >>>>> I'd love to see as much of these changes get into the jdk9 mainline= =2E My time > >>>>> is really limited for the next couple of weeks though. If it would= help you > >>>>> or Magnus to use the bsd-port repo to stage changes then that would= be > >>>>> great too. Let me do a merge to make sure it is up to date with ma= inline. > >>>>> Notionally we'd have to do a vote to get you both access I think? = But I > >>>>> can shepherd changes in if that will help with sharing them. > >>>>>=20 > >>>>> FWIW, in terms of taking responsibility, I've been regularly updati= ng the > >>>>> repos for jdk8 and jdk7 for a couple of years. I'm happy to keep j= dk9 > >>>>> building if that is what is being looked for there and also port mo= re of > >>>>> the BSD changes for jdk8 as appropriate. > >>>>>=20 > >>>>> - Greg > >>>>>=20 > >>>>>>> On Jan 31, 2016, at 3:00 AM, Magnus Ihse Bursie <magnus.ihse.burs= ie@oracle.com <mailto:magnus.ihse.bursie@oracle.com> <mailto:magnus.ihse.bu= rsie@oracle.com <mailto:magnus.ihse.bursie@oracle.com>>> wrote: > >>>>>>>=20 > >>>>>>> On 2016-01-31 11:54, Magnus Ihse Bursie wrote: > >>>>>>>> Hi, > >>>>>>>>=20 > >>>>>>>> [TL;DR: I'm offering patches to compile JDK 9 on FreeBSD, but it= 's not clear where to put them, or how.] > >>>>>>>>=20 > >>>>>>>> I'm working at Oracle on the OpenJDK build team and is responsib= le for large parts of the build system of OpenJDK. Lately, I've been playin= g around with FreeBSD (and other BSDs) in my free time, and I've written a = patch that will add build system support for FreeBSD, OpenBSD and NetBSD in= JDK 9 (tracked in <https://bugs.openjdk.java.net/browse/JDK-8147795 <http= s://bugs.openjdk.java.net/browse/JDK-8147795>>https://bugs.openjdk.java.net= /browse/JDK-8147795 <https://bugs.openjdk.java.net/browse/JDK-8147795><http= s://bugs.openjdk.java.net/browse/JDK-8147795 <https://bugs.openjdk.java.net= /browse/JDK-8147795>>). > >>>>>>>>=20 > >>>>>>>> I started writing this when I realized that the jdk9 branch in t= he OpenJDK bsd-port repository did not contain any BSD-specific changes at = all, and the old JDK 8 changes will not readily be portable, due to major c= hanges in the build system between JDK 8 and JDK 9. > >>>>>>>>=20 > >>>>>>>> I thought it would be a no-brainer to integrate these changes in= to the JDK 9 mainline, so they would be in place for whenever you guys woul= d start to attack porting the code base. However, some of my collegues thou= ght otherwise. The end result, I think, is that they wanted to see someone = (not necessarily a company, the FreeBSD organisation for instance seemed to= be okay), to step forward and say "we take responsibility for the BSD port= ", and give some kind of commitment to actually use these build changes in = producing a viable port. You can read the mail conversation here: <http://m= ail.openjdk.java.net/pipermail/build-dev/2016-January/016421.html <http://m= ail.openjdk.java.net/pipermail/build-dev/2016-January/016421.html>>http://m= ail.openjdk.java.net/pipermail/build-dev/2016-January/016421.html <http://m= ail.openjdk.java.net/pipermail/build-dev/2016-January/016421.html> <http://= mail.openjdk.java.net/pipermail/build-dev/2016-January/016421.html <http://= mail.openjdk.java.net/pipermail/build-dev/2016-January/016421.html>> > >>>>>>>=20 > >>>>>>> I forgot to add that I'm willing to help with build issues for th= e BSD port, as far as my (like everybode else's) limited free time allows m= e. Unfortunately, I'm still a noob at BSD internals and can't really help w= ith much apart from that. > >>>>>>>=20 > >>>>>>> /Magnus > >>>>>>>=20 > >>>>>>>=20 > >>>>>>>>=20 > >>>>>>>> An alternative to pushing this code into the JDK 9 mainline is o= f course to push it to the bsd-port/jdk9 repo (given that the owners of tha= t repo approves), but that seems like a less favourable solution. Having th= e code in the mainline does not mean that it gets tested automatically, but= it means that it will be part of e.g. refactoring, that would otherwise br= eak a downstream patchset. > >>>>>>>>=20 > >>>>>>>> I cc:ed this conversation to the <mailto:bsd-port-dev@openjdk.j= ava.net <mailto:bsd-port-dev@openjdk.java.net>>bsd-port-dev@openjdk.java.ne= t <mailto:bsd-port-dev@openjdk.java.net> <mailto:bsd-port-dev@openjdk.java.= net <mailto:bsd-port-dev@openjdk.java.net>> mailing list, but never got any= kind of official response there. Since this list seems more active, I'm tr= ying here instead. :) > >>>>>>>>=20 > >>>>>>>> So, I'm offering two patches here, one that applies to the build= system, is nice and clean, and possible to integrate into JDK 9 mainline, = if my collegues are convinced that someone is backing up the BSD port. And = there's a second patch, which fixes broken C/C++/Java code and results in a= product that can at least run "javac HelloWorld", but this is not yet clea= n enough for integration anywere, at least not the JDK 9 mainline. (I don't= know enough of the BSD internals to fix all problems, so there's some "#if= 0" code here and there.) > >>>>>>>>=20 > >>>>>>>> /Magnus > >>>>>>>>=20 > >>>>>>>> _______________________________________________ > >>>>>>>> freebsd-java@freebsd.org <mailto:freebsd-java@freebsd.org> <mail= to:freebsd-java@freebsd.org <mailto:freebsd-java@freebsd.org>> mailing list > >>>>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-java <https:/= /lists.freebsd.org/mailman/listinfo/freebsd-java> <https://lists.freebsd.or= g/mailman/listinfo/freebsd-java <https://lists.freebsd.org/mailman/listinfo= /freebsd-java>> > >>>>>>>> To unsubscribe, send any mail to "freebsd-java-unsubscribe@freeb= sd.org <mailto:freebsd-java-unsubscribe@freebsd.org>" <mailto:freebsd-java-= unsubscribe@freebsd.org <mailto:freebsd-java-unsubscribe@freebsd.org>> > >>>>>>>=20 > >>>>>>> _______________________________________________ > >>>>>>> freebsd-java@freebsd.org <mailto:freebsd-java@freebsd.org> <mailt= o:freebsd-java@freebsd.org <mailto:freebsd-java@freebsd.org>> <mailto:freeb= sd-java@freebsd.org <mailto:freebsd-java@freebsd.org> <mailto:freebsd-java@= freebsd.org <mailto:freebsd-java@freebsd.org>>> mailing list > >>>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-java <https://= lists.freebsd.org/mailman/listinfo/freebsd-java> <https://lists.freebsd.org= /mailman/listinfo/freebsd-java <https://lists.freebsd.org/mailman/listinfo/= freebsd-java>> <https://lists.freebsd.org/mailman/listinfo/freebsd-java <ht= tps://lists.freebsd.org/mailman/listinfo/freebsd-java> <https://lists.freeb= sd.org/mailman/listinfo/freebsd-java <https://lists.freebsd.org/mailman/lis= tinfo/freebsd-java>>> > >>>>>>> To unsubscribe, send any mail to " <mailto:freebsd-java-unsubscri= be@freebsd.org <mailto:freebsd-java-unsubscribe@freebsd.org>>freebsd-java-u= nsubscribe@freebsd.org <mailto:freebsd-java-unsubscribe@freebsd.org> <mailt= o:freebsd-java-unsubscribe@freebsd.org <mailto:freebsd-java-unsubscribe@fre= ebsd.org>> < <mailto:freebsd-java-unsubscribe@freebsd.org <mailto:freebsd-j= ava-unsubscribe@freebsd.org>>mailto:freebsd-java-unsubscribe@freebsd.org <m= ailto:freebsd-java-unsubscribe@freebsd.org> <mailto:freebsd-java-unsubscrib= e@freebsd.org <mailto:freebsd-java-unsubscribe@freebsd.org>>>" > >>>>>>=20 > >>>>>> _______________________________________________ > >>>>>> freebsd-java@freebsd.org <mailto:freebsd-java@freebsd.org> <mailto= :freebsd-java@freebsd.org <mailto:freebsd-java@freebsd.org>> mailing list > >>>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-java <https://l= ists.freebsd.org/mailman/listinfo/freebsd-java> <https://lists.freebsd.org/= mailman/listinfo/freebsd-java <https://lists.freebsd.org/mailman/listinfo/f= reebsd-java>> > >>>>>> To unsubscribe, send any mail to "freebsd-java-unsubscribe@freebsd= =2Eorg <mailto:freebsd-java-unsubscribe@freebsd.org>" <mailto:freebsd-java-= unsubscribe@freebsd.org <mailto:freebsd-java-unsubscribe@freebsd.org>> > >>>>>=20 > >>>>> --=20 > >>>>> Greg Lewis Email : <mailto:glewis@eyesb= eyond.com <mailto:glewis@eyesbeyond.com>>glewis@eyesbeyond.com <mailto:glew= is@eyesbeyond.com> <mailto:glewis@eyesbeyond.com <mailto:glewis@eyesbeyond.= com>> > >>>>> Eyes Beyond Web : <http://www.eyesbeyo= nd.com/ <http://www.eyesbeyond.com/>>http://www.eyesbeyond.com <http://www.= eyesbeyond.com/> <http://www.eyesbeyond.com/ <http://www.eyesbeyond.com/>> > >>>>> Information Technology FreeBSD : <mailto:glewis@freeb= sd.org <mailto:glewis@freebsd.org>>glewis@FreeBSD.org <mailto:glewis@freebs= d.org> <mailto:glewis@FreeBSD.org <mailto:glewis@FreeBSD.org>> > >>>>> _______________________________________________ > >>>>> freebsd-java@freebsd.org <mailto:freebsd-java@freebsd.org> <mailto:= freebsd-java@freebsd.org <mailto:freebsd-java@freebsd.org>> mailing list > >>>>> https://lists.freebsd.org/mailman/listinfo/freebsd-java <https://li= sts.freebsd.org/mailman/listinfo/freebsd-java> <https://lists.freebsd.org/m= ailman/listinfo/freebsd-java <https://lists.freebsd.org/mailman/listinfo/fr= eebsd-java>> > >>>>> To unsubscribe, send any mail to "freebsd-java-unsubscribe@freebsd.= org <mailto:freebsd-java-unsubscribe@freebsd.org> <mailto:freebsd-java-unsu= bscribe@freebsd.org <mailto:freebsd-java-unsubscribe@freebsd.org>>" > >>>>=20 > >>>=20 > >>>=20 > >>=20 > >> _______________________________________________ > >> freebsd-java@freebsd.org <mailto:freebsd-java@freebsd.org> mailing list > >> https://lists.freebsd.org/mailman/listinfo/freebsd-java <https://lists= =2Efreebsd.org/mailman/listinfo/freebsd-java> > >> To unsubscribe, send any mail to "freebsd-java-unsubscribe@freebsd.org= <mailto:freebsd-java-unsubscribe@freebsd.org>" > >=20 >=20 --=20 Greg Lewis Email : glewis@eyesbeyond.com Eyes Beyond Web : http://www.eyesbeyond.com Information Technology FreeBSD : glewis@FreeBSD.org
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20160213080945.GC56357>