A few months ago I installed a Firefox 3 beta in my Linux laptop to… well you know, just to fool around. And it crashed spectacularly. I tried again with RC1. No such luck. When 3.0 came around I installed it in several machines –including my wife’s– but it still refused to run in mine.
Today I decided I had enough and ran FF under strace and generally whacked it around hoping to make it work without much luck. I finally decided to apt-get install iceweasel 3.0.1 expecting to have apt-get iron out any possible library conflict but the problem persisted. If anything Firefox crashed even harder because Debian’s Iceweasel does not include Mozilla’s Crash Reporter — it suggests that you install bug-buddy instead. I obligued dutifully and much to my surprise, bug-buddy’s crash report had an extensive and very useful stack trace that revealed libpango as the real culprit.
#1 0xb7db91ab in waitpid () from /lib/i686/cmov/libc.so.6
#2 0xb6382865 in gnome_gtk_module_info_get () from /usr/lib/libgnomeui-2.so.0
#3 0xb7113e2d in XRE_LockProfileDirectory () from /usr/lib/iceweasel/xulrunner/libxul.so
#5 0xb2d94c77 in TtfUtil::GetNameInfo () from /usr/lib/libgraphite.so.3
#6 0xb2d94ebb in TtfUtil::Get31EngFamilyInfo () from /usr/lib/libgraphite.so.3
#7 0xb2d940bc in gr::Font::UniqueCacheInfo () from /usr/lib/libgraphite.so.3
#8 0xb2d9308c in gr::Font::initialiseFontFace () from /usr/lib/libgraphite.so.3
#9 0xb2d93278 in gr::Font::RenderRangeSegment () from /usr/lib/libgraphite.so.3
#10 0xb2dbeeb0 in gr::RangeSegment::RangeSegment () from /usr/lib/libgraphite.so.3
#11 0xb383899e in graphite_PangoGlyphString (text=0xbfb73e88 ” ?<8A>?¸?¶”, length=1, xftfont=0xb36e6000, glyphs=0xb2cad800, language=0xb7b58a94 “en”) at pangographite.cpp:183
#12 0xb38393c0 in graphite_engine_script_shape (engine=0xb2c35a80, font=0xb36e6000, text=0xbfb73e88 ” ?<8A>?¸?¶”, length=1, analysis=0xbfb73e94, glyphs=0xb2cad800) at graphite-module.c:155
#13 0xb6c89e9a in pango_coverage_new () from /usr/lib/libpango-1.0.so.0
#14 0xb6c9c94a in pango_shape () from /usr/lib/libpango-1.0.so.0
#15 0xb7897e96 in gfxPangoFontGroup::SetGlyphs () from /usr/lib/iceweasel/xulrunner/libxul.so
After zapping libpango I had a working Iceweasel and a few seconds later I was running FF 3.0.1 as well. Now I will check the status of my 23 installed extensions (or at least of those I just can’t live without) and consider Firefox 3.0.1 seriously for my everyday browsing.