Page MenuHomePhabricator

rebaser: ve.dm.InternalList#nextUniqueNumber is unsynchronized per-client state
Open, LowPublic

Description

If two clients (not necessarily concurrently) try to insert a new "basic" reference without a name, both will be given a listKey value of auto/0. This causes a collision and eventually a crash.

This happens because the value of ve.dm.InternalList#nextUniqueNumber is private to each client and is not part of the document state, so the other clients don't know that it's been incremented. Of course this would also cause problems with concurrency, but it fails even without that.

Event Timeline

Deskana moved this task from To Triage to Freezer on the VisualEditor board.
Vvjjkkii renamed this task from rebaser: ve.dm.InternalList#nextUniqueNumber is unsynchronized per-client state to 1ucaaaaaaa.Jul 1 2018, 1:09 AM
Vvjjkkii raised the priority of this task from Low to High.
Vvjjkkii updated the task description. (Show Details)
Vvjjkkii removed a subscriber: Aklapper.
CommunityTechBot renamed this task from 1ucaaaaaaa to rebaser: ve.dm.InternalList#nextUniqueNumber is unsynchronized per-client state.Jul 2 2018, 2:04 PM
CommunityTechBot lowered the priority of this task from High to Low.
CommunityTechBot updated the task description. (Show Details)
CommunityTechBot added a subscriber: Aklapper.