Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 23 Mar 2004 12:14:41 +0100
From:      Alexander Leidinger <Alexander@Leidinger.net>
To:        Doug White <dwhite@gumbysoft.com>
Cc:        "Russell D. Murphy Jr." <rdmurphy@vt.edu>
Subject:   Re: Mozilla crash and burn?
Message-ID:  <20040323121441.1e535e57@Magellan.Leidinger.net>
In-Reply-To: <20040322180728.F5352@carver.gumbysoft.com>
References:  <16479.30826.56912.226587@knock.econ.vt.edu> <20040322180728.F5352@carver.gumbysoft.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, 22 Mar 2004 18:07:54 -0800 (PST)
Doug White <dwhite@gumbysoft.com> wrote:

> On Mon, 22 Mar 2004, Russell D. Murphy Jr. wrote:
> 
> >
> > Mozilla has been non-functional since I updated my machine on Friday.
> >
> >    FreeBSD knock.econ.vt.edu 5.2-CURRENT FreeBSD 5.2-CURRENT #0:
> >       Fri Mar 19 05:13:08 EST 2004
> >       root@knock.econ.vt.edu:/usr/obj/usr/src/sys/KNOCK  i386
> >
> > I've rebuilt mozilla (portupgrade -fRr mozilla), gotten rid of all
> > plugins and it still dies.
> >
> > The symptom is that it starts and opens up the initial window (a
> > collection of bookmarks - a local file).  If I click on one of the
> > links, the title is displayed in the window frame, the URL is
> > displayed in the address box, and mozilla claims to be "transferring
> > data from ...".  Then mozilla crashes.  No window, no remaining
> > process.
> 
> Any output on the terminal you launched mozilla from?

No. And trying to run mozilla within gdb ("mozilla -g"), doesn't work
(gdb aborts). I can reproduce it with www.gnomedesktop.org and
www.invdeo.org.


I'm building a debug version of mozilla (--enable-debug, --enable-tests,
--disable-strip) and I get abort traps while building mozilla (this is
with mozilla-devel, but I've also seen the above mentioned behavior with
1.6, I reverted to 1.5 a while ago, but decided to give 1.7 a try after
a resolver, expat and freetype recompile orgy):

---snip---
gmake[4]: Leaving directory `/big/usr/ports/www/mozilla-devel/work/mozilla/secur
ity/nss/cmd/shlibsign/mangle'
FreeBSD5.2_DBG.OBJ/shlibsign -v -i /big/usr/ports/www/mozilla-devel/work/mozilla
/dist/lib/libsoftokn3.so
Assertion failure: _PT_PTHREAD_MUTEX_IS_LOCKED(lock->mutex), at ptsynch.c:207
Abort trap (core dumped)
gmake[3]: *** [/big/usr/ports/www/mozilla-devel/work/mozilla/dist/lib/libsoftokn
3.chk] Error 134
gmake[3]: Leaving directory `/big/usr/ports/www/mozilla-devel/work/mozilla/secur
ity/nss/cmd/shlibsign'
gmake[2]: *** [libs] Error 2
gmake[2]: Leaving directory `/big/usr/ports/www/mozilla-devel/work/mozilla/secur
ity/manager'
gmake[1]: *** [tier_40] Error 2
gmake[1]: Leaving directory `/big/usr/ports/www/mozilla-devel/work/mozilla'
gmake: *** [default] Error 2
*** Error code 2
---snip--

Running this application within gdb works as intented (no abort), but
further in the build I get:

---snip---
gmake[1]: Leaving directory `/big/usr/ports/www/mozilla-devel/work/mozilla'
/usr/bin/sed -e "s|%%PREFIX%%|/usr/X11R6|g" -e "s|%%MOZILLA%%|mozilla-devel|g"
/big/usr/ports/www/mozilla-devel/files/mozilla.sh >/big/usr/ports/www/mozilla-de
vel/work/mozilla/mozilla-devel
(cd /big/usr/ports/www/mozilla-devel/work/mozilla/dist/bin;  /usr/bin/env LD_LIB
RARY_PATH=. MOZILLA_FIVE_HOME=. ./regxpcom;  /usr/bin/env LD_LIBRARY_PATH=. MOZI
LLA_FIVE_HOME=. ./regchrome;  /usr/bin/touch ./chrome/user-skins.rdf ./chrome/us
er-locales.rdf)
Assertion failure: _PT_PTHREAD_MUTEX_IS_LOCKED(lock->mutex), at ptsynch.c:207
Abort trap (core dumped)
*** Error code 134

# cd /big/usr/ports/www/mozilla-devel/work/mozilla/dist/bin;  /usr/bin/env LD_LI
BRARY_PATH=. MOZILLA_FIVE_HOME=. gdb ./regxpcom;  /usr/bin/env LD_LIBRARY_PATH=.
 MOZILLA_FIVE_HOME=. gdb ./regchrome;  /usr/bin/touch ./chrome/user-skins.rdf ./
chrome/user-locales.rdf
GNU gdb 5.2.1 (FreeBSD)
Copyright 2002 Free Software Foundation, Inc.

Starting program: /big/usr/ports/www/mozilla-devel/work/mozilla/xpcom/tools/regi
stry/regxpcom
Assertion failure: _PT_PTHREAD_MUTEX_IS_LOCKED(lock->mutex), at ptsynch.c:207

Program received signal SIGABRT, Aborted.
0x281d97e7 in kill () from /lib/libc.so.5
tarting program: /big/usr/ports/www/mozilla-devel/work/mozilla/rdf/chrome/tools/
chromereg/regchrome
Assertion failure: _PT_PTHREAD_MUTEX_IS_LOCKED(lock->mutex), at ptsynch.c:207

Program received signal SIGABRT, Aborted.
0x2839f7e7 in kill () from /lib/libc.so.5
(gdb) bt
#0  0x2839f7e7 in kill () from /lib/libc.so.5
#1  0x282822e2 in raise () from /usr/lib/libpthread.so.1
#2  0x283f4a37 in abort () from /lib/libc.so.5
#3  0x2825951b in PR_Assert () at prlog.c:530
#4  0x2826892f in PR_Unlock (lock=0x28272b80) at ptsynch.c:207
#5  0x282613f0 in PR_GetEnv (var=0x28272263 "NSPR_FD_CACHE_SIZE_LOW")
    at prenv.c:80
#6  0x28255553 in _PR_InitFdCache () at prfdcach.c:259
#7  0x2826a4d7 in _PR_InitIO () at ptio.c:1153
#8  0x28261b87 in _PR_InitStuff () at prinit.c:235
#9  0x282591de in PR_NewLogModule (name=0x2813e5cb "nsTimerImpl")
    at prlog.c:343
#10 0x28113aec in __static_initialization_and_destruction_0 (__initialize_p=1,
    __priority=65535) at nsTimerImpl.h:52
#11 0x28113b07 in _GLOBAL__I__ZN11TimerThread6AddRefEv () at nsTimerImpl.h:494
#12 0x2813e235 in __do_global_ctors_aux () from ./libxpcom.so
#13 0x280b8242 in _init () from ./libxpcom.so
#14 0x280517ce in _rtld () from /libexec/ld-elf.so.1
(gdb) up 5
#5  0x282613f0 in PR_GetEnv (var=0x28272263 "NSPR_FD_CACHE_SIZE_LOW")
    at prenv.c:80
80          _PR_UNLOCK_ENV();
Current language:  auto; currently c
(gdb) list
75
76          if (!_pr_initialized) _PR_ImplicitInitialization();
77
78          _PR_LOCK_ENV();
79          ev = _PR_MD_GET_ENV(var);
80          _PR_UNLOCK_ENV();
81          return ev;
82      }
83
84      PR_IMPLEMENT(PRStatus) PR_SetEnv(const char *string)
(gdb) down 1
#4  0x2826892f in PR_Unlock (lock=0x28272b80) at ptsynch.c:207
207         PR_ASSERT(_PT_PTHREAD_MUTEX_IS_LOCKED(lock->mutex));
(gdb) list
202     PR_IMPLEMENT(PRStatus) PR_Unlock(PRLock *lock)
203     {
204         PRIntn rv;
205
206         PR_ASSERT(lock != NULL);
207         PR_ASSERT(_PT_PTHREAD_MUTEX_IS_LOCKED(lock->mutex));
208         PR_ASSERT(PR_TRUE == lock->locked);
209         PR_ASSERT(pthread_equal(lock->owner, pthread_self()));
210
211         if (!lock->locked || !pthread_equal(lock->owner, pthread_self()))
(gdb) quit

#0  0x281d97e7 in kill () from /lib/libc.so.5
#1  0x280bc2e2 in raise () from /usr/lib/libpthread.so.1
#2  0x2822ea37 in abort () from /lib/libc.so.5
#3  0x2809351b in PR_Assert () at prlog.c:530
#4  0x280a292f in PR_Unlock (lock=0x280acb80) at ptsynch.c:207
#5  0x2809b3f0 in PR_GetEnv (var=0x280ac263 "NSPR_FD_CACHE_SIZE_LOW")
    at prenv.c:80
#6  0x2808f553 in _PR_InitFdCache () at prfdcach.c:259
#7  0x280a44d7 in _PR_InitIO () at ptio.c:1153
#8  0x2809bb87 in _PR_InitStuff () at prinit.c:235
#9  0x280969f9 in pr_LoadLibraryByPathname (name=0x804b80a "libxpcom.so",
    flags=671832520) at prlink.c:921
#10 0x2809698d in PR_LoadLibraryWithFlags (libSpec=
          {type = PR_LibSpec_Pathname, value = {pathname = 0x804b80a "libxpcom.s
o", mac_named_fragment = {fsspec = 0x804b80a, name = 0x1068310 <Error reading ad
dress 0x1068310: Bad address>}, mac_indexed_fragment = {fsspec = 0x804b80a, inde
x = 17203984}}}, flags=33434) at prlink.c:612
#11 0x0804a331 in XPCOMGlueStartup (xpcomFile=0x0) at nsXPCOMGlue.cpp:108
#12 0x080491df in startup_xpcom() () at regxpcom.cpp:141
#13 0x080497de in main (argc=0, argv=0xbfbfeaf8) at regxpcom.cpp:389
#14 0x08048d14 in _start ()
(gdb) up 5
#5  0x2809b3f0 in PR_GetEnv (var=0x280ac263 "NSPR_FD_CACHE_SIZE_LOW")
    at prenv.c:80
80          _PR_UNLOCK_ENV();
Current language:  auto; currently c
(gdb) list
75
76          if (!_pr_initialized) _PR_ImplicitInitialization();
77
78          _PR_LOCK_ENV();
79          ev = _PR_MD_GET_ENV(var);
80          _PR_UNLOCK_ENV();
81          return ev;
82      }
83
84      PR_IMPLEMENT(PRStatus) PR_SetEnv(const char *string)
(gdb) print ev
$1 = 0x0
(gdb) down 1
#4  0x280a292f in PR_Unlock (lock=0x280acb80) at ptsynch.c:207
207         PR_ASSERT(_PT_PTHREAD_MUTEX_IS_LOCKED(lock->mutex));
(gdb) list
202     PR_IMPLEMENT(PRStatus) PR_Unlock(PRLock *lock)
203     {
204         PRIntn rv;
205
206         PR_ASSERT(lock != NULL);
207         PR_ASSERT(_PT_PTHREAD_MUTEX_IS_LOCKED(lock->mutex));
208         PR_ASSERT(PR_TRUE == lock->locked);
209         PR_ASSERT(pthread_equal(lock->owner, pthread_self()));
210
211         if (!lock->locked || !pthread_equal(lock->owner, pthread_self()))
(gdb) print lock
$2 = (PRLock *) 0x280acb80
(gdb) print *lock
$3 = {mutex = 0x65737341, notified = {length = 1869182066, cv = {{
        cv = 0x6166206e, times = 1920298089}, {cv = 0x25203a65,
        times = 1629498483}, {cv = 0x73252074, times = 174335290}, {
        cv = 0x6d727000, times = 779116909}, {cv = 0x63, times = 0}, {
        cv = 0x0, times = 0}}, link = 0x0}, locked = 0, owner = 0x746f7270}
(gdb) up 6
#10 0x2809698d in PR_LoadLibraryWithFlags (libSpec=
          {type = PR_LibSpec_Pathname, value = {pathname = 0x804b80a "libxpcom.s
o", mac_named_fragment = {fsspec = 0x804b80a, name = 0x1068310 <Error reading ad
dress 0x1068310: Bad address>}, mac_indexed_fragment = {fsspec = 0x804b80a, inde
x = 17203984}}}, flags=33434) at prlink.c:612
612                 return pr_LoadLibraryByPathname(libSpec.value.pathname, flag
s);
(gdb) list
607         if (flags == 0) {
608             flags = _PR_DEFAULT_LD_FLAGS;
609         }
610         switch (libSpec.type) {
611             case PR_LibSpec_Pathname:
612                 return pr_LoadLibraryByPathname(libSpec.value.pathname, flag
s);
613     #ifdef XP_MAC
614             case PR_LibSpec_MacNamedFragment:
615                 return pr_Mac_LoadNamedFragment(
616                     libSpec.value.mac_named_fragment.fsspec,
(gdb) print libSpec.value.pathname
$5 = 0x804b80a "libxpcom.so"
(gdb) print flags
$6 = 33434
(gdb) quit
---snip---

I reviewed:
---snip---
# grep -R _PT_PTHREAD_MUTEX_IS_LOCKED . | grep define
./nsprpub/pr/include/md/_pth.h:#define _PT_PTHREAD_MUTEX_IS_LOCKED(m)    (0 == p
thread_mutex_trylock(&(m)))
./nsprpub/pr/include/md/_pth.h:#define _PT_PTHREAD_MUTEX_IS_LOCKED(m)    (EBUSY
== pthread_mutex_trylock(&(m)))
./nsprpub/pr/include/md/_pth.h:#define _PT_PTHREAD_MUTEX_IS_LOCKED(m)    (EBUSY
== pthread_mutex_trylock(&(m)))
./dist/include/nspr/md/_pth.h:#define _PT_PTHREAD_MUTEX_IS_LOCKED(m)    (0 == pt
hread_mutex_trylock(&(m)))
./dist/include/nspr/md/_pth.h:#define _PT_PTHREAD_MUTEX_IS_LOCKED(m)    (EBUSY =
= pthread_mutex_trylock(&(m)))
./dist/include/nspr/md/_pth.h:#define _PT_PTHREAD_MUTEX_IS_LOCKED(m)    (EBUSY =
= pthread_mutex_trylock(&(m)))
./dist/sdk/nspr/include/md/_pth.h:#define _PT_PTHREAD_MUTEX_IS_LOCKED(m)    (0 =
= pthread_mutex_trylock(&(m)))
./dist/sdk/nspr/include/md/_pth.h:#define _PT_PTHREAD_MUTEX_IS_LOCKED(m)    (EBU
SY == pthread_mutex_trylock(&(m)))
./dist/sdk/nspr/include/md/_pth.h:#define _PT_PTHREAD_MUTEX_IS_LOCKED(m)    (EBU
SY == pthread_mutex_trylock(&(m)))

# grep -R _PR_LOCK_ENV . | grep define
./nsprpub/pr/src/misc/prenv.c:#define _PR_LOCK_ENV()
./nsprpub/pr/src/misc/prenv.c:#define _PR_LOCK_ENV() if (_pr_primordialCPU) _PR_
INTSOFF(_is);
./nsprpub/pr/src/misc/prenv.c:#define _PR_LOCK_ENV() { if (_pr_envLock) PR_Lock(
_pr_envLock); }
---snip---

Unfortunately I haven't found a problem. And I don't know where to look
further... :-(

Feel free to make suggestions. I keep the work directory of the port in
case someone has a clever idea what to try next...

Bye,
Alexander.

-- 
           I will be available to get hired in April 2004.

http://www.Leidinger.net                       Alexander @ Leidinger.net
  GPG fingerprint = C518 BC70 E67F 143F BE91  3365 79E2 9C60 B006 3FE7



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040323121441.1e535e57>