Open Bug 270393 Opened 20 years ago Updated 2 years ago

Broken binding makes content randomly not show up

Categories

(Core :: Layout, defect)

x86
Windows XP
defect

Tracking

()

People

(Reporter: flg, Unassigned)

References

()

Details

(Keywords: testcase)

Attachments

(1 file)

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0 Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; fr-FR; rv:1.7.5) Gecko/20041108 Firefox/1.0 The URL given above should show a table with 2 visible columns out of 4 columns total. The last two columns are styled to visibility=collapse and should not be visible. The page sometimes displays properly, but sometimes the collapsed columns show up partially (only a few rows at bottom of table show content, the header only shows background-color with no content). This is a PHP-generated page. When trying it with a 'static' page (php page saved as static html then put back on server) the bug is harder to reproduce (though it happens maybe one reload out of 20) : see http://www.taovillage.fr/playground/bug_visi_collapse.html Reproducible: Always Steps to Reproduce: 1. open url in browser 2. hit reload and see how the last 2 columns show up or not
I have seen this once and can not reproduce it we need something more reproducible.
Keywords: qawanted
I can reproduce the behaviour both on firefox and mozilla 1.7.3 on at least two systems (didn't try more) under windows and linux. As it's much harder (almost impossible) to reproduce from a local file I suspect a thread concurrency timing issue or something like that. Both systems are connected to the Internet through a DSL line with a 1.5Mbits/s throughput. As far as file sizes are concerned there might be something about http chunking and inherent delays (this is mere assumption). I'll try with different connexions and report whether I can always reproduce the behaviour. I have other strange behaviours that seem to be timing-related so it might be a more general problem, but those are harder to reproduce. Take a look at http://www.taovillage.fr/playground/bug_infopopup.php if you like, maybe you'll observe something. On my system it seems to load the whole table but generally displays only 4 rows. I'll do my best to make all this observable for sure. Anything else I can do ? Sorry I can't help at all with browser code, I never delved into it.
Fred, can you make it happen reproducibly if the PHP sends the data on the wire one line at a time or something, with 1-second sleeps in between? That is, if the data comes in a whole bunch of separate network packets?
This page should (?) show a fairly reproducible behavior : http://www.taovillage.fr/playground/table_timing.php What happens is that there is a binding on <tr> elements : tr { -moz-binding: url(showdetails.xml#showdetails); } but the file showdetails.xml doesn't exist within that directory. As soon as firefox tries to load the file it stops rendering the table. No other styling on this page ; cutting the binding out makes it render properly. I added a 20ms sleep after each <tr>, adding more doesn't seem to bring any profit but if you need it try : http://www.taovillage.fr/playground/table_timing_1s.php Adding even the smallest sleep (10 microsecs) makes the timing utterly different ; the browser shows 14 rows everytime. Hope this helps...
So the problem here is that when a GetBinding() call fails in frame construction we simply bail out of ConstructFrameInternal instead of constructing a frame. In this case, I suspect that either LoadBindingDocumentInfo or GetPrototypeBinding fails in nsXBLService::GetBindingInternal, so we end up returning an error. Is this desirable? Should we render content "normally" if the binding load fails, perhaps? And maybe log an error to the error console if the binding could not be found?
Sounds good to me.
Sustained, thanks
So the question is, do we cover up all possible GetBinding errors in the frame constructor, or do we fix XBL to return NS_OK in those cases (with a possible warning)?
It seems the visibility collapse property causes the layout to ignore style applied to the col element unless the layout forces scrolling. Otherwise, resizing the window will cause the layout to apply the collapse visibility style. I have not tried this with colgroup, row, or rowgroup. Steps to reproduce using sample code below: 1) Open Firefox (1.0.2). 2) Size window large. 3) Open file (with sample code in it). 4) Observe columns 1 and 3 are silver per style rules applied to the col element and columns 2 and 4 are plain ignoring style rules applied to the col element (they are collapsed). 5) Resize the window. 6) Observe columns 2 and 4 disappear. 7) Resize window smaller than layout height. 8) Reload file. 9) Observe layout displays per style rules applied to all the col elements. Sample Code: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <HTML> <HEAD> <STYLE> <!-- col#col1, col#col3{ background-color: yellow; visibility: collapse; } col#col0, col#col2{ background-color: silver; } --> </STYLE> </HEAD> <BODY> <p>Resize the window to see Column 2 and 4 disappear.</p> <table> <col id="col0"> <col id="col1"> <col id="col2"> <col id="col3"> <thead> <tr><th>Column 1</th> <th>Column 2</th> <th>Column 3</th> <th>Column 4</th> </tr> </thead> <tbody> <tr><td>Column 1</td><td>Column 2</td><td>Column 3</td><td>Column 4</td></tr> </tbody> </table> </BODY> </HTML>
> 1) Open Firefox (1.0.2). Douglas, that uses a Gecko from April 2004 (about a year ago). Please test layout issues with a current trunk build (based on Gecko 1.8b1 or later) before commenting on the bugs... In particular, the problem you describe is not reproducible with a current build. Quite apart from that, the testcase you have isn't really related to this bug, which isn't really about visibility:collapse (as the "Minimalish testcase" demonstrates).
Boris, I have two questions 1. this bug seems pretty real, you wrote a testcase why you did not confirm it? Or is it unclear that it is a bug at all? 2. Why is this a table bug your description seems to indicate that is a rather generic problem. I am not arguing to send this to /dev/null AKA XBL, but would rather like to cut that error propagation in table frame construction if this is the problem.
Keywords: testcase
I just forgot to reassign....
Status: UNCONFIRMED → NEW
Component: Layout: Tables → Layout: Misc Code
Ever confirmed: true
QA Contact: layout.tables → layout.misc-code
Summary: "randomly" broken visibility=collapse on <col> → Broken binding makes content randomly not show up
Boris, the Firefox About screen shows Gecko at 20050317: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6) Gecko/20050317 Firefox/1.0.2. I'm not sure how to coordinate Gecko versions per Firefox About screen with Bugzilla version dropdown. Now that I look at it, I presume rv:1.7.6 corresponds to Bugzilla version 1.7 Branch, but I'm not sure. Also, the original description was misleading. Thank you for changing it. In the future, I will avoid commenting on Trunk versions. Any additional pointers would be appreciated. Sorry for the confusion. Thanks for clarifying.
> I'm not sure how to coordinate Gecko versions per Firefox About screen with > Bugzilla version dropdown. The "rv" part is the Gecko version. So yes, that's using Gecko 1.7.6, from the 1.7 branch. Nothing wrong with commenting on trunk bugs; just worth using a trunk version when you do. ;)
Mozilla/5.0 (Windows NT 5.1; rv:29.0) Gecko/20100101 Firefox/29.0 (20140113030203) Reproducible with the testcase from comment 10. All I had to do was open the html in Firefox - columns 2 and 4 were not there from the beginning. This works fine in Chrome 31.
Keywords: qawanted
Product: Core → Core Graveyard
Component: Layout: Misc Code → Layout
Product: Core Graveyard → Core
Severity: normal → S3
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: