Closed Bug 237955 Opened 21 years ago Closed 21 years ago

[FIXr]Filter out NS_BLOCK_HAS_LINE_CURSOR in regression tests

Categories

(Core :: Layout, defect, P1)

x86
Linux
defect

Tracking

()

RESOLVED FIXED
mozilla1.8alpha1

People

(Reporter: bzbarsky, Assigned: bzbarsky)

Details

Attachments

(1 file)

I thought about this some more and I may just add a method on nsIFrameDebug that returns the flags and masks out the irrelevant ones. The current regression test logic could then move into that debug method on nsFrame, and nsBlockFrame can override. If you think it's better to keep all the logic in the regression test code, please let me know....
I had another thought here. Maybe a nsIFrameDebug method to get the flags? Then the frames could mask out flags as needed.... thoughts?
Attached patch ThuslySplinter Review
Attachment #145305 - Flags: superreview?(roc)
Attachment #145305 - Flags: review?(roc)
Priority: -- → P1
Summary: Filter out NS_BLOCK_HAS_LINE_CURSOR in regression tests → [FIX]Filter out NS_BLOCK_HAS_LINE_CURSOR in regression tests
Target Milestone: --- → mozilla1.8alpha
Attachment #145305 - Flags: superreview?(roc)
Attachment #145305 - Flags: superreview+
Attachment #145305 - Flags: review?(roc)
Attachment #145305 - Flags: review+
Summary: [FIX]Filter out NS_BLOCK_HAS_LINE_CURSOR in regression tests → [FIXr]Filter out NS_BLOCK_HAS_LINE_CURSOR in regression tests
Isn't that a little bit of overkill? (See for http://www.infiltec.com/j-h-wrld.htm an example where we might end :-)) I did not see this NS_BLOCK_HAS_LINE_CURSOR over three years of running the tests. And wouldn't the compare trees a better place to do this instead of adding functions that only serve the regressions tests to some frames?
> I did not see this NS_BLOCK_HAS_LINE_CURSOR over three years of running the > tests That's because it got added a few weeks ago. I got nearly a thousand false positives on every single regression test I've run since then (that's nearly a thousand tests showing false positives; probably about 30% of the total tests we have. Different ones each time, of course). > And wouldn't the compare trees a better place to do this NS_BLOCK_HAS_LINE_CURSOR is in the "reserved for frames" bit-space. Which means that bit can be meaningful for frames that are not blockframes. There is no reliable way to detect blockframes and all subclasses of blockframes from the compare trees code. But if you think there's a better way to implement this, I'm all ears. I'm not tied to this particular implementation.
>That's because it got added a few weeks ago. Ah, the hidden advantage of having a single directory where other people seldom checkin. Sorry, I did not know thats so critical, 1000 false positives are far beyond tolerable problems. With your explanation its OK with me and thanks for the warning.
Index: layout/base/public/nsIFrameDebug.h + * Return the state bits that are relevant to regression tests (that is, those bits which indicate a real difference when they differ nit: missing closing ')'
Comment on attachment 145305 [details] [diff] [review] Thusly This is all DEBUG code only, and I'd like to run the regression tests on something that should probably go into 1.7, so approving.
Attachment #145305 - Flags: approval1.7+
Fixed for 1.7
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Attempted debug build Tuesday evening: Creating library firefox.lib and object firefox.exp gklayout.lib(nsIsIndexFrame.obj) : error LNK2001: unresolved external symbol "pu blic: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBits(void)const " (?GetDebugStateBits@nsBlockFrame@@UBGIXZ) gklayout.lib(nsLegendFrame.obj) : error LNK2001: unresolved external symbol "pub lic: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBits(void)const " (?GetDebugStateBits@nsBlockFrame@@UBGIXZ) gklayout.lib(nsMathMLForeignFrameWrapper.obj) : error LNK2001: unresolved extern al symbol "public: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBit s(void)const " (?GetDebugStateBits@nsBlockFrame@@UBGIXZ) gklayout.lib(nsMathMLmtableFrame.obj) : error LNK2001: unresolved external symbo l "public: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBits(void)c onst " (?GetDebugStateBits@nsBlockFrame@@UBGIXZ) gklayout.lib(nsFileControlFrame.obj) : error LNK2001: unresolved external symbol "public: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBits(void)co nst " (?GetDebugStateBits@nsBlockFrame@@UBGIXZ) gklayout.lib(nsSelectsAreaFrame.obj) : error LNK2001: unresolved external symbol "public: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBits(void)co nst " (?GetDebugStateBits@nsBlockFrame@@UBGIXZ) gklayout.lib(nsComboboxControlFrame.obj) : error LNK2001: unresolved external sy mbol "public: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBits(voi d)const " (?GetDebugStateBits@nsBlockFrame@@UBGIXZ) gklayout.lib(nsBlockFrame.obj) : error LNK2001: unresolved external symbol "publ ic: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBits(void)const " (?GetDebugStateBits@nsBlockFrame@@UBGIXZ) gklayout.lib(nsAreaFrame.obj) : error LNK2001: unresolved external symbol "publi c: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBits(void)const " ( ?GetDebugStateBits@nsBlockFrame@@UBGIXZ) gklayout.lib(nsMathMLContainerFrame.obj) : error LNK2001: unresolved external sy mbol "public: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBits(voi d)const " (?GetDebugStateBits@nsBlockFrame@@UBGIXZ) gklayout.lib(nsTableOuterFrame.obj) : error LNK2001: unresolved external symbol "public: virtual unsigned int __stdcall nsBlockFrame::GetDebugStateBits(void)con st " (?GetDebugStateBits@nsBlockFrame@@UBGIXZ) firefox.exe : fatal error LNK1120: 1 unresolved externals make[4]: *** [firefox.exe] Error 96 make[4]: Leaving directory `/cygdrive/c/Mozilla/mozilla/browser/app' make[3]: *** [libs] Error 2 make[3]: Leaving directory `/cygdrive/c/Mozilla/mozilla/browser' make[2]: *** [tier_99] Error 2 make[2]: Leaving directory `/cygdrive/c/Mozilla/mozilla' make[1]: *** [default] Error 2 make[1]: Leaving directory `/cygdrive/c/Mozilla/mozilla' make: *** [build] Error 2
Sounds like you're linking together libs that were built with different build flags or something. Is this only an issue for the static build?
Yes, I generally only do static builds. Would changing the build to shared fix this problem? I'm just trying to get something to work at the moment.
No idea, but it's worth trying. Again, it's looking to me like some differing versions of libs are being statically linked there.
It looks like the function prototype was missing or not being seen as it appears to be defaulting to a type of int. Has anyone else had any problems with debug builds on FireFox? Or does anyone do them? At any rate, my build should be done in a few hours.
nsFrameState _is_ an int. "virtual unsigned int __stdcall" is the correct return type for that function on Windows.
Build succeeded but it crashes on startup in JSAPI.C on an assertion doing something with the maximum number of threads. I guess I'll have to file another bug on that one as it's a new one for me. How do you guys do debugging? Do you have a debug image that works somewhere?
Michael, don't you think I maybe compiled and tested this patch to debug-only code in a debug build before checking it into the tree and all?
(In reply to comment #17) > http://www.mozilla.org/community/developer-forums.html#mozilla-builds is a much > better forum than this bug for build questions I hang out on the FireFox build board and generally post problems like this. When it comes to debug builds, there may be one or two others out there that have expressed interest in these for debugging problems but most folks say nothing in response to problems that you have for debug builds. There are lots of times when you won't get much response for regular builds. Some of the regular builders get tired and sometimes you have to spend a few days of hand-holding to get someone through their first build. (In reply to comment #18) > Michael, don't you think I maybe compiled and tested this patch to debug-only > code in a debug build before checking it into the tree and all? I've worked with hundreds of engineers over the last almost 20 years and I'd have to say that habits of developers vary widely. At any rate, debug builds (for the whole project anyways) are broken from my point of view. All I have available is to file bugs or report it in the build forums. Both of these approaches haven't yielded much in the way of returns. That leaves me with changing code or being good at reading assembler in trying to diagnose problems. Now it would seem to me that the organization would want as many as possible to have the capability to debug problems on their own. Especially for those websites that require a membership or subscription cost making it inconvenient for developers to try to debug these types of problems. This may be the wrong place to discuss these matters. Perhaps you'd prefer to discuss them on the FireFox build forum. I have a few topics posted on debug problems in addition to mentioning them in my builds post.
DEBUG builds work for everyone else.
Michael, I assume you've done a clobber build?
(In reply to comment #21) > Michael, I assume you've done a clobber build? I am unfamiliar with the term.
QA Contact: core.layout.misc-code → nobody
Product: Core → Core Graveyard
Component: Layout: Misc Code → Layout
Product: Core Graveyard → Core
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: