AIX can use pthread, yes. I'll take a look at the patch. Thanks Volker for your reply.
Enviado desde nuestro iPhone. > El dic 10, 2015, a las 6:55 AM, Behdad Esfahbod <beh...@google.com> escribió: > > Slightly shuffled patch was committed upstream: > https://github.com/behdad/harfbuzz/commit/70b33edae7c8b9c031b83c95f00cb383789f1041 > > Thanks, > behdad > > >> On Thu, Dec 10, 2015 at 2:36 PM, Behdad Esfahbod <beh...@google.com> wrote: >> Hi Volker, Steven, >> >> I'd happily take AIX atomic primitive patch for HarfBuzz. Yes, github >> Pull-Requests are fine. As you correctly identified, HarfBuzz uses atomic >> ops and mutexes to synchronize access to global data as well as >> reference-counting from multiple threads, even though it doesn't uses >> threads itself. >> >> Does AIX use pthread for threading? I can definitely add a threading >> stress-test to HarfBuzz. I definitely should. Filed here: >> >> https://github.com/behdad/harfbuzz/issues/195 >> >> Thanks, >> behdad >> >>> On Thu, Dec 10, 2015 at 2:27 PM, Volker Simonis <volker.simo...@gmail.com> >>> wrote: >>> Hi Steven, >>> >>> thanks for your response. >>> >>>> On Thu, Dec 10, 2015 at 1:44 AM, Steven R. Loomis <s...@icu-project.org> >>>> wrote: >>>> Volker, >>>> 0. I’d like to see what the crashing stack frame is when NOT on harfbuzz, >>>> because there should be no change. >>> >>> This was another problem. Please see my previous mail in this thread where >>> I've described the cause in more detail. >>> >>>> 1. Phil addressed this one >>>> >>>> 2. I will take a look on AIX. I’ll see if I can build Harfbuzz itself on >>>> AIX at first. >>> >>> I've fixed it now and just send around a request for review: >>> http://mail.openjdk.java.net/pipermail/2d-dev/2015-December/006065.html >>> >>> The mail contains a link to the bug and the patch which fixes it. >>> >>> I also want to contribute this to harfbuzz. Is it OK to send a pull request >>> to https://github.com/behdad/harfbuzz ? >>> >>>> 3. Yes, I’ll work on putting some docs together for that test. Actually, >>>> other tests such as the Font2DTest would be a good test. Or, any text in >>>> a complex script such as Hindi. >>> >>> That would be great. For now, the Font2DTest runs without a problem with >>> harfbuzz on AIX (and linux/ppc64). >>> >>>> 4. I’m not sure. A threaded stress test would be good. Perhaps >>>> Harfbuzz-in-JDK could leverage the >>>> hotspot/src/os_cpu/../vm/atomic_os_cp.inline.hpp you mentioned. >>>> >>>> Behdad - file is here >>>> http://hg.openjdk.java.net/jdk9/client/hotspot/file/c8e212fb27d0/src/os_cpu/linux_x86/vm/atomic_linux_x86.inline.hpp >>>> - any comments on this or other items? >>> >>> That sounds like a good idea but unfortunately the hotspot primitives are >>> in a different repository (source-code wise) and in a different library >>> (i.e. libjvm.so) which doesn't export them. So the best we can do for now >>> would be to copy the missing parts over to the jdk repository (and that's >>> actually what I've done now for the AIX version of the primitives). >>> >>> Regards, >>> Volker >>> >>>> -s >>>> >>>>> >>>>> -------- Original Message -------- >>>>> Subject: Re: [OpenJDK 2D-Dev] Question regarding the integration of >>>>> harfbuzz (JEP 258) >>>>> Date: Wed, 09 Dec 2015 09:02:33 -0800 >>>>> From: Philip Race <philip.r...@oracle.com> >>>>> Organization: Oracle Corporation >>>>> To: 2d-dev@openjdk.java.net >>>>> >>>>> >>>>> Hi Volker, >>>>> >>>>> Running with ICU should stop harfbuzz use completely so if >>>>> you are still seeing a crash, perhaps it is due to something else >>>>> entirely. >>>>> Especially since a "simple AWT program" should not load layout anyway. >>>>> There was a fair amount of new and changed code pushed recently ... >>>>> >>>>> Yes, we need to run harfbuzz in multiple concurrent threads in the JDK. >>>>> A single threaded lock on harfbuzz would throttle text operations. >>>>> I suppose it is possible that we do not strictly need it as we currently >>>>> create a >>>>> new harfbuzz "instance" each time we go to invoke layout but that >>>>> is something that at least theoretically could change. >>>>> >>>>> The approach to synchronization is all from up-stream harfbuzz. >>>>> The harfbuzz mailing list might be the place to discuss that. >>>>> I'd expect it does work on AIX as a principal driver here is that >>>>> the IBM sponsored ICU project has deprecated its layout engine >>>>> and IBM/ICU are moving to harfbuzz so I'd be somewhat astonished >>>>> if they haven't yet tried it on AIX. Did you try just getting a copy >>>>> of the full hotspot library and running its configure on AIX to see if >>>>> harfbuzz can work out which options it wants there ? Obviously >>>>> I did not try that since I don't have AIX. Steven Loomis of IBM >>>>> who submitted the JEP should be able to help with a lot of this. >>>>> >>>>> -phil. >>>>> >>>>> On 12/8/15, 10:50 AM, Volker Simonis wrote: >>>>> > Hi, >>>>> > >>>>> > the integration of harfbuzz broke our AIX build because there's no >>>>> > implementation available for the hb_atomic macros in >>>>> > hb-atomic-private.hh. I've fixed that locally but still get a crash >>>>> > when running a simple AWT program (even with >>>>> > -Dsun.font.layoutengine=icu). >>>>> > >>>>> > I'm curretnly debugging the problem, but I have some general questions: >>>>> > >>>>> > 1. Do we really need the multi-threaded features of harfbuzz in OpenJDK? >>>>> > >>>>> > 2. Why does hurbuzz require these synchronization macros? From a first >>>>> > glance it doesn't seem to use multiple threads by itself. Does it have >>>>> > some global data structures which it needs to protect if harfbuzz is >>>>> > called from various threads? >>>>> > >>>>> > 3. Is there a way to test the hurfbuzz engine on a new platform? I saw >>>>> > the new test TestLayoutVsICU.java but it is marked as "manual" and it >>>>> > seems to require external fonts (at least some of which seem to be >>>>> > freely available). Could you please provide at least a minimal >>>>> > description on how this test can be run? >>>>> > >>>>> > 4. Is there a way to test that the implementation of the hb_atomic >>>>> > macros in hb-atomic-private.hh is correct (i.e. a way to stress >>>>> > harfbuzz from multiple threads)? I think this is important as I >>>>> > couldn't find a good description of the requirements for the atomic >>>>> > macros and on weak memory model architectures we should really get >>>>> > this right. For example there's no description of which fences are >>>>> > required around the various atomic operations. Getting this right >>>>> > across all platforms in the HotSpot (see >>>>> > hotspot/src/os_cpu/../vm/atomic_os_cp.inline.hpp) is already hard >>>>> > enough so I'm a little concerned that we are now introducing similar >>>>> > primitives in the class library. >>>>> > >>>>> > Thank you and best regards, >>>>> > Volker >