Javascript dialogs, HTML 5 causes aborts/segfaults with sem loaded in www/firefox35

Jonathan Makela jonmakela at gmail.com
Mon Aug 17 00:20:16 UTC 2009


This is actually two separate bugs, although I have no doubt they are related.
Btw, before people start asking, I HAVE loaded sem.ko, as confirmed by kldstat.
These also occur in safe mode with all plugins disabled except for
"Default Plugin".
This is the latest firefox35 port. These bugs also survived a reboot
and only starting firefox and an xterm in twm. Note: I usually use
icewm with GTK applications.

Bug 1. The HTML5 video on the intro page.
It works, barely. Skipping backwards/forwards unreliably fails,
resulting in a segfault. It also uses 100% of CPU (enough to stop the
clock) for between 3-20 seconds while loading. Most of the time, it
doesn't fully load - or at least only plays a clip of varying length
from the beginning. Attempting to refresh the page with the video
expanded resuts in a segfault.
Bug 2. If javascript on a page attempts to open a dialog window of any
sort(prompt,alert,anything else except for a new tab) FF dies with the
message
Assertion 'pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE)
== 0' failed at pulsecore/mutex-posix.c:52, function pa_mutex_new().
Aborting.
Abort trap

This is exhibited on http://www.pageresource.com/jscript/jalert.htm
.Mousing over the the popup link causes an abort.
Oddly enough, that ALSO occurs while I'm shutting the browser window
with File->Quit.
I'm 90% sure that these problems have something to do with something
else I'm running.
Since I installed about 500 ports (literally) over the past 3 days, it
could be almost anything.
I recompiled with the DEBUG knob enabled. There are a LOT of failed
assertions and warnings while starting/running. I can provide the
entire logs on request, but here are several segments:

....(fine past registering the components)
*** Registering components in: nsUnixProxyModule
WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005: file
nsXREDirProvider.cpp, line 1159
WARNING: NS_ENSURE_TRUE(mHiddenWindow) failed: file
nsAppShellService.cpp, line 396
++WEBSHELL 0x2ca0bc00 == 1
++DOMWINDOW == 1 (0x2c5b92f0) [serial = 1] [outer = 0x0]
WARNING: dependent window created without a parent: file
nsAppStartup.cpp, line 484
++WEBSHELL 0x2ca0c800 == 2
++DOMWINDOW == 2 (0x2c5b94b0) [serial = 2] [outer = 0x0]
++DOMWINDOW == 3 (0x2c5b9670) [serial = 3] [outer = 0x2c5b9480]
++DOMWINDOW == 4 (0x2c5b99f0) [serial = 4] [outer = 0x2c5b92c0]
###!!! ASSERTION: non-root frame's desired size changed during an
incremental reflow: '(target == rootFrame && size.height ==
NS_UNCONSTRAINEDSIZE) || (desiredSize.width == size.width &&
desiredSize.height == size.height)', file nsPresShell.cpp, line 6721
###!!! ASSERTION: reflow state computed incorrect width:
'reflowState.ComputedWidth() == size.width -
reflowState.mComputedBorderPadding.LeftRight()', file nsPresShell.cpp,
line 6707
###!!! ASSERTION: reflow roots must not have visible overflow:
'desiredSize.mOverflowArea == nsRect(nsPoint(0, 0),
nsSize(desiredSize.width, desiredSize.height))', file nsPresShell.cpp,
line 6725
...
WARNING: NS_ENSURE_TRUE(browserChrome) failed: file nsDocShell.cpp, line 9297
WARNING: Something wrong when creating the docshell for a
frameloader!: file nsFrameLoader.cpp, line 902
WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005: file
nsFrameLoader.cpp, line 926
WARNING: NS_ENSURE_SUCCESS(rv, rv) failed with result 0x80004005: file
nsFrameLoader.cpp, line 182
++WEBSHELL 0x2d302000 == 5
++DOMWINDOW == 8 (0x2c5bb970) [serial = 8] [outer = 0x0]
WARNING: recurring into frame construction:
'mPresContext->mLayoutPhaseCount[eLayoutPhase_FrameC] == 0', file
./nsPresContext.h, line 1026
WARNING: recurring into frame construction:
'mPresContext->mLayoutPhaseCount[eLayoutPhase_FrameC] == 0', file
./nsPresContext.h, line 1026
###!!! ASSERTION: reflow state computed incorrect width:
'reflowState.ComputedWidth() == size.width -
reflowState.mComputedBorderPadding.LeftRight()', file nsPresShell.cpp,
line 6707
###!!! ASSERTION: non-root frame's desired size changed during an
incremental reflow: '(target == rootFrame && size.height ==
NS_UNCONSTRAINEDSIZE) || (desiredSize.width == size.width &&
desiredSize.height == size.height)', file nsPresShell.cpp, line 6721
++DOMWINDOW == 9 (0x2c5bcaf0) [serial = 9] [outer = 0x2c5ba980]
++DOMWINDOW == 10 (0x2c5bccb0) [serial = 10] [outer = 0x2c5bb940]
###!!! ASSERTION: reflow state computed incorrect width:
'reflowState.ComputedWidth() == size.width -
reflowState.mComputedBorderPadding.LeftRight()', file nsPresShell.cpp,
line 6707
###!!! ASSERTION: non-root frame's desired size changed during an
incremental reflow: '(target == rootFrame && size.height ==
NS_UNCONSTRAINEDSIZE) || (desiredSize.width == size.width &&
desiredSize.height == size.height)', file nsPresShell.cpp, line 6721
###!!! ASSERTION: reflow state computed incorrect width:
'reflowState.ComputedWidth() == size.width -
reflowState.mComputedBorderPadding.LeftRight()', file nsPresShell.cpp,
line 6707
###!!! ASSERTION: non-root frame's desired size changed during an
incremental reflow: '(target == rootFrame && size.height ==
NS_UNCONSTRAINEDSIZE) || (desiredSize.width == size.width &&
desiredSize.height == size.height)', file nsPresShell.cpp, line 6721
###!!! ASSERTION: reflow roots must not have visible overflow:
'desiredSize.mOverflowArea == nsRect(nsPoint(0, 0),
nsSize(desiredSize.width, desiredSize.height))', file nsPresShell.cpp,
line 6725
pldhash: for the table at address 0x2d79c4d8, the given entrySize of
52 probably favors chaining over double hashing.
WARNING: Positioned frame that does not handle positioned kids;
looking further up the parent chain: file nsCSSFrameConstructor.cpp,
line 7803
WARNING: Positioned frame that does not handle positioned kids;
looking further up the parent chain: file nsCSSFrameConstructor.cpp,
line 7803
WARNING: Positioned frame that does not handle positioned kids;
looking further up the parent chain: file nsCSSFrameConstructor.cpp,
line 7803
++WEBSHELL 0x2d306800 == 6
...
*** e = [Exception... "Component returned failure code: 0x80570016
(NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]"  nsresult:
"0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE)"  location: "JS frame
:: chrome://browser/content/utilityOverlay.js :: getShellService ::
line 312"  data: no]
WARNING: Positioned frame that does not handle positioned kids;
looking further up the parent chain: file nsCSSFrameConstructor.cpp,
line 7803
++WEBSHELL 0x2d306e00 == 7
++DOMWINDOW == 13 (0x2d7d0570) [serial = 13] [outer = 0x0]
++DOMWINDOW == 14 (0x2d7d0730) [serial = 14] [outer = 0x2d7d0540]
###!!! ASSERTION: non-root frame's desired size changed during an
incremental reflow: '(target == rootFrame && size.height ==
NS_UNCONSTRAINEDSIZE) || (desiredSize.width == size.width &&
desiredSize.height == size.height)', file nsPresShell.cpp, line 6721
WARNING: Positioned frame that does not handle positioned kids;
looking further up the parent chain: file nsCSSFrameConstructor.cpp,
line 7803
++DOMWINDOW == 15 (0x2d7d08f0) [serial = 15] [outer = 0x2c5bb940]
++DOMWINDOW == 16 (0x2d7d0ab0) [serial = 16] [outer = 0x2d7d0540]
...
###!!! ASSERTION: reflow state computed incorrect width:
'reflowState.ComputedWidth() == size.width -
reflowState.mComputedBorderPadding.LeftRight()', file nsPresShell.cpp,
line 6707
###!!! ASSERTION: reflow roots must not have visible overflow:
'desiredSize.mOverflowArea == nsRect(nsPoint(0, 0),
nsSize(desiredSize.width, desiredSize.height))', file nsPresShell.cpp,
line 6725
###!!! ASSERTION: non-root frame's desired size changed during an
incremental reflow: '(target == rootFrame && size.height ==
NS_UNCONSTRAINEDSIZE) || (desiredSize.width == size.width &&
desiredSize.height == size.height)', file nsPresShell.cpp, line 6721
++DOMWINDOW == 17 (0x2d7d3830) [serial = 17] [outer = 0x2d7d01c0]
WARNING: recurring into frame construction:
'mPresContext->mLayoutPhaseCount[eLayoutPhase_FrameC] == 0', file
./nsPresContext.h, line 1026
###!!! ASSERTION: non-root frame's desired size changed during an
incremental reflow: '(target == rootFrame && size.height ==
NS_UNCONSTRAINEDSIZE) || (desiredSize.width == size.width &&
desiredSize.height == size.height)', file nsPresShell.cpp, line 6721
###!!! ASSERTION: reflow state computed incorrect width:
'reflowState.ComputedWidth() == size.width -
reflowState.mComputedBorderPadding.LeftRight()', file nsPresShell.cpp,
line 6707
###!!! ASSERTION: reflow roots must not have visible overflow:
'desiredSize.mOverflowArea == nsRect(nsPoint(0, 0),
nsSize(desiredSize.width, desiredSize.height))', file nsPresShell.cpp,
line 6725

another warning from a separate session:
WARNING: NS_ENSURE_TRUE(docEvent && target) failed: file
nsContentUtils.cpp, line 3098


line from the makefile:
# $FreeBSD: ports/www/firefox35/Makefile,v 1.179 2009/08/04 23:11:44 miwi Exp $
Firefox version:
Mozilla Firefox 3.5.2, Copyright (c) 1998 - 2009 mozilla.org
$ uname -a
FreeBSD dbox 7.2-RELEASE FreeBSD 7.2-RELEASE #0: Fri May  1 08:49:13
UTC 2009     root at walker.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC
i386
$ kldstat
Id Refs Address    Size     Name
 1   29 0xc0400000 9fab28   kernel
 2    1 0xc0dfb000 102c8    if_iwi.ko
 3    1 0xc0e0c000 6fa8     snd_ich.ko
 4    2 0xc0e13000 4a64c    sound.ko
 5    1 0xc0e5e000 2f33c    iwi_ibss.ko
 6    1 0xc0e8e000 30160    iwi_bss.ko
 7    1 0xc0ebf000 2f4b0    iwi_monitor.ko
 8    1 0xc0eef000 53e4     sem.ko
 9    2 0xc0ef5000 6a45c    acpi.ko
10    1 0xc0f60000 4f54     acpi_ibm.ko
11    1 0xc0f65000 ba94     cpufreq.ko
12    1 0xc3584000 7000     linprocfs.ko
13    1 0xc358b000 22000    linux.ko
14    1 0xc3831000 2000     blank_saver.ko

/etc/make..conf optimization options:
CFLAGS = -O2 -funroll-loops -pipe
CPUTYPE?=native

Knobs enabled in firefox35 config:
DBUS
NEWTAB
DEBUG
LOGGING
Problem also occured with:
DBUS
NEWTAB
OPTIMIZED_CFLAGS


More information about the freebsd-gecko mailing list