Closed Bug 518425 Opened 15 years ago Closed 15 years ago

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

Categories

(Core :: IPC, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: cjones, Assigned: cjones)

References

Details

Attachments

(2 files, 1 obsolete file)

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.
Attached patch test case (obsolete) — Splinter Review
Oh, it feels to good to post that.
Attached patch fixSplinter Review
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.
Attachment #402517 - Attachment is obsolete: true
Pushed http://hg.mozilla.org/projects/electrolysis/rev/5db6674097fe
Status: NEW → RESOLVED
Closed: 15 years ago
Resolution: --- → FIXED
Assignee: nobody → jones.chris.g
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: