Closed Bug 1599861 Opened 5 years ago Closed 5 years ago

Parent process crash: Error deserializing variant TPChildToParentStreamChild of union IPCRemoteStreamType [@ mozilla::ipc::FatalError | mozilla::ipc::IProtocol::HandleFatalError | mozilla::ipc::ReadIPDLParam<T> ]

Categories

(Core :: Networking, defect, P2)

defect

Tracking

()

RESOLVED DUPLICATE of bug 1595578

People

(Reporter: mstange, Unassigned)

Details

(Whiteboard: [necko-triaged])

Crash Data

https://crash-stats.mozilla.org/report/index/ad956e08-f78e-44c8-98ef-f8b830191127

I encounter this browser crash every time I file a bugzilla bug with an attachment.

Crash Signature: [@ mozilla::ipc::FatalError | mozilla::ipc::IProtocol::HandleFatalError | mozilla::ipc::ReadIPDLParam<T> ]

The top frame is to generic. The report here seems document channel related and thus recent, Matt?

Flags: needinfo?(matt.woodrow)
Priority: -- → P2
Whiteboard: [necko-triaged]

Just landed a fix!

Status: NEW → RESOLVED
Closed: 5 years ago
Flags: needinfo?(matt.woodrow)
Resolution: --- → DUPLICATE

Thanks!

I wrote the comment below and it's kind of obsolete now, but I still want to post it for posterity.


This is an IPC error when deserializing an enum. So it seems like we're sending garbage bytes over to the other side.

Unfortunately it's not clear which of the three error cases is being hit; they all have the same error message and the debug info for XUL does not contain enough information to let addr2line find the correct line number.

            if ((!(ReadIPDLParam(aMsg, aIter, aActor, (&((aVar)->get_PChildToParentStreamParent())))))) {
                aActor->FatalError("Error deserializing variant TPChildToParentStreamChild of union IPCRemoteStreamType");
                return false;
            }
            if ((!((*((&((aVar)->get_PChildToParentStreamParent()))))))) {
                aActor->FatalError("Error deserializing variant TPChildToParentStreamChild of union IPCRemoteStreamType");
                return false;
            }
            // Sentinel = 'TPChildToParentStreamChild'
            if ((!((aMsg)->ReadSentinel(aIter, 1882094295)))) {
                mozilla::ipc::SentinelReadError("Error deserializing variant TPChildToParentStreamChild of union IPCRemoteStreamType");
                return false;
            }

Here's part of the stack with inlines resolved. I got the XUL.dSYM from https://symbols.mozilla.org/XUL/911502A889EF3F82831F851A503450740/XUL.dSYM.tar.bz2 and ran addr2line from https://github.com/gimli-rs/addr2line using cargo run --release --example addr2line -- --exe /Users/mstange/Downloads/XUL.dSYM/Contents/Resources/DWARF/XUL -p -f -i 0x8b3658.

mozilla::ipc::IPDLParamTraits<mozilla::ipc::IPCRemoteStreamType>::Read(IPC::Message const*, PickleIterator*, mozilla::ipc::IProtocol*, mozilla::ipc::IPCRemoteStreamType*) obj-firefox/ipc/ipdl/InputStreamParams.cpp:?
bool mozilla::ipc::ReadIPDLParam<mozilla::ipc::IPCRemoteStreamParams>(IPC::Message const*, PickleIterator*, mozilla::ipc::IProtocol*, mozilla::ipc::IPCRemoteStreamParams*) obj-firefox/dist/include/mozilla/ipc/IPDLParamTraits.h:68
mozilla::ipc::IPDLParamTraits<mozilla::ipc::IPCRemoteStreamParams>::Read(IPC::Message const*, PickleIterator*, mozilla::ipc::IProtocol*, mozilla::ipc::IPCRemoteStreamParams*) obj-firefox/ipc/ipdl/InputStreamParams.cpp:1119
bool mozilla::ipc::ReadIPDLParam<mozilla::ipc::IPCRemoteStreamParams>(IPC::Message const*, PickleIterator*, mozilla::ipc::IProtocol*, mozilla::ipc::IPCRemoteStreamParams*) obj-firefox/dist/include/mozilla/ipc/IPDLParamTraits.h:68

(Here's the generated source for InputStreamParams.cpp, it was uploaded by this Ugs job of the shippable Mac build job.)

You need to log in before you can comment on or make changes to this bug.