Open Bug 1925926 Opened 1 year ago Updated 4 months ago

Crash in [@ IPC::ChannelWin::SetOtherPid | IPC::ChannelWin::ProcessIncomingMessages | IPC::ChannelWin::OnIOCompleted | base::MessagePumpForIO::WaitForIOCompletion | base::MessagePumpForIO::WaitForWork | base::MessagePumpForIO::DoRunLoop]

Categories

(Core :: IPC, defect)

Unspecified
Windows
defect

Tracking

()

People

(Reporter: gsvelto, Unassigned)

References

Details

(Keywords: crash)

Crash Data

Crash report: https://crash-stats.mozilla.org/report/index/3f379fa9-405f-409c-ad4c-9bb600241017

MOZ_CRASH Reason:

MOZ_RELEASE_ASSERT(other_pid_ == base::kInvalidProcessId || other_pid_ == other_pid) (Multiple sources of SetOtherPid disagree!)

Top 10 frames:

0  xul.dll  IPC::Channel::ChannelImpl::SetOtherPid(unsigned long)  ipc/chromium/src/chrome/common/ipc_channel_win.cc:218
1  xul.dll  IPC::Channel::ChannelImpl::ProcessIncomingMessages(base::MessagePumpForIO::IO...  ipc/chromium/src/chrome/common/ipc_channel_win.cc:359
1  xul.dll  IPC::Channel::ChannelImpl::OnIOCompleted(base::MessagePumpForIO::IOContext*, ...  ipc/chromium/src/chrome/common/ipc_channel_win.cc:483
2  xul.dll  base::MessagePumpForIO::WaitForIOCompletion(unsigned long, base::MessagePumpF...  ipc/chromium/src/base/message_pump_win.cc:490
2  xul.dll  base::MessagePumpForIO::WaitForWork()  ipc/chromium/src/base/message_pump_win.cc:472
2  xul.dll  base::MessagePumpForIO::DoRunLoop()  ipc/chromium/src/base/message_pump_win.cc:457
3  xul.dll  base::MessagePumpWin::RunWithDispatcher(base::MessagePump::Delegate*, base::M...  ipc/chromium/src/base/message_pump_win.cc:59
3  xul.dll  base::MessagePumpWin::Run(base::MessagePump::Delegate*)  ipc/chromium/src/base/message_pump_win.h:79
4  xul.dll  MessageLoop::RunInternal()  ipc/chromium/src/base/message_loop.cc:369
4  xul.dll  MessageLoop::RunHandler()  ipc/chromium/src/base/message_loop.cc:362

This appears to be a Windows-specific crash. There's one bit of information in the crashes that might be relevant: all the crashes that contain the last value of GetLastError() has it set to STATUS_TIMEOUT.

Severity: -- → S3

This code is firing because the pid we got from the content process appears to conflict with the pid we got from the process launching code. I unfortunately don't have any ideas right now how we got into this situation.
One possibility is that somehow the GetProcId call from earlier is failing (https://searchfox.org/mozilla-central/rev/360b702e1ec793c49dc66122e50fe580d43350b3/ipc/chromium/src/base/process_util_win.cc#94-106), and we're ending up with a 0 which is not kInvalidProcessId on windows, and falling over. Perhaps we can add an assertion that the pid is not 0 which is passed in.

It'd be interesting to know the values of the PIDs that are involved. Given that GetLastError() is not 0, is it possible that the STATUS_TIMEOUT error comes from GetProcessId()? It sounds odd but it's always hard to tell what errors can be spit out by Win32 calls.

Duplicate of this bug: 1989113

Updating for the new signature

Crash Signature: [@ IPC::Channel::ChannelImpl::SetOtherPid | IPC::Channel::ChannelImpl::ProcessIncomingMessages | IPC::Channel::ChannelImpl::OnIOCompleted | base::MessagePumpForIO::WaitForIOCompletion | base::MessagePumpForIO::WaitForWork | base::MessagePumpForIO::DoRunLo… → [@ IPC::ChannelWin::SetOtherPid | IPC::ChannelWin::ProcessIncomingMessages | IPC::ChannelWin::OnIOCompleted | base::MessagePumpForIO::WaitForIOCompletion | base::MessagePumpForIO::WaitForWork | base::MessagePumpForIO::DoRunLoop ] [@ IPC::Channel::Channel…
Summary: Crash in [@ IPC::Channel::ChannelImpl::SetOtherPid | IPC::Channel::ChannelImpl::ProcessIncomingMessages | IPC::Channel::ChannelImpl::OnIOCompleted | base::MessagePumpForIO::WaitForIOCompletion | base::MessagePumpForIO::WaitForWork | base::MessagePumpFo... → Crash in [@ IPC::ChannelWin::SetOtherPid | IPC::ChannelWin::ProcessIncomingMessages | IPC::ChannelWin::OnIOCompleted | base::MessagePumpForIO::WaitForIOCompletion | base::MessagePumpForIO::WaitForWork | base::MessagePumpForIO::DoRunLoop]
You need to log in before you can comment on or make changes to this bug.