http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45375
--- Comment #201 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- With current gcc trunk and mozilla-central trunk Firefox crashes on startup when build with -flto (--enable-optimize=-O3): 0x00007ffff5ce5d8f in nsCOMPtr_base::assign_with_AddRef(nsISupports*) [clone .constprop.13162] () from /var/tmp/moz-build-dir/dist/bin/libxul.so (gdb) bt #0 0x00007ffff5ce5d8f in nsCOMPtr_base::assign_with_AddRef(nsISupports*) [clone .constprop.13162] () from /var/tmp/moz-build-dir/dist/bin/libxul.so #1 0x00007ffff3fe60eb in nsSocketTransport::OnSocketDetached(PRFileDesc*) () from /var/tmp/moz-build-dir/dist/bin/libxul.so #2 0x00007ffff3eb74ac in nsSocketTransportService::DetachSocket(nsSocketTransportService::SocketContext*, nsSocketTransportService::SocketContext*) () from /var/tmp/moz-build-dir/dist/bin/libxul.so #3 0x00007ffff3fff28f in nsSocketTransportService::Run() () from /var/tmp/moz-build-dir/dist/bin/libxul.so #4 0x00007ffff4059c6a in nsThread::ProcessNextEvent(bool, bool*) () from /var/tmp/moz-build-dir/dist/bin/libxul.so #5 0x00007ffff5ce5b39 in NS_ProcessNextEvent(nsIThread*, bool) [clone .constprop.13167] () from /var/tmp/moz-build-dir/dist/bin/libxul.so #6 0x00007ffff45af7a0 in mozilla::ipc::MessagePumpForNonMainThreads::Run(base::MessagePump::Delegate*) () from /var/tmp/moz-build-dir/dist/bin/libxul.so #7 0x00007ffff3ec649d in MessageLoop::Run() () from /var/tmp/moz-build-dir/dist/bin/libxul.so #8 0x00007ffff3fe7a56 in nsThread::ThreadFunc(void*) () from /var/tmp/moz-build-dir/dist/bin/libxul.so #9 0x00007ffff7e7757c in _pt_root () from /var/tmp/moz-build-dir/dist/bin/libnspr4.so #10 0x00007ffff7bc41e2 in start_thread () from /lib/libpthread.so.0 #11 0x00007ffff74932ad in clone () from /lib/libc.so.6 When I build with PGO/LTO Firefox crashes later (when I close a tab with e.g.: https://github.com/JuliaLang/julia/pull/6018 ): Program received signal SIGSEGV, Segmentation fault. 0x00007ffff51645ed in PL_DHashTableEnumerate(PLDHashTable*, PLDHashOperator (*)(PLDHashTable*, PLDHashEntryHdr*, unsigned int, void*), void*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so (gdb) bt #0 0x00007ffff51645ed in PL_DHashTableEnumerate(PLDHashTable*, PLDHashOperator (*)(PLDHashTable*, PLDHashEntryHdr*, unsigned int, void*), void*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #1 0x00007ffff5754d32 in PresShell::Destroy() () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #2 0x00007ffff5754831 in nsDocumentViewer::DestroyPresShell() () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #3 0x00007ffff55ee5c4 in nsDocumentViewer::Hide() () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #4 0x00007ffff57b72eb in nsDocShell::SetVisibility(bool) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #5 0x00007ffff5a589a4 in nsFrameLoader::Hide() () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #6 0x00007ffff5a588f6 in nsHideViewer::Run() () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #7 0x00007ffff53b97de in nsContentUtils::RemoveScriptBlocker() () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #8 0x00007ffff53cc954 in nsDocument::EndUpdate(unsigned int) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #9 0x00007ffff5651dd6 in mozilla::dom::XULDocument::EndUpdate(unsigned int) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #10 0x00007ffff549673b in nsINode::doRemoveChildAt(unsigned int, bool, nsIContent*, nsAttrAndChildArray&) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #11 0x00007ffff5496085 in nsXULElement::RemoveChildAt(unsigned int, bool) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #12 0x00007ffff5494df9 in nsINode::RemoveChild(nsINode&, mozilla::ErrorResult&) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #13 0x00007ffff5494a00 in mozilla::dom::NodeBinding::removeChild(JSContext*, JS::Handle<JSObject*>, nsINode*, JSJitMethodCallArgs const&) [clone .lto_priv.13709] () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #14 0x00007ffff53b01e7 in mozilla::dom::GenericBindingMethod(JSContext*, unsigned int, JS::Value*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #15 0x00007ffff5262744 in js::Invoke(JSContext*, JS::CallArgs, js::MaybeConstruct) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #16 0x00007ffff524a14c in Interpret(JSContext*, js::RunState&) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #17 0x00007ffff5249801 in js::RunScript(JSContext*, js::RunState&) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #18 0x00007ffff52627ec in js::Invoke(JSContext*, JS::CallArgs, js::MaybeConstruct) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #19 0x00007ffff52a574c in js::Invoke(JSContext*, JS::Value const&, JS::Value const&, unsigned int, JS::Value const*, JS::MutableHandle<JS::Value>) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #20 0x00007ffff55c553d in nsJSEventListener::HandleEvent(nsIDOMEvent*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #21 0x00007ffff5869106 in nsXBLPrototypeHandler::ExecuteHandler(mozilla::dom::EventTarget*, nsIDOMEvent*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #22 0x00007ffff5868554 in nsXBLEventHandler::HandleEvent(nsIDOMEvent*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #23 0x00007ffff5402b6c in nsEventListenerManager::HandleEventInternal(nsPresContext*, mozilla::WidgetEvent*, nsIDOMEvent**, mozilla::dom::EventTarget*, nsEventStatus*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #24 0x00007ffff53c38b2 in nsEventTargetChainItem::HandleEventTargetChain(nsTArray<nsEventTargetChainItem>&, nsEventChainPostVisitor&, nsDispatchingCallback*, ELMCreationDetector&) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #25 0x00007ffff53c1fe7 in nsEventDispatcher::Dispatch(nsISupports*, nsPresContext*, mozilla::WidgetEvent*, nsIDOMEvent*, nsEventStatus*, nsDispatchingCallback*, nsCOMArray<mozilla::dom::EventTarget>*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #26 0x00007ffff5a686c5 in nsTransitionManager::FlushTransitions(mozilla::css::CommonAnimationManager::FlushFlags) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #27 0x00007ffff563309f in nsRefreshDriver::Tick(long, mozilla::TimeStamp) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #28 0x00007ffff56325ac in mozilla::RefreshDriverTimer::TimerTick(nsITimer*, void*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #29 0x00007ffff54a32f7 in nsTimerEvent::Run() () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #30 0x00007ffff5166651 in nsThread::ProcessNextEvent(bool, bool*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #31 0x00007ffff5627914 in mozilla::ipc::MessagePump::Run(base::MessagePump::Delegate*) () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #32 0x00007ffff5146183 in MessageLoop::Run() () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #33 0x00007ffff562770a in nsBaseAppShell::Run() () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #34 0x00007ffff56276be in nsAppStartup::Run() () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #35 0x00007ffff5136f58 in XRE_main () from /var/tmp/firefox-destdir/usr/lib/firefox-30.0a1/libxul.so #36 0x000000000040aa58 in do_main(int, char**, nsIFile*) [clone .lto_priv.18] () #37 0x000000000040a285 in main () A "vanilla" build without PGO or LTO runs fine.