Closed Bug 950323 Opened 11 years ago Closed 10 years ago

crash in XPCWrappedNative::CallMethod on start-up

Categories

(Core :: XPConnect, defect)

x86_64
Windows 8.1
defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla33

People

(Reporter: c, Assigned: ehsan.akhgari)

Details

Attachments

(3 files)

User Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:26.0) Gecko/20100101 Firefox/26.0 Light/26.0.1 (Beta/Release) Build ID: 20131214135640 Steps to reproduce: build the trunk with vs2013 and -GL optimize flag. crash on start-up. xul.dll!XPCWrappedNative::CallMethod(XPCCallContext & ccx, XPCWrappedNative::CallMode mode) line 1873 C++ xul.dll!XPC_WN_GetterSetter(JSContext * cx, unsigned int argc, JS::Value * vp) line 1336 C++ xul.dll!js::Invoke(JSContext * cx, JS::CallArgs args, js::MaybeConstruct construct) line 463 C++ xul.dll!js::Invoke(JSContext * cx, const JS::Value & thisv, const JS::Value & fval, unsigned int argc, JS::Value * argv, JS::MutableHandle<JS::Value> rval) line 513 C++ xul.dll!js::InvokeGetterOrSetter(JSContext * cx, JSObject * obj, JS::Value fval, unsigned int argc, JS::Value * argv, JS::MutableHandle<JS::Value> rval) line 584 C++ xul.dll!js::Shape::get(JSContext * cx, JS::Handle<JSObject *> receiver, JSObject * obj, JSObject * pobj, JS::MutableHandle<JS::Value> vp) line 68 C++ xul.dll!js::baseops::GetProperty(JSContext * cx, JS::Handle<JSObject *> obj, JS::Handle<JSObject *> receiver, JS::Handle<jsid> id, JS::MutableHandle<JS::Value> vp) line 4281 C++ xul.dll!GetPropertyOperation(JSContext * cx, js::StackFrame * fp, JS::Handle<JSScript *> script, unsigned char * pc, JS::MutableHandle<JS::Value> lval, JS::MutableHandle<JS::Value> vp) line 264 C++ xul.dll!Interpret(JSContext * cx, js::RunState & state) line 2415 C++ xul.dll!js::RunScript(JSContext * cx, js::RunState & state) line 420 C++ xul.dll!js::ExecuteKernel(JSContext * cx, JS::Handle<JSScript *> script, JSObject & scopeChainArg, const JS::Value & thisv, js::ExecuteType type, js::AbstractFramePtr evalInFrame, JS::Value * result) line 614 C++ xul.dll!js::Execute(JSContext * cx, JS::Handle<JSScript *> script, JSObject & scopeChainArg, JS::Value * rval) line 648 C++ xul.dll!JS_ExecuteScript(JSContext * cx, JSObject * objArg, JSScript * scriptArg, JS::Value * rval) line 4725 C++ xul.dll!JS_ExecuteScriptVersion(JSContext * cx, JSObject * objArg, JSScript * script, JS::Value * rval, JSVersion version) line 4733 C++ xul.dll!mozJSComponentLoader::ObjectForLocation(nsIFile * aComponentFile, nsIURI * aURI, JSObject * * aObject, char * * aLocation, bool aPropagateExceptions, JS::MutableHandle<JS::Value> aException) line 1008 C++ xul.dll!mozJSComponentLoader::LoadModule(mozilla::FileLocation & aFile) line 425 C++ xul.dll!nsComponentManagerImpl::KnownModule::Load() line 746 C++ xul.dll!nsFactoryEntry::GetFactory() line 1773 C++ xul.dll!nsComponentManagerImpl::CreateInstanceByContractID(const char * aContractID, nsISupports * aDelegate, const nsID & aIID, void * * aResult) line 1080 C++ xul.dll!nsComponentManagerImpl::GetServiceByContractID(const char * aContractID, const nsID & aIID, void * * result) line 1441 C++ xul.dll!nsCOMPtr_base::assign_from_gs_contractid_with_error(const nsGetServiceByContractIDWithError & gs, const nsID & iid) line 101 C++ xul.dll!nsAppStartupNotifier::Observe(nsISupports * aSubject, const char * aTopic, const wchar_t * someData) line 63 C++ xul.dll!XREMain::XRE_mainRun() line 3844 C++ xul.dll!XREMain::XRE_main(int argc, char * * argv, const nsXREAppData * aAppData) line 4090 C++ xul.dll!XRE_main(int argc, char * * argv, const nsXREAppData * aAppData, unsigned int aFlags) line 4300 C++
Component: General → XPConnect
compile XPCWrappedNative.cpp without -GL make the crash gone.
after bug1028613, there are several warning C4731 in -GL builds. c:\develop\mozilla\central\xpcom\reflect\xptcall\src\md\win32\xptcinvoke.cpp(76) : warning C4731: “NS_InvokeByIndex”: frame pointer register 'ebp' modified by inline assembly code c:\develop\mozilla\central\xpcom\reflect\xptcall\src\md\win32\xptcinvoke.cpp(76) : warning C4731: “CallMethodHelper::Invoke”: frame pointer register 'ebp' modified by inline assembly code c:\develop\mozilla\central\xpcom\reflect\xptcall\src\md\win32\xptcinvoke.cpp(76) : warning C4731: “CallMethodHelper::Call”: frame pointer register 'ebp' modified by inline assembly code c:\develop\mozilla\central\xpcom\reflect\xptcall\src\md\win32\xptcinvoke.cpp(76) : warning C4731: “XPCWrappedNative::CallMethod”: frame pointer register 'ebp' modified by inline assembly code
Adding -GL- to xptcinvoke.cpp make the crash gone. http://mxr.mozilla.org/mozilla-central/source/xpcom/reflect/xptcall/src/md/win32/moz.build#46 It seems to be a known bug.
Attached patch Patch (v1) (deleted) — Splinter Review
Attachment #8446845 - Flags: review?(benjamin)
Can you please test this patch?
Flags: needinfo?(zhoubcfan)
It works. the warnings are gone. By the way, I think it's a better idea to add -GL- when no_pgo is specified.
Flags: needinfo?(zhoubcfan)
(In reply to zhoubcfan from comment #6) > It works. the warnings are gone. Excellent! > By the way, I think it's a better idea to add -GL- when no_pgo is specified. Please file a different bug for that in Core::Build Config. That's really an unrelated issue to this one, but I think it probably makes sense to do that!
Attachment #8446845 - Flags: review?(benjamin) → review+
Attached patch revert.patch (deleted) — Splinter Review
Attached patch correction.patch (deleted) — Splinter Review
Sorry for the trouble. But currently some lines are not necessary and kind of confusing. Either of the two patches should fix it.
Status: UNCONFIRMED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla33
Flags: needinfo?(ehsan)
(In reply to zhoubcfan from comment #10) > Created attachment 8448506 [details] [diff] [review] > correction.patch > > Sorry for the trouble. But currently some lines are not necessary and kind > of confusing. Either of the two patches should fix it. Why do you think these are unnecessary? Note the block at the very end of that moz.build file, I'm basically turning PGO off for this file in the rest of the cases where we don't set NO_PGO for the whole moz.build file.
Flags: needinfo?(ehsan)
(In reply to :Ehsan Akhgari (lagging on bugmail, needinfo? me!) from comment #12) > (In reply to zhoubcfan from comment #10) > > Created attachment 8448506 [details] [diff] [review] > > correction.patch > > > > Sorry for the trouble. But currently some lines are not necessary and kind > > of confusing. Either of the two patches should fix it. > > Why do you think these are unnecessary? Note the block at the very end of > that moz.build file, I'm basically turning PGO off for this file in the rest > of the cases where we don't set NO_PGO for the whole moz.build file. xptcinvoke.cpp will be compiled only when !x86_64 and !GNU_CXX are both true.
Comment on attachment 8448506 [details] [diff] [review] correction.patch Aha, you're right!
Attachment #8448506 - Flags: review?(benjamin)
Attachment #8448506 - Flags: review?(benjamin) → review+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: