Yes, jdk7u-dev@ is the right place to request an approval. I believe we can port it right away given that 1) the fix is very simple and hence low-risk; and 2) the 7u-dev repos will soon close for stabilization before the 7u40 release.

Please follow this template for your request:

http://openjdk.java.net/projects/jdk7u/approval-template.html

You can find links to the mailing list messages at

http://mail.openjdk.java.net/pipermail/awt-dev/

(to link to a review thread for this fix).

Also, you may indicate me as a person who's actually going to push this fix for you.

--
best regards,
Anthony

On 05/30/2013 11:04 PM, James Tomson wrote:
Fantastic - thanks Anthony et al. for following up.

I'm not quite sure of the procedure to nominate this patch for inclusion
in the jdk7u sources as well - would it be helpful for me to bring this
up on the jdk7u-dev list?

Cheers,
James


On Thu, May 30, 2013 at 10:14 AM, Anthony Petrov
<[email protected] <mailto:[email protected]>> wrote:

    Hi James,

    Thank you very much for the contribution! Your fix is now pushed to
    the repository:

    http://hg.openjdk.java.net/__jdk8/awt/jdk/rev/768fcc36182a
    <http://hg.openjdk.java.net/jdk8/awt/jdk/rev/768fcc36182a>

    --
    best regards,
    Anthony


    On 05/29/13 01:30, James Tomson wrote:

        Running the Leaks instrument while triggering multiple openURIs (and
        openFile, and printFile events) and neither the descriptors or the
        queued blocks are flagged as leaked. I've only had a chance to
        run the
        profile against a patched jdk7u, not a patched jdk8.

        Cheers,
        James


        On Mon, May 27, 2013 at 1:23 PM, Mike Swingler
        <[email protected] <mailto:[email protected]>
        <mailto:[email protected] <mailto:[email protected]>>> wrote:

             This looks reasonable to me. Did you test the fix using the
        "leaks"
             to determine that the descriptors or the block itself were not
             over-retained?

             Regards,
             Mike Swingler
             Apple Inc.

             On May 27, 2013, at 6:53 AM, Anthony Petrov
             <[email protected]
        <mailto:[email protected]>
        <mailto:anthony.petrov@oracle.__com
        <mailto:[email protected]>>> wrote:

              > Thanks for testing, James. I'm fine with the fix then.
              >
              > Note that we need at least one more review from a
        reviewer on
             this mailing list before we can push your fix to the
        repository.
              >
              > Anyone?
              >
              > --
              > best regards,
              > Anthony
              >
              > On 05/24/13 22:39, James Tomson wrote:
              >> Hi Anthony,
              >>
              >> Thanks for taking a look. To answer your questions, the
              >> application:openFiles and application:printFiles
        methods should
             not need
              >> similar special treatment - the passed instances should
        be getting
              >> implicitly retained and released by the block from my
             understanding, and
              >> can be queued for later processing without a problem.
        Testing
             locally
              >> with those handlers, the OpenFilesEvent and PrintFilesEvent
             events on
              >> the java-side are delivered without issue when the app is
             launched from
              >> an open file or print file event from the Finder.
              >>
              >> The issue with the passed NSAppleEventDescriptors is
        that while the
              >> objects are properly retained and released by the
        block, the
             Apple Event
              >> Handling system seems to be marking the instance's
        internal state as
              >> otherwise invalid/expired even though the instance
        itself is still
              >> retained. I'm unable to find any specific documentation or
             discussion
              >> about the lifecycle of these event descriptor objects
        though.
              >>
              >> -James
              >>
              >>
              >> On Fri, May 24, 2013 at 12:13 PM, Anthony Petrov
              >> <[email protected]
        <mailto:[email protected]>
        <mailto:anthony.petrov@oracle.__com
        <mailto:[email protected]>>
             <mailto:anthony.petrov@oracle.__com
        <mailto:[email protected]>

             <mailto:anthony.petrov@oracle.__com
        <mailto:[email protected]>>>> wrote:
              >>
              >>    Hi James,
              >>
              >>    I like your patch.
              >>
              >>    Do you know if other handlers are affected by a
        similar issue? In
              >>    particular, the application:openFiles and
        application:printFiles
              >>    also take references to NSObjects as their
        arguments. Could you
              >>    please test if these handlers are affected or not?
              >>
              >>    --
              >>    best regards,
              >>    Anthony
              >>
              >>
              >>    On 05/23/2013 10:56 PM, James Tomson wrote:
              >>
              >>        Hi - this issue was originally discussed on the
        jdk7u-dev
             list here:
              >>
        
http://mail.openjdk.java.net/____pipermail/jdk7u-dev/2013-May/____006446.html
        
<http://mail.openjdk.java.net/__pipermail/jdk7u-dev/2013-May/__006446.html>
              >>

        
<http://mail.openjdk.java.net/__pipermail/jdk7u-dev/2013-May/__006446.html
        <http://mail.openjdk.java.net/pipermail/jdk7u-dev/2013-May/006446.html>>
              >>
              >>        Additionally a report should be available soon
        in the bug
              >>        database as
              >>        (JDK-8015302)
              >>
        http://bugs.sun.com/____bugdatabase/view_bug.do?bug_____id=8015302
        <http://bugs.sun.com/__bugdatabase/view_bug.do?bug___id=8015302>
              >>
        <http://bugs.sun.com/__bugdatabase/view_bug.do?bug___id=8015302
        <http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8015302>>
              >>
              >>        To summarize, a bundled mac application which
        registers
             custom url
              >>        schemes via the CFBundleURLSchemes entry in its
             Info.plist, and
              >>        listens
              >>        for uri events using
              >>
          com.apple.eawt.Application.____setOpenURIHandler, will
              >>        not receive the URI used to launch the application.
              >>
              >>        Once the application is running however,
        subsequent openURI
              >>        events will
              >>        be delivered without issue. The problem only
        manifests
             with the
              >>        URI is
              >>        used to launch the App initially.
              >>
              >>        When the app is opened via URI, the following
        appears in the
              >>        system log:
              >>
              >>        ----------
              >>        JavaAppLauncher[74278]: -[NSAppleEventDescriptor
              >>        paramDescriptorForKeyword:] called on invalid
             NSAppleEventDescriptor
              >>        ----------
              >>
              >>        It appears that since the
        QueueingApplicationDelegate is only
              >>        keeping
              >>        references to those descriptor objects instead
        of making deep
              >>        copies of
              >>        them,
              >>        the event descriptor for the initial URI that
        launches
             the app is
              >>        invalidated by the time the app actually gets
        around to
              >>        processing it.
              >>
              >>        The following patch (same for both jdk8 and jdk7u
             sources) seems to
              >>        resolve the issue:
              >>
              >>        ----
              >>        diff --git
              >>

        a/src/macosx/native/sun/____osxapp/____QueuingApplicationDelegate.m
              >>

        b/src/macosx/native/sun/____osxapp/____QueuingApplicationDelegate.m
              >>        ---

        a/src/macosx/native/sun/____osxapp/____QueuingApplicationDelegate.m
              >>        +++

        b/src/macosx/native/sun/____osxapp/____QueuingApplicationDelegate.m
              >>        @@ -110,8 +110,14 @@
              >>
              >>           -
        (void)_handleOpenURLEvent:(____NSAppleEventDescriptor
              >>        *)openURLEvent
              >>        withReplyEvent:(____NSAppleEventDescriptor
        *)replyEvent
              >>           {
              >>        +    // Make an explicit copy of the passed
        events as
             they may be
              >>        invalidated by the time they're processed
              >>        +    NSAppleEventDescriptor *openURLEventCopy =
             [openURLEvent copy];
              >>        +    NSAppleEventDescriptor *replyEventCopy =
        [replyEvent
             copy];
              >>        +
              >>               [self.queue addObject:[^(){
              >>        -        [self.realDelegate
             _handleOpenURLEvent:____openURLEvent
              >>        withReplyEvent:replyEvent];
              >>        +        [self.realDelegate
             _handleOpenURLEvent:____openURLEventCopy
              >>        withReplyEvent:replyEventCopy]____;
              >>        +        [openURLEventCopy release];
              >>        +        [replyEventCopy release];
              >>               } copy]];
              >>           }
              >>        -----
              >>
              >>        Please let me know if there is additional
        information
             that I can
              >>        provide
              >>        - thanks!
              >>
              >>        -James
              >>
              >>



Reply via email to