Closed Bug 113511 Opened 24 years ago Closed 14 years ago

-O3 causes crash in xpcom when using MipsPro compiler

Categories

(Core :: XPCOM, defect)

SGI
IRIX
defect
Not set
critical

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: nickb, Unassigned)

Details

(Keywords: crash)

Attachments

(1 file)

A bus error occurs in xpcom, the stack trace shows nsComponentManagerImpl::PlatformInit(void) is xpcom/components/nsComponentManager.cpp:819, however I think this is due to a problem at a higher level.
After some investigation it is only xpcom/reflect/xptcall/md that I cannot compile at -O3. So this patch forces it to compile at -O2 if -O3 or -Ofast is used.
Note: This is very similar to 79562, in that this is a work around which allows me to compile at -O3, and not a fix.
build config
Assignee: asa → seawood
Component: Browser-General → Build Config
QA Contact: doronr → granrose
Ugh. Not again. Can we avoid populating the tree with these sed cases?
I don't really understand the problem with using sed, but am happy to use a better method if one exists. sed is a lot more accurate then $(patsubst) for eg. Of course, ideally we will get the compiler bug (if it exists) fixed and then can do away with ugly hacks like this! :)
Component: Build Config → Browser-General
QA Contact: granrose → doronr
most likely no one cares, but could you please provide a stack trace and the actual lines of code associated w/ the lines? the line you indicated is currently inside a #if 0 block...
Severity: normal → critical
Status: UNCONFIRMED → NEW
Component: Browser-General → XPCOM
Ever confirmed: true
Keywords: crash
QA Contact: doronr → scc
Sorry, I didn't have full symbols on before, however here is a full stack trace, and a code snippet: (dbx) where > 0 nsSupportsArray::EnumerateBackwards(int (*)(nsISupports*,void*),void*)(this = 0x5ff9a59c, aFunc = 0x10497b58, aData = 0x103ca270) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/xpcom/ds/nsSupportsArray.cpp":696, 0x5fe21020] 1 AutoJSSuspendRequest::~AutoJSSuspendRequest(void)(this = 0x7ffe3740, <no name> = 2) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/js/src/xpconnect/src/xpcprivate.h":2800, 0x5f685e3c] 2 XPCWrappedNative::CallMethod(XPCCallContext&,XPCWrappedNative::CallMode)(ccx = 0x7ffe39c8, mode = CALL_GETTER__16XPCWrappedNative=1) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/js/src/xpconnect/src/xpcwrappednative.cpp":1950, 0x5f6805c0] 3 ::XPC_WN_GetterSetter(JSContext*,JSObject*,unsigned int,long*,long*)(cx = 0x103ca270, obj = 0x1015b708, argc = 0, argv = 0x104c1028, vp = 0x7ffe3b10) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/js/src/xpconnect/src/xpcprivate.h":1787, 0x5f695cc4] 4 js_Invoke(0x103ca270, 0x0, 0x2, 0x1015b708, 0x0, 0x5f695a30, 0x1015be88, 0x0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/js/src/jsinterp.c":809, 0x4053104] 5 js_InternalInvoke(0x103ca270, 0x1015b708, 0x1015be88, 0x0, 0x0, 0x0, 0x7ffe3dd8, 0x0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/js/src/jsinterp.c":901, 0x4053548] 6 js_GetProperty(0x103ca270, 0x1015b708, 0x10497b58, 0x7ffe3dd8, 0x8, 0x1, 0x5fee2e18, 0x0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/js/src/jsobj.c":2433, 0x407a1bc] 7 js_Interpret(0x103ca270, 0x7ffe466c, 0x0, 0x104b2d78, 0x104c0f7c, 0x101579f8, 0x1, 0x5de6b820) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/js/src/jsinterp.c":2564, 0x4061394] 8 js_Invoke(0x103ca270, 0x1, 0x2, 0x1015b708, 0x0, 0x0, 0x1015b840, 0x0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/js/src/jsinterp.c":826, 0x40531dc] 9 js_InternalInvoke(0x103ca270, 0x1015b708, 0x1015b840, 0x0, 0x1, 0x7ffe4c2c, 0x7ffe4984, 0x0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/js/src/jsinterp.c":901, 0x4053548] 10 JS_CallFunctionValue(0x103ca270, 0x1015b708, 0x1015b840, 0x1, 0x7ffe4c2c, 0x7ffe4984, 0x5fee2e18, 0x0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/js/src/jsapi.c":3387, 0x401eecc] 11 nsJSContext::CallEventHandler(void*,void*,unsigned int,void*,int*,int)(this = 0x103ca158, aTarget = 0x1015b708, aHandler = 0x1015b840, argc = 1, argv = 0x7ffe4c2c, aBoolResult = 0x7ffe4c38, aReverseReturnResult = 0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/dom/src/base/nsJSEnvironment.cpp":976, 0x5de68b3c] 12 nsJSEventListener::HandleEvent(nsIDOMEvent*)(this = 0x104af240, aEvent = 0x5efd0bcc) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/dom/src/events/nsJSEventListener.cpp":154, 0x5df2b88c] 13 nsXBLPrototypeHandler::ExecuteHandler(nsIDOMEventReceiver*,nsIDOMEvent*)(this = 0x104b0d80, aReceiver = 0x1048a0c8, aEvent = 0x5efd0bcc) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/content/xbl/src/nsXBLPrototypeHandler.cpp":448, 0x5ec0d0b4] 14 nsXBLPrototypeHandler::BindingAttached(nsIDOMEventReceiver*)(this = 0x104b0d80, aReceiver = 0x1048a0c8) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/content/xbl/src/nsXBLPrototypeHandler.cpp":495, 0x5ec0e650] 15 nsXBLPrototypeBinding::BindingAttached(nsIDOMEventReceiver*)(this = 0x104a68d0, aReceiver = 0x1048a0c8) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/content/xbl/src/nsXBLPrototypeBinding.cpp":582, 0x5ebdcff0] 16 nsXBLBinding::ExecuteAttachedHandler(void)(this = 0x10486d98) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/content/xbl/src/nsXBLBinding.cpp":1149, 0x5ebc8878] 17 nsBindingManager::ProcessAttachedQueue(void)(this = 0x104247d8) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/content/xbl/src/nsBindingManager.cpp":1299, 0x5ec55c8c] 18 nsCSSFrameConstructor::ContentInserted(nsIPresContext*,nsIContent*,nsIContent*,int,nsILayoutHistoryState*)(this = 0x10482898, aPresContext = 0x1023c188, aContainer = (nil), aChild = 0x10424498, aIndexInContainer = 0, aFrameState = (nil)) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/layout/html/style/src/nsCSSFrameConstructor.cpp":8351, 0x5d71c2a4] 19 StyleSetImpl::ContentInserted(nsIPresContext*,nsIContent*,nsIContent*,int)(this = 0x104827b0, aPresContext = 0x1023c188, aContainer = (nil), aChild = 0x10424498, aIndexInContainer = 0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/content/base/src/nsStyleSet.cpp":1201, 0x5edc4304] 20 PresShell::InitialReflow(int,int)(this = 0x10482950, aWidth = 1600, aHeight = 1600) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/layout/html/base/src/nsPresShell.cpp":2625, 0x5d5cc254] 21 HTMLContentSink::StartLayout(void)(this = 0x10453a60) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/content/html/document/src/nsHTMLContentSink.cpp":3904, 0x5e8a91e4] 22 HTMLContentSink::OpenBody(const nsIParserNode&)(this = 0x10453a60, aNode = 0x103ab5e8) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/content/html/document/src/nsHTMLContentSink.cpp":3185, 0x5e8a6844] 23 CNavDTD::OpenBody(const nsCParserNode*)(this = 0x104838e8, aNode = 0x103ab5e8) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/htmlparser/src/CNavDTD.cpp":3119, 0x5f8cb9fc] 24 CNavDTD::OpenContainer(const nsCParserNode*,nsHTMLTag,int,nsEntryStack*)(this = 0x104838e8, aNode = 0x103ab5e8, aTag = eHTMLTag_body=15, aClosedByStartTag = 1, aStyleStack = (nil)) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/htmlparser/src/CNavDTD.cpp":3376, 0x5f8cc164] 25 CNavDTD::HandleDefaultStartToken(CToken*,nsHTMLTag,nsCParserNode*)(this = 0x104838e8, aToken = 0x10337d38, aChildTag = eHTMLTag_body=15, aNode = 0x103ab5e8) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/htmlparser/src/CNavDTD.cpp":1302, 0x5f8ca62c] 26 CNavDTD::HandleStartToken(CToken*)(this = 0x104838e8, aToken = 0x10337d38) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/htmlparser/src/CNavDTD.cpp":1715, 0x5f8ca1cc] 27 CNavDTD::HandleToken(CToken*,nsIParser*)(this = 0x104838e8, aToken = 0x10337d38, aParser = 0x10453958) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/htmlparser/src/CNavDTD.cpp":881, 0x5f8c7f44] 28 CNavDTD::BuildModel(nsIParser*,nsITokenizer*,nsITokenObserver*,nsIContentSink*)(this = 0x104838e8, aParser = 0x10453958, aTokenizer = 0x104837e0, anObserver = (nil), aSink = 0x10453a60) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/htmlparser/src/CNavDTD.cpp":517, 0x5f8c7628] 29 nsParser::BuildModel(void)(this = 0x10453958) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/htmlparser/src/nsParser.cpp":2023, 0x5f8fb660] 30 nsParser::ResumeParse(int,int)(this = 0x10453958, allowIteration = 1, aIsFinalChunk = 0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/htmlparser/src/nsParser.cpp":1889, 0x5f8f82ac] 31 nsParser::OnDataAvailable(nsIRequest*,nsISupports*,nsIInputStream*,unsigned int,unsigned int)(this = 0x10453958, request = 0x103c19a0, aContext = (nil), pIStream = 0x103cf2f8, sourceOffset = 0, aLength = 117) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/htmlparser/src/nsParser.cpp":2498, 0x5f8f8fac] 32 nsDocumentOpenInfo::OnDataAvailable(nsIRequest*,nsISupports*,nsIInputStream*,unsigned int,unsigned int)(this = 0x103bf708, request = 0x103c19a0, aCtxt = (nil), inStr = 0x103cf2f8, sourceOffset = 0, count = 117) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/uriloader/base/nsURILoader.cpp":259, 0x5f1d73d8] 33 nsOnDataAvailableEvent::HandleEvent(void)(0x103c9ad8, 0x5ee79e28, 0x5ee79e28, 0x0, 0x8, 0x1, 0x5fee2e18, 0x0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/netwerk/base/src/nsStreamListenerProxy.cpp":192, 0x5f31d194] 34 nsARequestObserverEvent::HandlePLEvent(PLEvent*)(0x4055e7dc, 0x5ee79e28, 0x5ee79e28, 0x0, 0x8, 0x1, 0x5fee2e18, 0x0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/netwerk/base/src/nsRequestObserverProxy.cpp":79, 0x5f2fe9e4] 35 PL_HandleEvent(self = 0x103c9ad8) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/xpcom/threads/plevent.c":590, 0x5fea2820] 36 PL_ProcessEventsBeforeID(aSelf = 0x101ffa78, aID = 0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/xpcom/threads/plevent.c":1256, 0x5fea318c] 37 ::processQueue(void*,void*)(aElement = 0x1014d150, aData = 0xc9) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/widget/src/gtk/nsAppShell.cpp":479, 0x5f101f08] 38 nsVoidArray::EnumerateForwards(int (*)(void*,void*),void*)(this = 0x8adcd68, aFunc = (nil), aData = 0x8adcd88) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/xpcom/ds/nsVoidArray.cpp":650, 0x5fe2b6c8] 39 nsAppShell::ProcessBeforeID(unsigned long)(aID = 201) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/widget/src/gtk/nsAppShell.cpp":487, 0x5f103974] 40 ::handle_gdk_event(_GdkEvent*,void*)(event = 0x10423290, data = (nil)) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/widget/src/gtk/nsGtkEventHandler.cpp":1005, 0x5f11b1d0] 41 gdk_event_dispatch(0x4055e7dc, 0x5ee79e28, 0x5ee79e28, 0x0, 0x8, 0x1, 0x5fee2e18, 0x0) ["/xlv1/freeware/2001.May/gtk+/1.2.9/gtk+-1.2.9.diffbuild/gdk/gdkevents.c":2139, 0x939c424] 42 g_main_dispatch(0x4055e7dc, 0x0, 0x5ee79e28, 0x0, 0x0, 0x1, 0x5fee2e18, 0x0) ["/xlv1/freeware/2001.May/glib/1.2.9/glib-1.2.9.diffbuild/gmain.c":656, 0x8ab6064] 43 g_main_iterate(0x4055e7dc, 0x1, 0x0, 0x0, 0x8, 0x1, 0x5fee2e18, 0x0) ["/xlv1/freeware/2001.May/glib/1.2.9/glib-1.2.9.diffbuild/gmain.c":877, 0x8ab64dc] 44 g_main_run(0x1041e0a0, 0x5ee79e28, 0x5ee79e28, 0x0, 0x8, 0x1, 0x5fee2e18, 0x0) ["/xlv1/freeware/2001.May/glib/1.2.9/glib-1.2.9.diffbuild/gmain.c":935, 0x8ab6a44] 45 gtk_main(0x4055e7dc, 0x5ee79e28, 0x5ee79e28, 0x0, 0x8, 0x1, 0x5fee2e18, 0x0) ["/xlv1/freeware/2001.May/gtk+/1.2.9/gtk+-1.2.9.diffbuild/gtk/gtkmain.c":524, 0x89b0d3c] 46 nsAppShell::Run(void)(this = 0x1015faa0) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/widget/src/gtk/nsAppShell.cpp":364, 0x5f102e5c] 47 nsAppShellService::Run(void)(this = 0x1013b938) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/xpfe/appshell/src/nsAppShellService.cpp":456, 0x5f80c784] 48 ::main1(int,char**,nsISupports*)(argc = 1, argv = 0x7ffe7df4, nativeApp = (nil)) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/xpfe/bootstrap/nsAppRunner.cpp":1291, 0x1001163c] 49 ::main(argc = 1, argv = 0x7ffe7df4) ["/projects/sise/mozilla/devel/workpits/moz/0.9.5_branch_m_o/mozilla/xpfe/bootstrap/nsAppRunner.cpp":1619, 0x100127e8] 50 __start() ["/xlv55/kudzu-apr12/work/irix/lib/libc/libc_n32_M4/csu/crt1text.s":177, 0x10007ad8] (dbx) list 689:11 689 NS_IMETHODIMP_(PRBool) 690 nsSupportsArray::EnumerateBackwards(nsISupportsArrayEnumFunc aFunc, void* aData) 691 { 692 PRUint32 aIndex = mCount; 693 PRBool running = PR_TRUE; 694 695 while (running && (0 < aIndex--)) { * 696 running = (*aFunc)(mArray[aIndex], aData); 697 } 698 return running; 699 } And recompiling xpcom/reflect/xptcall/src/md/unix with -O2 avoids this crash.
I've mentioned the specific problem that I had with sed in bug 79562. <rant> In general, I have no faith that these hacks will ever actually disappear from the tree once they are added. Especially since the problem occurs at a "high" optimization level which makes it a bit harder to determine if it's a code or compiler problem. Not that I have a better alternative, mind you. I'm just fed up with dealing with broken compilers and/or broken code. </rant>
Thats kind of the reason I used sed, tho, because $(putsubst) and friends would miss even more potential flags, or worse, change things it shouldn't (eg -OPT: flags). I have to say tho, I agree 100%! Would love to use a compiler that wasn't broken in some way. gcc is far from perfect too (at least on IRIX).
Comment on attachment 60392 [details] [diff] [review] xpcom/reflect/xptcall/md/Makefile.in - restrict optimisation to -O2 r=cls
Attachment #60392 - Flags: review+
Patch has been checked in. Back to Nick.
Assignee: seawood → nickb
Comment on attachment 60392 [details] [diff] [review] xpcom/reflect/xptcall/md/Makefile.in - restrict optimisation to -O2 Does this mean you have changed the attachment? Not sure whats happened, but what is in the tree is: OS_CXXFLAGS := $(shell echo $(OS_CXXFLAGS) | sed 's/-O\(3|fast\)/-O2/g') but this does not work, it is missing a '\'. It should be OS_CXXFLAGS := $(shell echo $(OS_CXXFLAGS) | sed 's/-O\(3\|fast\)/-O2/g') or rather (in v1.60) CXXFLAGS := $(shell echo $(CXXFLAGS) | sed 's/-O\(3\|fast\)/-O2/g')
Sorry, I'm not sure how I managed to botch that up. Added the missing \
Assignee: nickb → nobody
QA Contact: scc → xpcom
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: