If you think a bug might affect users in the 57 release, please set the correct tracking and status flags for Release Management.

Recursion in drag&drop events when using sync XHR with e10s

UNCONFIRMED
Unassigned

Status

()

Core
Drag and Drop
UNCONFIRMED
a month ago
a month ago

People

(Reporter: jean-christophe.voogden, Unassigned)

Tracking

54 Branch
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(1 attachment)

(Reporter)

Description

a month ago
User Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:54.0) Gecko/20100101 Firefox/54.0
Build ID: 20170628075643

Steps to reproduce:

We are using sync xhr events in html5 drag and drop (since application object state is stored server side). This leaves to unexpected recursion if e10s is activated, more easily with dragleave events.

This problem does not appear if e10s is desactivated (browser.tabs.remote.autostart.2 = false), nor with other browers.


Actual results:

We got recursion and stack overflows on the firefox side :

    dragleave()
    syncXhr()
    dragleave()
    syncXhr()
    dragleave()
    syncXhr()
    ...

Also our server does not expect to handle multiple synchron events at the same time from a single session which leads to unexpected effects. Applications do not expect to receive "out of band" events too...

Another symptom is that in some cases we receive drag event with null dataTransfer


Expected results:

No recursion should occur until the event has returned, and there should be only one dragleave event emitted. The dataTransfer should never be null.

Updated

a month ago
Component: Untriaged → Drag and Drop
(Reporter)

Comment 1

a month ago
Created attachment 8900273 [details]
test case reproducing the problem

Ia added a test case reproducing the problem. It works ok if e10s is disabled but crashes rapidly if e10s is enabled, with "too much recursion" errors or "TypeError: event.dataTransfer is null".
You need to log in before you can comment on or make changes to this bug.