Subject: www/firefox2 issues on NetBSD/macppc 3.x
To: None <pkgsrc-users@netbsd.org>
From: David H. Gutteridge <dhgutteridge@sympatico.ca>
List: pkgsrc-users
Date: 11/06/2006 03:02:30
Hi all,

I thought I'd share my experiences with Firefox 2 on NetBSD/macppc 3.x.
I've run into a couple of problems with it, mostly the same as issues
I've had with Firefox 1.5, but they've become more pronounced, it
seems.

With 1.5 I had continual display glitches with fonts being the wrong
size, seemingly random substitutions of font families or sizes (e.g. if
I refreshed a page three times I'd get three different font families or
sizes appear for the same text), and occasional generally garbled
displays.  With 2.0 I see the same thing, only on top of that any
pull-down menus (whether for the application itself, or in web pages)
will randomly disappear and reappear (sometimes flicker, sometimes
just vanish).  This new problem made 2.0 basically unusable for me
(but read on...).  As well, 2.0 seems to generally garble pages a bit
more often.

I had a look at the hacks.mk file, and it made reference to
optimization bugs in the gcc 3.x series that caused display glitches.
I checked and noticed that while the file is intended to remove any
optimization flags from the compile, it doesn't actually have that
effect.  (At least, not with my system.  I've spotted old emails from
another pkgsrc user noting the same thing.  I did confirm the file is
indeed being included during builds.  When I say hacks.mk didn't
work, it's not in the firefox2 directory, so it may not get pulled in
there.  I tested with the firefox directory too, I did builds of 1.5
to see if hacks.mk had been working there, and it hadn't.)

As the hacks.mk file wasn't working for me, I found I had to manually
edit the /usr/share/mk/sys.mk file to change -O2 to -O0.  I'm sure
that's not the right way to do things, but I didn't have the patience
to ensure that I could inject an -O0 into a given compile command
after the -O2 (to override).  I rebuilt 2.0 with no optimization
(except the gtk2-specific flags that it inherits from that package),
and found that this did fix the most critical problem: the unusable
pull-down menus.  It didn't fix anything else, but it left me with
basically the same state of affairs as 1.5, which I can live with.
(Without optimization, 2.0 seems notably slower, no surprise I guess.)

I also wondered if gcc 3.4.6 (most recent in pkgsrc) might be better,
so I tried building 2.0 with that too.  Interested parties will see my
previous email to this list about that, everything compiled correctly,
but apparently there are problems with 3.4.6 on macppc.

Occasionally I get crashes due to segfaults.  This happened with 1.5
as well, more so on i386 than macppc.  I've noticed it happening
slightly more often with 2.0 on macppc.   They seem to occur most
commonly when firefox is first installed (e.g. its .mozilla directory
has just been created) and when it has just been started up and
multiple tabs are being loaded.  They always seem to be thread-related
somehow, they crash with a reference to the function nsProfileLock.
A related PR (27230) was opened in 2004, but closed in 2005.

The hardware I'm running it on is an old 366MHz iBook SE.  I
should note that the problems (excepting the segfaults) only happen
for me on macppc.  On i386, none of the display glitches exist, 2.0
works just fine, as did 1.5.  (Consistent with what the hacks.mk file
suggests.)

As an aside, another thing I noticed is that the OPTIONS.gecko+=debug
as provided through the options.mk file in www/seamonkey doesn't seem
to have the desired effect.  I found it's necessary to actually put
CONFIGURE_ARGS+=--enable-debug (and INSTALL_UNSTRIPPED=yes) to get
anything useful.  Maybe I'm doing something wrong.

If anyone has any advice on how to improve things (other than going to
a NetBSD version with gcc 4.1.x, ha ha), I'm all ears.

Regards,

Dave

PS Official Firefox builds for Power PC apparently use gcc 3.3 as
their compiler.  There's a note on their site about needing to avoid
use of -O3, but nothing about totally disabling optimization that I
could find.