Closed Bug 1548941 Opened 7 months ago Closed 7 months ago

Stop allowing e10s to be turned off with a pref for user-facing desktop builds

Categories

(Firefox :: General, defect)

defect
Not set

Tracking

()

RESOLVED FIXED
Firefox 68
Tracking Status
firefox68 + fixed

People

(Reporter: Gijs, Assigned: Gijs)

References

(Blocks 4 open bugs)

Details

Attachments

(1 file)

Right now an about:config pref-flip is all it takes to turn off e10s (and, by implication, sandboxing). It shouldn't be that easy.

Ideally, I'd like to get rid of the pref entirely, but it's used by most of our no-e10s/1proc automation suites to disable e10s. They can be switched to an env var, for which we already have code, but I don't know the suites' python code well and we have approx. no time before soft freeze, and somehow I expect nobody will thank me for messing with most of our test suites in the soft freeze week.

Instead, for 68, it seems to me like we could make nsAppRunner read the pref only if at least one of the following holds:

  • we're not MOZ_BUILD_APP_IS_BROWSER (hi, fennec)
  • we're running in automation
  • we're a non-official build (hi, local developers who want to easily turn off e10s.

The only downside I can see is that a profile you share between nightly and a local build that has the pref set is going to behave differently because of MOZ_OFFICIAL. I don't see a great way around that, but also, given the profile separation work that's happened I don't think that's that important a usecase, and about:support will give the right info. We can announce this has happened in the newsgroup, and those factors together I think provide enough aircover to make this change.

On 69, we can follow this up by fully removing support for the pref except on fennec, transitioning the test suites to the env var.

See Also: → 1510087

Posted https://groups.google.com/d/msg/mozilla.dev.platform/cJMzxi7_PmI/R8Qck-dcAQAJ to make sure people aren't caught unawares.

Pushed by gijskruitbosch@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/5d97da3c65b5
remove e10s force-enable and force-disable prefs, and on desktop restrict 'normal' e10s pref to automation and unofficial builds, r=bholley

I have no idea how I broke valgrind. Log output:

[task 2019-05-06T22:39:57.072Z] 22:39:57     INFO -   7:56.59 TEST-UNEXPECTED-FAIL | valgrind-test | Syscall param sendmsg(msg.msg_iov[0]) points to uninitialised byte(s) at ??? / IPC::Channel::ChannelImpl::ProcessOutgoingMessages / IPC::Channel::ChannelImpl::Send / applyImpl
[task 2019-05-06T22:39:57.072Z] 22:39:57     INFO -   7:56.59 ==3274== Syscall param sendmsg(msg.msg_iov[0]) points to uninitialised byte(s)
[task 2019-05-06T22:39:57.072Z] 22:39:57     INFO -   7:56.59 ==3274==    at 0x4E4372D: ??? (syscall-template.S:82)
[task 2019-05-06T22:39:57.072Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF2A2963: IPC::Channel::ChannelImpl::ProcessOutgoingMessages()+835 (ipc/chromium/src/chrome/common/ipc_channel_posix.cc:689)
[task 2019-05-06T22:39:57.072Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF2A3CBA: IPC::Channel::ChannelImpl::Send(IPC::Message*)+250 (ipc/chromium/src/chrome/common/ipc_channel_posix.cc:796)
[task 2019-05-06T22:39:57.072Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF2D7CBA: applyImpl<IPC::Channel, bool (IPC::Channel::*)(IPC::Message *), StorePtrPassByPtr<IPC::Message> , 0> (dist/include/nsThreadUtils.h:1122)
[task 2019-05-06T22:39:57.072Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF2D7CBA: apply<IPC::Channel, bool (IPC::Channel::*)(IPC::Message *)> (dist/include/nsThreadUtils.h:1128)
[task 2019-05-06T22:39:57.072Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF2D7CBA: mozilla::detail::RunnableMethodImpl<IPC::Channel*, bool (IPC::Channel::*)(IPC::Message*), false, (mozilla::RunnableKind)0, IPC::Message*>::Run()+42 (dist/include/nsThreadUtils.h:1174)
[task 2019-05-06T22:39:57.072Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF296E52: RunTask (ipc/chromium/src/base/message_loop.cc:442)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF296E52: DeferOrRunPendingTask (ipc/chromium/src/base/message_loop.cc:450)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF296E52: MessageLoop::DoWork()+834 (ipc/chromium/src/base/message_loop.cc:523)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF297D68: base::MessagePumpLibevent::Run(base::MessagePump::Delegate*)+280 (ipc/chromium/src/base/message_pump_libevent.cc:321)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF296485: RunInternal (ipc/chromium/src/base/message_loop.cc:315)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF296485: RunHandler (ipc/chromium/src/base/message_loop.cc:308)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF296485: MessageLoop::Run()+85 (ipc/chromium/src/base/message_loop.cc:290)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF29EFE8: base::Thread::ThreadMain()+440 (ipc/chromium/src/base/thread.cc:192)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF29BB29: ThreadFunc(void*)+9 (ipc/chromium/src/base/platform_thread_posix.cc:40)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0x4E3BB4F: start_thread+207 (pthread_create.c:304)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0x57BCFBC: clone+108 (clone.S:112)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==  Address 0x19810765 is 1,413 bytes inside a block of size 8,192 alloc'd
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    at 0x4C2B240: malloc+112 (vg_replace_malloc.c:298)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0x11076D: moz_xmalloc+13 (memory/mozalloc/mozalloc.cpp:68)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF29D370: pod_malloc<char> (dist/include/mozilla/mozalloc.h:210)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.59 ==3274==    by 0xF29D370: mozilla::BufferList<InfallibleAllocPolicy>::AllocateSegment(unsigned long, unsigned long)+32 (dist/include/mozilla/BufferList.h:383)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF2980C7: BufferList (dist/include/mozilla/BufferList.h:87)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF2980C7: Pickle::Pickle(unsigned int, unsigned long)+103 (ipc/chromium/src/base/pickle.cc:130)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF2A41CC: IPC::Message::Message(int, unsigned int, unsigned int, IPC::Message::HeaderFlags, bool)+44 (ipc/chromium/src/chrome/common/ipc_message.cc:57)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF429111: Msg_Update (PLayerTransaction.cpp:31)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF429111: mozilla::layers::PLayerTransactionChild::SendUpdate(mozilla::layers::TransactionInfo const&)+81 (PLayerTransactionChild.cpp:52)
[task 2019-05-06T22:39:57.073Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xFB1980C: mozilla::layers::ShadowLayerForwarder::EndTransaction(mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::layers::BaseTransactionId<mozilla::layers::TransactionIdType>, bool, unsigned int, bool, mozilla::layers::BaseTransactionId<mozilla::VsyncIdType> const&, mozilla::TimeStamp const&, mozilla::TimeStamp const&, mozilla::TimeStamp const&, bool, nsTString<char> const&, bool*, nsTArray<mozilla::layers::CompositionPayload> const&)+6044 (gfx/layers/ipc/ShadowLayers.cpp:710)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xFA9F272: mozilla::layers::ClientLayerManager::ForwardTransaction(bool)+626 (gfx/layers/client/ClientLayerManager.cpp:705)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xFA9EF77: mozilla::layers::ClientLayerManager::EndTransaction(void (*)(mozilla::layers::PaintedLayer*, gfxContext*, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, mozilla::layers::DrawRegionClip, mozilla::gfx::IntRegionTyped<mozilla::gfx::UnknownUnits> const&, void*), void*, mozilla::layers::LayerManager::EndTransactionFlags)+183 (gfx/layers/client/ClientLayerManager.cpp:385)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1180F4C8: nsDisplayList::PaintRoot(nsDisplayListBuilder*, gfxContext*, unsigned int)+1704 (layout/painting/nsDisplayList.cpp:2878)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1158ABE6: nsLayoutUtils::PaintFrame(gfxContext*, nsIFrame*, nsRegion const&, unsigned int, nsDisplayListBuilderMode, nsLayoutUtils::PaintFrameFlags)+9142 (layout/base/nsLayoutUtils.cpp:3994)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1153A011: mozilla::PresShell::Paint(nsView*, nsRegion const&, mozilla::PaintFlags)+1265 (layout/base/PresShell.cpp:6074)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1133EC13: nsViewManager::ProcessPendingUpdatesPaint(nsIWidget*)+435 (view/nsViewManager.cpp:462)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1133E8D4: nsViewManager::ProcessPendingUpdatesForView(nsView*, bool)+532 (view/nsViewManager.cpp:397)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1133D3FD: ProcessPendingUpdates (view/nsViewManager.cpp:1020)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1133D3FD: nsViewManager::WillPaintWindow(nsIWidget*)+221 (view/nsViewManager.cpp:667)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1133D2DA: nsView::WillPaintWindow(nsIWidget*)+26 (view/nsView.cpp:990)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1135DB67: mozilla::widget::PuppetWidget::Paint()+439 (widget/PuppetWidget.cpp:996)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x110C796E: mozilla::dom::BrowserChild::RecvRenderLayers(bool const&, bool const&, mozilla::layers::LayersObserverEpoch const&)+814 (dom/ipc/BrowserChild.cpp:2496)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF58F165: mozilla::dom::PBrowserChild::OnMessageReceived(IPC::Message const&)+2821 (PBrowserChild.cpp:5311)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF362B7F: mozilla::dom::PContentChild::OnMessageReceived(IPC::Message const&)+927 (PContentChild.cpp:6510)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF2CEEC1: mozilla::ipc::MessageChannel::DispatchAsyncMessage(IPC::Message const&)+97 (ipc/glue/MessageChannel.cpp:2151)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF2CE0C1: mozilla::ipc::MessageChannel::DispatchMessage(IPC::Message&&)+289 (ipc/glue/MessageChannel.cpp:2078)
[task 2019-05-06T22:39:57.074Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF2CE7FE: mozilla::ipc::MessageChannel::RunMessage(mozilla::ipc::MessageChannel::MessageTask&)+446 (ipc/glue/MessageChannel.cpp:1937)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF2CEA7D: mozilla::ipc::MessageChannel::MessageTask::Run()+77 (ipc/glue/MessageChannel.cpp:1968)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEDF485D: mozilla::SchedulerGroup::Runnable::Run()+45 (xpcom/threads/SchedulerGroup.cpp:295)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEE03DCC: nsThread::ProcessNextEvent(bool, bool*)+1596 (xpcom/threads/nsThread.cpp:1180)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEE05E17: NS_ProcessNextEvent(nsIThread*, bool)+71 (xpcom/threads/nsThreadUtils.cpp:486)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF2D1099: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*)+217 (ipc/glue/MessagePump.cpp:88)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: RunInternal (ipc/chromium/src/base/message_loop.cc:315)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: RunHandler (ipc/chromium/src/base/message_loop.cc:308)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: MessageLoop::Run()+85 (ipc/chromium/src/base/message_loop.cc:290)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x11369F88: nsBaseAppShell::Run()+40 (widget/nsBaseAppShell.cpp:137)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1252D173: XRE_RunAppShell()+67 (toolkit/xre/nsEmbedFunctions.cpp:919)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: RunInternal (ipc/chromium/src/base/message_loop.cc:315)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: RunHandler (ipc/chromium/src/base/message_loop.cc:308)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: MessageLoop::Run()+85 (ipc/chromium/src/base/message_loop.cc:290)
[task 2019-05-06T22:39:57.075Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1252CFF7: XRE_InitChildProcess(int, char**, XREChildData const*)+1031 (toolkit/xre/nsEmbedFunctions.cpp:757)
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x10FBB7: content_process_main (browser/app/../../ipc/contentproc/plugin-container.cpp:56)
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x10FBB7: main+423 (browser/app/nsBrowserApp.cpp:263)
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60 ==3274==
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60 {
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    <insert_a_suppression_name_here>
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    Memcheck:Param
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    sendmsg(msg.msg_iov[0])
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    obj:/lib/x86_64-linux-gnu/libpthread-2.13.so
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    fun:_ZN3IPC7Channel11ChannelImpl23ProcessOutgoingMessagesEv
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    fun:_ZN3IPC7Channel11ChannelImpl4SendEPNS_7MessageE
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    fun:applyImpl<IPC::Channel, bool (IPC::Channel::*)(IPC::Message *), StorePtrPassByPtr<IPC::Message> , 0>
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    fun:apply<IPC::Channel, bool (IPC::Channel::*)(IPC::Message *)>
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    fun:_ZN7mozilla6detail18RunnableMethodImplIPN3IPC7ChannelEMS3_FbPNS2_7MessageEELb0ELNS_12RunnableKindE0EJS6_EE3RunEv
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    fun:RunTask
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    fun:DeferOrRunPendingTask
[task 2019-05-06T22:39:57.076Z] 22:39:57     INFO -   7:56.60    fun:_ZN11MessageLoop6DoWorkEv
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60    fun:_ZN4base19MessagePumpLibevent3RunEPNS_11MessagePump8DelegateE
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60    fun:RunInternal
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60    fun:RunHandler
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60    fun:_ZN11MessageLoop3RunEv
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60    fun:_ZN4base6Thread10ThreadMainEv
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60    fun:_ZL10ThreadFuncPv
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60    fun:start_thread
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60    fun:clone
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60 }
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60 ==3274==
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60 ==3274== 1 errors in context 2 of 302:
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60 ==3274== Thread 1 Privileged Conte:
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60 TEST-UNEXPECTED-FAIL | valgrind-test | Conditional jump or move depends on uninitialised value(s) at std::sync::once::Once::call_once:: / std::sync::once::Once::call_inner / Servo_StyleSheet_FromUTF8BytesAsync / mozilla::StyleSheet::ParseSheet
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60 ==3274== Conditional jump or move depends on uninitialised value(s)
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60 ==3274==    at 0x136AFA16: std::sync::once::Once::call_once::{{closure}}+662 (ptr.rs:193)
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x13743B69: std::sync::once::Once::call_inner+265 (once.rs:387)
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x133D7137: Servo_StyleSheet_FromUTF8BytesAsync+423 (once.rs:220)
[task 2019-05-06T22:39:57.077Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x114DE73A: mozilla::StyleSheet::ParseSheet(mozilla::css::Loader*, nsTSubstring<char> const&, mozilla::css::SheetLoadData*)+346 (layout/style/StyleSheet.cpp:961)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x114CB83A: mozilla::css::Loader::ParseSheet(nsTSubstring<char> const&, mozilla::css::SheetLoadData*, mozilla::css::Loader::AllowAsyncParse)+266 (layout/style/Loader.cpp:1594)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x114DA2F0: mozilla::css::StreamLoader::OnStopRequest(nsIRequest*, nsresult)+416 (layout/style/StreamLoader.cpp:109)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEE89CB3: nsBaseChannel::OnStopRequest(nsIRequest*, nsresult)+115 (netwerk/base/nsBaseChannel.cpp:812)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEE89D7C: non-virtual thunk to nsBaseChannel::OnStopRequest(nsIRequest*, nsresult)+12 (netwerk/base/nsBaseChannel.cpp:0)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEEA14AC: nsInputStreamPump::OnStateStop()+300 (netwerk/base/nsInputStreamPump.cpp:655)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEEA0D26: nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream*)+326 (netwerk/base/nsInputStreamPump.cpp:403)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEDD9170: nsInputStreamReadyEvent::Run()+32 (xpcom/io/nsStreamUtils.cpp:91)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEDF485D: mozilla::SchedulerGroup::Runnable::Run()+45 (xpcom/threads/SchedulerGroup.cpp:295)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEE03DCC: nsThread::ProcessNextEvent(bool, bool*)+1596 (xpcom/threads/nsThread.cpp:1180)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xEE05E17: NS_ProcessNextEvent(nsIThread*, bool)+71 (xpcom/threads/nsThreadUtils.cpp:486)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF2D1099: mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*)+217 (ipc/glue/MessagePump.cpp:88)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: RunInternal (ipc/chromium/src/base/message_loop.cc:315)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: RunHandler (ipc/chromium/src/base/message_loop.cc:308)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: MessageLoop::Run()+85 (ipc/chromium/src/base/message_loop.cc:290)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x11369F88: nsBaseAppShell::Run()+40 (widget/nsBaseAppShell.cpp:137)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1252D173: XRE_RunAppShell()+67 (toolkit/xre/nsEmbedFunctions.cpp:919)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: RunInternal (ipc/chromium/src/base/message_loop.cc:315)
[task 2019-05-06T22:39:57.078Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: RunHandler (ipc/chromium/src/base/message_loop.cc:308)
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0xF296485: MessageLoop::Run()+85 (ipc/chromium/src/base/message_loop.cc:290)
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x1252CFF7: XRE_InitChildProcess(int, char**, XREChildData const*)+1031 (toolkit/xre/nsEmbedFunctions.cpp:757)
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x10FBB7: content_process_main (browser/app/../../ipc/contentproc/plugin-container.cpp:56)
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60 ==3274==    by 0x10FBB7: main+423 (browser/app/nsBrowserApp.cpp:263)
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60 ==3274==  Uninitialised value was created by a stack allocation
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60 ==3274==    at 0x136AF78A: std::sync::once::Once::call_once::{{closure}}+10 (once.rs:220)
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60 ==3274==
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60 {
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    <insert_a_suppression_name_here>
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    Memcheck:Cond
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN3std4sync4once4Once9call_once28_$u7b$$u7b$closure$u7d$$u7d$17ha9f40b9218583a55E
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN3std4sync4once4Once10call_inner17hb33e6c6eb70a145cE
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:Servo_StyleSheet_FromUTF8BytesAsync
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN7mozilla10StyleSheet10ParseSheetEPNS_3css6LoaderERK12nsTSubstringIcEPNS1_13SheetLoadDataE
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN7mozilla3css6Loader10ParseSheetERK12nsTSubstringIcEPNS0_13SheetLoadDataENS1_15AllowAsyncParseE
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN7mozilla3css12StreamLoader13OnStopRequestEP10nsIRequest8nsresult
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN13nsBaseChannel13OnStopRequestEP10nsIRequest8nsresult
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZThn128_N13nsBaseChannel13OnStopRequestEP10nsIRequest8nsresult
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN17nsInputStreamPump11OnStateStopEv
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN17nsInputStreamPump18OnInputStreamReadyEP19nsIAsyncInputStream
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN23nsInputStreamReadyEvent3RunEv
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN7mozilla14SchedulerGroup8Runnable3RunEv
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_ZN8nsThread16ProcessNextEventEbPb
[task 2019-05-06T22:39:57.079Z] 22:39:57     INFO -   7:56.60    fun:_Z19NS_ProcessNextEventP9nsIThreadb
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:_ZN7mozilla3ipc11MessagePump3RunEPN4base11MessagePump8DelegateE
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:RunInternal
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:RunHandler
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:_ZN11MessageLoop3RunEv
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:_ZN14nsBaseAppShell3RunEv
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:_Z15XRE_RunAppShellv
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:RunInternal
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:RunHandler
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:_ZN11MessageLoop3RunEv
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:_Z20XRE_InitChildProcessiPPcPK12XREChildData
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:content_process_main
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60    fun:main
[task 2019-05-06T22:39:57.080Z] 22:39:57     INFO -   7:56.60 }

AFAICT it's complaining about an uninitialized something, and the something is in stylo or other rust code. So I don't understand how I broke that, as I didn't touch any of it... if valgrind is running with e10s disabled, perhaps that's it, but if so I can find no evidence of such a configuration...

I seem to remember there being some weirdness / flakiness with valgrind suppressions. If the callstacks changed somehow that could certainly trigger it (because we whitelist stacks in various places), but this patch would have to change that somehow.

OK, I've figured this out, the issue is that the valgrind test right now runs without e10s. It uses the unittest-required profile preferences through:

https://searchfox.org/mozilla-central/rev/e7d9a8749303b39dadcc0e18ea0d60a570a68145/build/valgrind/mach_commands.py#66-76

which reads profiles.json:

https://searchfox.org/mozilla-central/source/testing/profiles/profiles.json

which has:

    "valgrind": ["base", "common", "unittest-required", "unittest-features"],

and unittest-required has:

https://searchfox.org/mozilla-central/rev/99a2a5a955960b0e58ceade1db1f7652d9db4ba1/testing/profiles/unittest-required/user.js#56

user_pref("browser.tabs.remote.autostart", false);

OK, so why doesn't it still run in non-e10s after my changes? Well, my patch expects that xpc::IsInAutomation returns the right thing here. It doesn't.

IsInAutomation cares about 2 things - the should-be-infamous "let viruses take over my computer" pref (which is set in the "common" user.js file so that's fine) and AreNonLocalConnectionsDisabled(). That looks like this:

  if (disabledForTest == -1) {
    char* s = getenv("MOZ_DISABLE_NONLOCAL_CONNECTIONS");
    if (s) {
      disabledForTest = *s != '0';
    } else {
      disabledForTest = 0;
    }
  }

Looking for MOZ_DISABLE_NONLOCAL_CONNECTIONS shows that a bunch of places are setting this themselves (talos, raptor, wpt, xpcshell, "mozrunner" (used for a variety of tests, I believe), junit, and various C++ unittests). This in addition to build/automation.py.in, which naively I would have expected has some kind of shared routine for this (which it does, it just doesn't seem to be used everywhere).

Anyway, suffice it to say, it's not set for valgrind. Fixing that fixes the failures:

https://treeherder.mozilla.org/#/jobs?repo=try&revision=2a63d5538d003a26207f5ee10ba7cbc7dc572200

Of course, longer-term, we should switch valgrind to use e10s, and we should probably look at how these env vars are set. I'll file follow-ups for that.

Flags: needinfo?(gijskruitbosch+bugs)
Attachment #9062603 - Attachment description: Bug 1548941 - remove e10s force-enable and force-disable prefs, and on desktop restrict 'normal' e10s pref to automation and unofficial builds, r?bholley,Mossop → Bug 1548941 - remove e10s force-enable and force-disable prefs, and on desktop restrict 'normal' e10s pref to automation and unofficial builds, r?bholley,ahal!
Blocks: 1549855
Depends on: 1549856
Blocks: 1549856
No longer depends on: 1549856
Blocks: 1549857
Pushed by gijskruitbosch@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/4e2250bbaed3
remove e10s force-enable and force-disable prefs, and on desktop restrict 'normal' e10s pref to automation and unofficial builds, r=bholley,ahal

This would all be funny if it wasn't so tragic (and a little annoying, at this point).

OK... gtest is easy, it's basically the same as comment #8, it needs MOZ_DISABLE_NONLOCAL_CONNECTIONS setting (and then, again, perhaps a conversation about whether that test should run with e10s turned on, given that it's hitting assertions if not, at a naive level that seems Not Good - but not my problem right now).

xpcshell is more fun. https://searchfox.org/mozilla-central/source/testing/profiles/profiles.json indicates every test framework loads https://searchfox.org/mozilla-central/source/testing/profiles/common/user.js#49 . Every test framework? No, one test framework is bravely holding out... etc. etc.

Right, so xpcshell doesn't set the let_viruses_take_over pref, so isInAutomation returns false, and as a result we ignore xpcshell's attempts to turn off e10s with the usual pref, and then the win7 GPU process infrastructure gets very upset on debug for... reasons (that, to be frank, I haven't fully figured out yet, but ISTM we shouldn't be changing the larger behaviour here so I don't think it's super relevant atm).

I'm not 100% sure what to do about this. Some options:

  1. set this pref for all of xpcshell and turn it off for tests that need xpconnect to behave the "normal" way.
  2. set this pref for the test_gpuprocess.js (if possible; we can't set prefs in manifests for xpcshell, and I expect setting it at runtime from the test might be too late for it to have the desired effect)
  3. fix whatever is making the test fail on win7 debug only when run on infra with e10s on (perhaps turning it off on win7 debug temporarily to move that work to a follow-up bug).
  4. switch the main patch here to use something other than xpc::IsInAutomation() to determine whether we're in automation (perhaps only the AreNonLocalConnectionsDisabled() bit?)

Bobby, seeing as you know about almost all the components here (gfx, xpconnect, this patch / e10s longer-term plans), do you have a preference? I'm leaning towards either (3) or (4) but could be convinced to go for any of these...

Flags: needinfo?(gijskruitbosch+bugs) → needinfo?(bobbyholley)

Hm, it also seems that gtest is still unhappy after setting MOZ_DISABLE_NONLOCAL_CONNECTIONS, so I'll have to debug that some more... I expect we don't set the pref there either, as I imagine there's no profile.

OK, based on the fact that there's no prefs in gtest (beyond app defaults), gonna just go for the AreNonLocalConnectionsDisabled() check, even if it's a bit ugly.

Flags: needinfo?(bobbyholley)
Attachment #9062603 - Attachment description: Bug 1548941 - remove e10s force-enable and force-disable prefs, and on desktop restrict 'normal' e10s pref to automation and unofficial builds, r?bholley,ahal! → Bug 1548941 - remove e10s force-enable and force-disable prefs, and on desktop restrict 'normal' e10s pref to automation and unofficial builds, r=bholley,ahal
Pushed by gijskruitbosch@gmail.com:
https://hg.mozilla.org/integration/autoland/rev/d62e8172a66f
remove e10s force-enable and force-disable prefs, and on desktop restrict 'normal' e10s pref to automation and unofficial builds, r=bholley,ahal
Status: ASSIGNED → RESOLVED
Closed: 7 months ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 68
Blocks: 1552140
Blocks: 1552442

Bugzilla is a bugtracker, not a discussion forum, and this isn't the right place to try to rehash this decision, so I'm going to restrict comments.

There was a newsgroup thread (see mozilla-dev-platform, subject "Lack of browser mochitests in non-e10s configuration and support for turning off e10s on desktop going forward", April of this year) prior to this change, and broad consensus that no, we do not intend to support single-process mode for desktop going forward, except for some local debugging needs. The security and performance impact to users is such that it would be counter to our values to do so. That's less about speculation attacks and more about sandboxing web content to ensure there are several layers of security between malicious web content and your machine. It wasn't always necessary for users to use about:config to flip the pref in order for that to happen, hence the desire to restrict the use of the pref so people aren't grandfathered into an insecure configuration without realizing.

Yes, memory usage is slightly higher than in single process mode in some cases. We're constantly working to bring that overhead down even further than we already have, and there are responsiveness benefits in turning on multiprocess as well, so it's not some kind of complete performance loss. If there are specific bugs when using multiple processes that you feel aren't getting the right attention then please ping the triage owner of the relevant component in that bug, not here. On the whole, we're confident about the trade-offs here and I don't see us revisiting this decision.

Restrict Comments: true
See Also: → 1568333
You need to log in before you can comment on or make changes to this bug.