W3C home > Mailing lists > Public > whatwg@whatwg.org > October 2013

Re: [whatwg] onclose events for MessagePort

From: Andrew Wilson <atwilson@google.com>
Date: Thu, 10 Oct 2013 18:35:49 +0200
Message-ID: <CAArhhiu5RXNFdjBJZ7haM4nghW24sW3NmthsHwkvr2fRnHT5jQ@mail.gmail.com>
To: David Barrett-Kahn <dbk@google.com>
Cc: whatwg <whatwg@lists.whatwg.org>, Ian Hickson <ian@hixie.ch>, Boris Zbarsky <bzbarsky@mit.edu>, David Levin <levin@google.com>
On Thu, Oct 10, 2013 at 5:20 PM, Ehsan Akhgari <ehsan@mozilla.com> wrote:
>
>
> Why would they expect that?  Storing a reference to a port object on a
> parent doesn't change the owner of the port.  (I agree that this can be a
> bit confusing if authors are not familiar with MessagePorts, but this is
> part of the semantics of the ports as currently specified, and I don't
> think the channeldropped event proposal changes the amount of confusion
> here.
>

Chrome, at the very least, doesn't do this currently (doesn't disentangle
the port when the owner is navigated) and I think it would surprise
developers that a reference to a port is insufficient to keep it alive (and
that you have to explicitly window.postMessage() that port to a
window/iframe to hand off ownership instead of doing it through Javascript).

However, I don't feel that strongly about this - it's a reasonable (and,
perhaps, even technically correct) interpretation of the spec ; I just
wanted to point out that this entails a change in the current behavior, at
least in some UAs.

On Thu, Oct 10, 2013 at 5:43 PM, David Barrett-Kahn <dbk@google.com> wrote:
>
>
> Why is revealing when garbage collection happens such a terrible thing
> anyway?  Java does it...
>

Because it's a source of cross-browser incompatibility since the GC
behavior of different user agents differs greatly. In fact, there's no
requirement in any spec that a browser ever do GC. As an example, there are
cases in Chrome currently where we explicitly leak MessagePorts because
it's too difficult to determine reachability of entangled ports with JS VMs
running across multiple processes, so apps that were expecting
onchanneldropped events based on GC would break in Chrome in these cases.

I recognize that there's value in tracking connected status - I'm just
saying we need to be careful not to tie it to something unreliable like GC.
Tying it to something else (like when the owning document/worker is
discarded, or the associated process shuts down/crashes) is more
deterministic.
Received on Thursday, 10 October 2013 16:36:16 UTC

This archive was generated by hypermail 2.4.0 : Wednesday, 22 January 2020 17:00:11 UTC