Closed
Bug 591376
Opened 15 years ago
Closed 7 years ago
e10s: Make sure our event loop is NOT pumped by libmeegotouch
Categories
(Firefox for Android Graveyard :: General, defect)
Tracking
(Not tracked)
RESOLVED
WONTFIX
People
(Reporter: crowderbt, Unassigned)
Details
Here's the problem:
ExternalHelperAppParent builds a new nsExternalAppHandler to deal with downloads and external-apps. That AppHandler ends up doing (iirc) a MIME query that invokes one of the MeeGo system libraries which can, in turn, signal us! This is bad because it causes the IPC message loop to be pumped AS we're handling a message already.
The issue is mitigated by the landing of this fix:
http://meego.gitorious.org/meegotouch/libmeegotouch/commit/fb87a4ee098ef391749e6f628c09c51565dea0a4
If this landing doesn't stick or regresses for some reason, we will have to implement a message buffer for ExternalHelperAppParent, to save it from this potential bug.
In any case, the code can probably be made more robust. As it stands, it assumes that it cannot be invoked in this way and so accesses its "mHandler" variable in an unguarded way. That patch would be easy to do.
This doesn't/shouldn't block because the fix exists on the MeeGo side, but we should be testing for it before releases on this platform.
I filed this against Fennec, even though it is in many ways a Core:Networking bug. It's better here, visibility-wise, because it is fixed external to Fennec (for now?).
| Reporter | ||
Comment 1•15 years ago
|
||
For now, this will need manual testing on this platform. The test procedure is simply to ensure that downloads work.
Flags: in-testsuite?
| Reporter | ||
Comment 2•15 years ago
|
||
Here's a stack of the offending behavior happening:
Breakpoint 1, mozilla::dom::ExternalHelperAppParent::RecvOnStartRequest (this=0xae3e9a90)
at /microb-engine/build-tree/mozilla/uriloader/exthandler/ExternalHelperAppParent.cpp:93
93 mPending = PR_TRUE;
Current language: auto
The current source language is "auto; currently c++".
(gdb) bt
#0 mozilla::dom::ExternalHelperAppParent::RecvOnStartRequest (this=0xae3e9a90)
at /microb-engine/build-tree/mozilla/uriloader/exthandler/ExternalHelperAppParent.cpp:93
#1 0xb6cd87a9 in mozilla::dom::PExternalHelperAppParent::OnMessageReceived (this=0xae3e9a90, __msg=...) at PExternalHelperAppParent.cpp:125
#2 0xb6cf60cd in mozilla::dom::PContentParent::OnMessageReceived (this=0xae9b9050, __msg=...) at PContentParent.cpp:337
#3 0xb6ccb200 in mozilla::ipc::AsyncChannel::OnDispatchMessage (this=0xae9b9058, msg=...)
at /microb-engine/build-tree/mozilla/ipc/glue/AsyncChannel.cpp:262
#4 0xb6cd1bc3 in mozilla::ipc::RPCChannel::OnMaybeDequeueOne (this=0xae9b9058)
at /microb-engine/build-tree/mozilla/ipc/glue/RPCChannel.cpp:438
#5 0xb6cd5295 in DispatchToMethod<mozilla::ipc::RPCChannel, bool (mozilla::ipc::RPCChannel::*)()> (this=0xb36f6b40)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/tuple.h:383
#6 RunnableMethod<mozilla::ipc::RPCChannel, bool (mozilla::ipc::RPCChannel::*)(), Tuple0>::Run (this=0xb36f6b40)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/task.h:307
#7 0xb6cd5204 in mozilla::ipc::RPCChannel::RefCountedTask::Run (this=0xae4a8d80) at ../../dist/include/mozilla/ipc/RPCChannel.h:448
#8 mozilla::ipc::RPCChannel::DequeueTask::Run (this=0xae4a8d80) at ../../dist/include/mozilla/ipc/RPCChannel.h:473
#9 0xb6e5f685 in MessageLoop::RunTask (this=0xb7538a60, task=0xae4a8d80)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/message_loop.cc:343
#10 0xb6e5fea2 in MessageLoop::DeferOrRunPendingTask (this=0xb7538a60, pending_task=...)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/message_loop.cc:351
#11 0xb6e61cb7 in MessageLoop::DoWork (this=0xb7538a60)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/message_loop.cc:451
#12 0xb6ccf0cd in mozilla::ipc::DoWorkRunnable::Run (this=0xb5ea8740)
at /microb-engine/build-tree/mozilla/ipc/glue/MessagePump.cpp:70
#13 0xb6e15b7a in nsThread::ProcessNextEvent (this=0xb5e16e70, mayWait=0, result=0xbffe1ec8)
at /microb-engine/build-tree/mozilla/xpcom/threads/nsThread.cpp:547
#14 0xb6dd1eed in NS_ProcessPendingEvents_P (thread=0xb5e16e70, timeout=20) at nsThreadUtils.cpp:200
#15 0xb6c5a8df in nsBaseAppShell::NativeEventCallback (this=0xb547ddd8)
at /microb-engine/build-tree/mozilla/widget/src/xpwidgets/nsBaseAppShell.cpp:126
#16 0xb6c3e79f in nsAppShell::event (this=0xb547ddd0, e=0xac9ec790)
at /microb-engine/build-tree/mozilla/widget/src/qt/nsAppShell.cpp:120
#17 0x00f6e039 in QApplicationPrivate::notify_helper (this=0xb7538520, receiver=0xb547ddd0, e=0xac9ec790) at kernel/qapplication.cpp:4399
#18 0x00f75577 in QApplication::notify (this=0xb756f7f0, receiver=0xb547ddd0, e=0xac9ec790) at kernel/qapplication.cpp:4364
#19 0x005815e8 in QCoreApplication::notifyInternal (this=0xb756f7f0, receiver=0xb547ddd0, event=0xac9ec790) at kernel/qcoreapplication.cpp:732
#20 0x00582574 in QCoreApplication::sendEvent (receiver=0x0, event_type=0, data=0xb7506080) at kernel/qcoreapplication.h:215
#21 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0xb7506080) at kernel/qcoreapplication.cpp:1373
#22 0x00582827 in QCoreApplication::sendPostedEvents (receiver=0x0, event_type=0) at kernel/qcoreapplication.cpp:1266
#23 0x00c38e43 in QCoreApplication::sendPostedEvents (locale=...) at /usr/include/qt4/QtCore/qcoreapplication.h:220
#24 MLocale::setDefault (locale=...) at /home/bifh7/harmattan-i386-unreleased.cs2009q1/work/libmeegotouch-0.20.32/src/corelib/i18n/mlocale.cpp:1160
---Type <return> to continue, or q <return> to quit---
#25 0x00b9727a in MDesktopEntryPrivate (this=0xae9e4800, fileName=...)
at /home/bifh7/harmattan-i386-unreleased.cs2009q1/work/libmeegotouch-0.20.32/src/corelib/core/mdesktopentry.cpp:66
#26 0x00b977c8 in MDesktopEntry (this=0xae4a8dc0, fileName=...)
at /home/bifh7/harmattan-i386-unreleased.cs2009q1/work/libmeegotouch-0.20.32/src/corelib/core/mdesktopentry.cpp:176
#27 0x03ffecca in ?? () from /usr/lib/libcontentaction.so.0
#28 0x0400a9ea in ContentAction::Action::defaultActionForFile(QUrl const&, QString const&) () from /usr/lib/libcontentaction.so.0
#29 0xb6a8d078 in nsMIMEInfoUnix::GetHasDefaultHandler (this=0xac9ef400, _retval=0xbffe2748)
at /microb-engine/build-tree/mozilla/uriloader/exthandler/unix/nsMIMEInfoUnix.cpp:124
#30 0xb6a8c2d7 in nsOSHelperAppService::GetMIMEInfoFromOS (this=0xb54a73d0, aType=..., aFileExt=..., aFound=0xbffe28e8)
at /microb-engine/build-tree/mozilla/uriloader/exthandler/unix/nsOSHelperAppService.cpp:1569
#31 0xb6a83b64 in nsExternalHelperAppService::GetFromTypeAndExtension (this=0xb54a73d0, aMIMEType=..., aFileExt=..., _retval=0xbffe2d08)
at /microb-engine/build-tree/mozilla/uriloader/exthandler/nsExternalHelperAppService.cpp:2577
#32 0xb6a82cd7 in nsExternalHelperAppService::DoContent (this=0xb54a73d0, aMimeContentType=..., aRequest=0xae3e9ad4, aWindowContext=0xb75b4128,
aForceSave=0, aStreamListener=0xae3e9adc)
at /microb-engine/build-tree/mozilla/uriloader/exthandler/nsExternalHelperAppService.cpp:803
#33 0xb6a8e2b7 in mozilla::dom::ExternalHelperAppParent::Init (this=0xae3e9a90, parent=0xae3e9470, aMimeContentType=..., aForceSave=@0xbffe2dc4)
at /microb-engine/build-tree/mozilla/uriloader/exthandler/ExternalHelperAppParent.cpp:87
#34 0xb6cadf98 in mozilla::dom::TabParent::RecvPExternalHelperAppConstructor (this=0xae3e9470, actor=0xae3e9a90, uri=..., aMimeContentType=...,
aForceSave=@0xbffe2f10, aContentLength=@0xbffe2f00) at /microb-engine/build-tree/mozilla/dom/ipc/TabParent.cpp:839
#35 0xb6cef919 in mozilla::dom::PBrowserParent::OnMessageReceived (this=0xae3e9470, __msg=...) at PBrowserParent.cpp:1166
#36 0xb6cf60cd in mozilla::dom::PContentParent::OnMessageReceived (this=0xae9b9050, __msg=...) at PContentParent.cpp:337
#37 0xb6ccb200 in mozilla::ipc::AsyncChannel::OnDispatchMessage (this=0xae9b9058, msg=...)
at /microb-engine/build-tree/mozilla/ipc/glue/AsyncChannel.cpp:262
#38 0xb6cd1bc3 in mozilla::ipc::RPCChannel::OnMaybeDequeueOne (this=0xae9b9058)
at /microb-engine/build-tree/mozilla/ipc/glue/RPCChannel.cpp:438
#39 0xb6cd5295 in DispatchToMethod<mozilla::ipc::RPCChannel, bool (mozilla::ipc::RPCChannel::*)()> (this=0xb36f6b40)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/tuple.h:383
#40 RunnableMethod<mozilla::ipc::RPCChannel, bool (mozilla::ipc::RPCChannel::*)(), Tuple0>::Run (this=0xb36f6b40)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/task.h:307
#41 0xb6cd5204 in mozilla::ipc::RPCChannel::RefCountedTask::Run (this=0xae4a8d78) at ../../dist/include/mozilla/ipc/RPCChannel.h:448
#42 mozilla::ipc::RPCChannel::DequeueTask::Run (this=0xae4a8d78) at ../../dist/include/mozilla/ipc/RPCChannel.h:473
#43 0xb6e5f685 in MessageLoop::RunTask (this=0xb7538a60, task=0xae4a8d78)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/message_loop.cc:343
#44 0xb6e5fea2 in MessageLoop::DeferOrRunPendingTask (this=0xb7538a60, pending_task=...)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/message_loop.cc:351
#45 0xb6e61cb7 in MessageLoop::DoWork (this=0xb7538a60)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/message_loop.cc:451
---Type <return> to continue, or q <return> to quit---
#46 0xb6ccf0cd in mozilla::ipc::DoWorkRunnable::Run (this=0xb5ea8740)
at /microb-engine/build-tree/mozilla/ipc/glue/MessagePump.cpp:70
#47 0xb6e15b7a in nsThread::ProcessNextEvent (this=0xb5e16e70, mayWait=1, result=0xbffe31e4)
at /microb-engine/build-tree/mozilla/xpcom/threads/nsThread.cpp:547
#48 0xb6dd1e0c in NS_ProcessNextEvent_P (thread=0xae9bf000, mayWait=1) at nsThreadUtils.cpp:250
#49 0xb6ccef40 in mozilla::ipc::MessagePump::Run (this=0xb5ed7940, aDelegate=0xb7538a60)
at /microb-engine/build-tree/mozilla/ipc/glue/MessagePump.cpp:134
#50 0xb6e5fd3c in MessageLoop::RunInternal (this=0xb7538a60)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/message_loop.cc:219
#51 0xb6e5fdf5 in MessageLoop::RunHandler (this=0xbffe1d08)
at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/message_loop.cc:202
#52 MessageLoop::Run (this=0xbffe1d08) at /microb-engine/build-tree/mozilla/ipc/chromium/src/base/message_loop.cc:176
#53 0xb6c5a857 in nsBaseAppShell::Run (this=0xb547ddd8)
at /microb-engine/build-tree/mozilla/widget/src/xpwidgets/nsBaseAppShell.cpp:175
#54 0xb6ae0160 in nsAppStartup::Run (this=0xb36463d0)
at /microb-engine/build-tree/mozilla/toolkit/components/startup/src/nsAppStartup.cpp:191
#55 0xb61497c8 in XRE_main (argc=6, argv=0xbffe8984, aAppData=0xb7585140)
at /microb-engine/build-tree/mozilla/toolkit/xre/nsAppRunner.cpp:3660
Updated•12 years ago
|
tracking-e10s:
--- → +
Comment 4•7 years ago
|
||
Closing all opened bug in a graveyard component
You need to log in
before you can comment on or make changes to this bug.
Description
•