IPDL: Actor IDs colliding with "special" chromium transport route IDs ("ABORT: need a route")

RESOLVED FIXED

Status

()

Core
IPC
RESOLVED FIXED
9 years ago
7 years ago

People

(Reporter: cjones, Assigned: cjones)

Tracking

Trunk
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

Attachments

(2 attachments, 1 obsolete attachment)

If a protocol tree constructs more than two actors on the child side, the child process will abort with the error:

  ABORT: need a route: MSG_ROUTING_NONE != msg->routing_id()

The reason is that MSG_ROUTING_NONE is a "special ID" with the value -2.  But our actor ID assignment scheme uses negative IDs for actors created on the child side (positive for parent side).

The fix is to change the way the chromium transport layer marks messages as being none/control/routed.  This should be its own header field.
Created attachment 402517 [details] [diff] [review]
test case

Oh, it feels to good to post that.
Created attachment 402518 [details] [diff] [review]
fix

Waiting on test infrastructure to land before pushing.

I went with a lazy fix.  A "real" fix would distinguish between message routing types (none, control, routed) with a separate field.
Created attachment 404667 [details] [diff] [review]
updated test case
Attachment #402517 - Attachment is obsolete: true
Pushed http://hg.mozilla.org/projects/electrolysis/rev/5db6674097fe
Status: NEW → RESOLVED
Last Resolved: 9 years ago
Resolution: --- → FIXED

Updated

7 years ago
Assignee: nobody → jones.chris.g
You need to log in before you can comment on or make changes to this bug.