Closed Bug 193276 Opened 22 years ago Closed 16 years ago

[Gtk2] Crash when viewing text files with a ^L character - form feed not treated as a whitespace character in html [@ XftCharIndex]

Categories

(Core :: Layout: Block and Inline, defect)

x86
Linux
defect
Not set
critical

Tracking

()

RESOLVED WORKSFORME

People

(Reporter: andersk, Unassigned)

References

()

Details

(Keywords: crash)

Crash Data

User-Agent:       Mozilla/5.0 (compatible; Konqueror/3; Linux)
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.3b) Gecko/20030211

Mozilla seems to crash whenever I try to view a text file that contains a ^L 
(form feed) character. It just dies silently; no messages are printed if I 
start it form a console.  
 
If I rename the file from .txt to .html, it doesn't crash immediately, but it 
does crash if I try to view the source of the page. 

Reproducible: Always

Steps to Reproduce:
1. Visit http://www.rfc-editor.org/rfc/rfc2606.txt . 
Actual Results:  
Crash. 

Expected Results:  
No crash. (What do you think I expected? ... :-)) 

I'm using the Mozilla 1.3b RH8 RPMS with GTK2 support, running on Red Hat 8.0.
Summary: Crash when viewing text files with a ^L character → Crash when viewing text files with a ^L character (form feed)
WFM, (default) current trunk CVS, Linux.
Summary: Crash when viewing text files with a ^L character (form feed) → [Gtk2] Crash when viewing text files with a ^L character (form feed)
worksforme with linux trunk 20030213 (gtk1) and CVS (gtk2/xft)
Keywords: crash
Worksforme, too.

Do you have a stack trace?  Does it cause an X error that's just eated by the
mozilla startup script?

Assmuming this is real, I'll bet it's Xft-related, not gtk2 related.  Text like
that also tends to trigger bug 173204.
Blocks: xft_tracking
Here's a stack trace (from GDB):

#0  0x41066dfa in XftCharIndex () from /usr/lib/libXft.so.2
#1  0x4106386f in XftTextExtents16 () from /usr/lib/libXft.so.2
#2  0x417910bc in nsFontXft::GetWidth16 ()
   from /usr/lib/mozilla-1.3b/components/libgfx_gtk.so
#3  0x4178e5fa in nsFontMetricsXft::GetTextDimensions ()
   from /usr/lib/mozilla-1.3b/components/libgfx_gtk.so
#4  0x4177a4e5 in nsRenderingContextGTK::GetTextDimensions ()
   from /usr/lib/mozilla-1.3b/components/libgfx_gtk.so
#5  0x406acc5c in nsTextFrame::MeasureText ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#6  0x406adc11 in nsTextFrame::Reflow ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#7  0x4067c6ab in nsLineLayout::ReflowFrame ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#8  0x4064aae0 in nsBlockFrame::ReflowInlineFrame ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#9  0x4064a8aa in nsBlockFrame::DoReflowInlineFrames ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#10 0x4064a67b in nsBlockFrame::DoReflowInlineFramesAuto ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#11 0x4064a529 in nsBlockFrame::ReflowInlineFrames ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#12 0x40648f89 in nsBlockFrame::ReflowLine ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#13 0x406486e2 in nsBlockFrame::ReflowDirtyLines ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#14 0x40647074 in nsBlockFrame::Reflow ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#15 0x4064ef7c in nsBlockReflowContext::ReflowBlock ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#16 0x40649ecd in nsBlockFrame::ReflowBlockFrame ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#17 0x40648be3 in nsBlockFrame::ReflowLine ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#18 0x406486e2 in nsBlockFrame::ReflowDirtyLines ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#19 0x40647074 in nsBlockFrame::Reflow ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#20 0x4064ef7c in nsBlockReflowContext::ReflowBlock ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#21 0x40649ecd in nsBlockFrame::ReflowBlockFrame ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#22 0x40648be3 in nsBlockFrame::ReflowLine ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#23 0x406486e2 in nsBlockFrame::ReflowDirtyLines ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#24 0x40647074 in nsBlockFrame::Reflow ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#25 0x406558c8 in nsContainerFrame::ReflowChild ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#26 0x40669531 in CanvasFrame::Reflow ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#27 0x4073bca3 in nsBoxToBlockAdaptor::Reflow ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#28 0x4073b731 in nsBoxToBlockAdaptor::DoLayout ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#29 0x407387f1 in nsBox::Layout ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#30 0x4072e2f3 in nsScrollBoxFrame::DoLayout ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#31 0x407387f1 in nsBox::Layout ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#32 0x4073daa8 in nsContainerBox::LayoutChildAt ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#33 0x406656fc in nsGfxScrollFrameInner::LayoutBox ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#34 0x406659dd in nsGfxScrollFrameInner::Layout ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#35 0x40665743 in nsGfxScrollFrame::DoLayout ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#36 0x407387f1 in nsBox::Layout ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#37 0x4074aecf in nsBoxFrame::Reflow ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#38 0x40664c97 in nsGfxScrollFrame::Reflow ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#39 0x406558c8 in nsContainerFrame::ReflowChild ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#40 0x406b2010 in ViewportFrame::Reflow ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#41 0x4068ec3d in IncrementalReflow::Dispatch ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#42 0x4069b7de in PresShell::ProcessReflowCommands ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#43 0x4069b323 in HandlePLEvent ()
   from /usr/lib/mozilla-1.3b/components/libgklayout.so
#44 0x40226dd3 in PL_HandleEvent () from /usr/lib/mozilla-1.3b/libxpcom.so
#45 0x40226ce1 in PL_ProcessPendingEvents ()
   from /usr/lib/mozilla-1.3b/libxpcom.so
#46 0x40227dbb in nsEventQueueImpl::ProcessPendingEvents ()
   from /usr/lib/mozilla-1.3b/libxpcom.so
#47 0x40b547be in event_processor_callback ()
   from /usr/lib/mozilla-1.3b/components/libwidget_gtk2.so
#48 0x4101e42f in g_io_unix_dispatch () from /usr/lib/libglib-2.0.so.0
#49 0x40ffcf65 in g_main_dispatch () from /usr/lib/libglib-2.0.so.0
#50 0x40ffdf98 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#51 0x40ffe2ad in g_main_context_iterate () from /usr/lib/libglib-2.0.so.0
#52 0x40ffea1f in g_main_loop_run () from /usr/lib/libglib-2.0.so.0
#53 0x40d3739f in gtk_main () from /usr/lib/libgtk-x11-2.0.so.0
#54 0x40b54a8e in nsAppShell::Run ()
   from /usr/lib/mozilla-1.3b/components/libwidget_gtk2.so
#55 0x40b322a6 in nsAppShellService::Run ()
   from /usr/lib/mozilla-1.3b/components/libnsappshell.so
#56 0x0804e6b7 in main1 ()
#57 0x0804ede3 in main ()
#58 0x420158d4 in __libc_start_main () from /lib/i686/libc.so.6
Can you put the following in your environment and run the test?

NSPR_LOG_MODULES=XftFontLoad:5

that will show the fonts that are loaded when rendering that page.
[0x8818678] setting up pattern with the following specification:
        lang group: x-western
        adding generic family: monospace
        point,pixel size: 9,180
        slant: roman
        weight: (orig,calc) 400,100
matched the following (18) fonts:
        Luxi Mono
        Nimbus Mono L
        Nimbus Mono L
        ZYSong18030
        Andale Mono
        Courier New
        Courier New
        Arial
        Arial Unicode MS
        Book Antiqua
        Lucida Sans Unicode
        Lucida Console
        Tahoma
        Courier
        LucidaTypewriter
        Gothic
        AR PL Mingti2L Big5
        Standard Symbols L
Hmm, nothing really unusual there.
Start by reducing your font list in /etc/fonts/fonts.conf (or local.conf)
to all non-MS fonts till it works. I had a dodgy font that crashed the xft
renderer reproduceably.

I've noticed that my MS Arial fonts crash the xft renderer. Reporter can
you change your Serif/Sans/Monospace to the Bitstream Vera fonts and try
again.
The font it was using was Luxi Mono, so I don't think MS fonts are the problem.
However, since I upgraded to Red Hat 9 a while ago, I can't reproduce the crash
anymore (either with Red Hat's Mozilla or Mozilla 1.4a GTK2). Instead I see a
character that has 000C in a box wherever there are form feed characters in a
text or HTML file. 

I find it strange that Mozilla doesn't treat form feed as a whitespace character
in HTML documents. I think this is a bug, according to the HTML spec:
  http://www.w3.org/TR/html4/struct/text.html#whitespace
Kicking over to layout.
Assignee: asa → block-and-inline
Component: Browser-General → Layout: Block & Inline
QA Contact: asa → ian
*** Bug 223224 has been marked as a duplicate of this bug. ***
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: [Gtk2] Crash when viewing text files with a ^L character (form feed) → [Gtk2] Crash when viewing text files with a ^L character (form feed) [@ XftCharIndex]
does anyone here believe this problem still exists?
reporter address is dead.
Summary: [Gtk2] Crash when viewing text files with a ^L character (form feed) [@ XftCharIndex] → [Gtk2] Crash when viewing text files with a ^L character - form feed not treated as a whitespace character in html [@ XftCharIndex]
Oh, sorry.

I’m on a totally different system now, but in Firefox 2, I still see a visible boxed “000C” character for form feeds.  In Firefox 3, I don’t see anything, so the problem may be fixed.
=> WFM then. Thanks
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → WORKSFORME
Crash Signature: [@ XftCharIndex]
You need to log in before you can comment on or make changes to this bug.