The provider test hits an assertion failure (PR_Delete failed)

NEW
Assigned to

Status

15 years ago
12 years ago

People

(Reporter: wtc, Assigned: wtc)

Tracking

4.4.1
Sun
Solaris

Firefox Tracking Flags

(Not tracked)

Details

(Assignee)

Description

15 years ago
This is NSPR 4.4.1 32-bit Solaris 8 debug build.

The assertion at provider.c:625 failed:

   621  aborted:
   622      PR_ClearInterrupt();
   623      if (NULL != file) PR_Close(file);
   624      drv = PR_Delete(descriptor->filename);
   625      TEST_ASSERT(PR_SUCCESS == drv);

The value of descriptor->filename is "CS40a65a562d478-1e1.dat",
and that file doesn't exist (either it wasn't created in the
first place or it has been deleted).  The errno is 0; I'm not
sure if that value is reliable.

Some debug info from the core file:

(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) threads
      t@1         ?()   sleep on 0x29c40        in cond_wait()
      t@2  b l@2  ?()   LWP suspended   in __signotifywait()
      t@3         ?()   sleep on (unknown)      in _reap_wait()
      t@4  a l@4  pthread_start()       sleep on 0x29c68        in _lwp_sema_wai
t()
o>    t@6  a l@1  pthread_start()       signal SIGABRT  in __sigprocmask()
      t@7  b l@5  _co_timerset()        LWP suspended   in _lwp_sema_wait()
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) thread t@1
Current function is PR_WaitCondVar
  389           rv = pthread_cond_wait(&cvar->cv, &cvar->lock->mutex);
t@1 (l@X) stopped in cond_wait at 0xff2a8014
0xff2a8014: cond_wait+0x00e4:   call    _swtch
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) where
current thread: t@1
  [1] cond_wait(0x4356, 0x2d2a8, 0xff2ce000, 0x29c40, 0x281c8, 0xff3803ac), at 0
xff2a8014
  [2] _ti_pthread_cond_wait(0x29c40, 0x2d2a8, 0x1, 0x1, 0x0, 0x2d471), at 0xff2a
7f10
=>[3] PR_WaitCondVar(cvar = 0x29c38, timeout = 4294967295U), line 389 in "ptsync
h.c"
  [4] main(argc = 1, argv = 0xffbef944), line 1403 in "provider.c"
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) thread t@2
t@2 (l@2) stopped in __signotifywait at 0xff219290
0xff219290: __signotifywait+0x0008:     bgeu    __signotifywait+0x30
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) where
current thread: t@2
=>[1] __signotifywait(0x4, 0xff2ce000, 0x0, 0x0, 0x0, 0x0), at 0xff219290
  [2] _dynamiclwps(0xff2ce000, 0x5c, 0x0, 0x0, 0x0, 0x0), at 0xff2aea04
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) thread t@3
t@3 (l@X) stopped in _reap_wait at 0xff2ad9bc
0xff2ad9bc: _reap_wait+0x0038:  call    _swtch
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) where
current thread: t@3
=>[1] _reap_wait(0xff2d2a18, 0x20920, 0x0, 0xff2ce000, 0x0, 0x0), at 0xff2ad9bc
  [2] _reaper(0xff2cee40, 0xff2d4780, 0xff2d2a18, 0xff2cee18, 0x1, 0xfe400000),
at 0xff2ad714
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) thread t@4
Current function is PR_WaitCondVar
  389           rv = pthread_cond_wait(&cvar->cv, &cvar->lock->mutex);
t@4 (l@4) stopped in _lwp_sema_wait at 0xff2198c0
0xff2198c0: _lwp_sema_wait+0x000c:      bgeu,a  _lwp_sema_wait+0x20
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) where
current thread: t@4
  [1] _lwp_sema_wait(0x4, 0x0, 0x0, 0x4, 0x24f9c, 0x2), at 0xff2198c0
  [2] _park(0xfe7f1e30, 0xff2ce000, 0x0, 0xfe7f1d78, 0x2501c, 0x0), at 0xff2a97f
4
  [3] _swtch(0xfe7f1d78, 0x0, 0xff2ce000, 0x5, 0x1, 0xfe401000), at 0xff2a94d0
  [4] cond_wait(0x4356, 0x2d2a8, 0xff2ce000, 0x29c68, 0xfe7f1d78, 0x0), at 0xff2
a8014
  [5] _ti_pthread_cond_wait(0x29c68, 0x2d2a8, 0x2d2a8, 0x1, 0x0, 0xfe7f1c39), at
 0xff2a7f10
=>[6] PR_WaitCondVar(cvar = 0x29c60, timeout = 4294967295U), line 389 in "ptsync
h.c"
  [7] Server(arg = 0x2d248), line 1075 in "provider.c"
  [8] pthread_start(arg = 0x29388), line 656 in "provider.c"
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) up
Current function is Server
 1075           (void)PR_WaitCondVar(server->pool.exiting, PR_INTERVAL_NO_TIMEOU
T);
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print *server
*server = {
    list             = {
        next = 0x2d248
        prev = 0x2d248
    }
    ml               = 0x2d2a8
    thread           = 0x2d308
    stateChange      = 0x29c38
    port             = 13000U
    backlog          = 5U
    listener         = 0x285e8
    pool             = {
        exiting        = 0x29c60
        acceptComplete = 0x29c88
        accepting      = 0
        active         = 1U
        workers        = 1U
    }
    state            = cs_stop
    workers          = {
        minimum   = 0
        maximum   = 0
        accepting = 1U
    }
    started          = 1084643829U
    stopped          = 0
    operations       = 481U
    bytesTransferred = 492264U
}
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) thread t@5
dbx: warning: invalid frame pointer
t@5 (l@X) stopped in _swtch at 0xff2a94d0
0xff2a94d0: _swtch+0x0400:      call    _park
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) where
current thread: t@5
=>[1] _swtch(0xff35e784, 0x0, 0xff318c80, 0xff30291c, 0x0, 0xfe7d16dc), at 0xff2
a94d0
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) thread t@6
t@6 (l@1) stopped in __sigprocmask at 0xff2b9bf0
0xff2b9bf0: __sigprocmask+0x0008:       jmp     %o7 + 0x8
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) where
current thread: t@6
  [1] __sigprocmask(0x0, 0xfe7b1478, 0x0, 0x0, 0x0, 0x0), at 0xff2b9bf0
  [2] _resetsig(0xff2bc510, 0x0, 0x0, 0xfe7b1d78, 0xff2ce000, 0x0), at 0xff2ae62
0
  [3] _sigon(0xfe7b1d78, 0xff2d5990, 0x6, 0xfe7b154c, 0xfe7b1d78, 0xff380d8c), a
t 0xff2add10
  [4] _thrp_kill(0x0, 0x6, 0x6, 0xff2ce000, 0x6, 0xff23a428), at 0xff2b0e84
  [5] raise(0x6, 0x0, 0x0, 0xffffffff, 0xff23a394, 0xff35e590), at 0xff1c9b08
  [6] abort(0xff236000, 0x5a, 0xff23d99c, 0xff239c78, 0x271, 0xff211c94), at 0xf
f1b5124
  [7] PR_Assert(s = 0x171d8 "PR_SUCCESS == drv", file = 0x16bbc "../../../mozill
a/nsprpub/pr/tests/provider.c", ln = 625), line 516 in "prlog.c"
  [8] _MY_Assert(s = 0x171d8 "PR_SUCCESS == drv", file = 0x16bbc "../../../mozil
la/nsprpub/pr/tests/provider.c", ln = 625), line 217 in "provider.c"
=>[9] ProcessRequest(fd = 0x28668, server = 0x2d248), line 625 in "provider.c"
  [10] Worker(arg = 0x28e20), line 950 in "provider.c"
  [11] pthread_start(arg = 0x293b8), line 656 in "provider.c"
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print drv
drv = PR_FAILURE
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print rv
rv = PR_FAILURE
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print file
file = (nil)
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print *descriptor
*descriptor = {
    size     = 918
    filename = "CS40a65a562d478-1e1.dat"
}
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print errno
errno = 0
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) thread t@7
t@7 (l@5) stopped in _lwp_sema_wait at 0xff2198c0
0xff2198c0: _lwp_sema_wait+0x000c:      bgeu,a  _lwp_sema_wait+0x20
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) where
current thread: t@7
=>[1] _lwp_sema_wait(0x4, 0xff2cfa30, 0x0, 0x0, 0xe, 0xfee0bce0), at 0xff2198c0
  [2] _co_timerset(0xff2ced60, 0xff2ce000, 0x0, 0x3, 0xff2ce000, 0x0), at 0xff2a
8a6c
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) thread t@8
dbx: no thread with id 8
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx)
(Assignee)

Comment 1

15 years ago
Here are the values of function arguments and local
variables at provider.c:625:

(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) down
Current function is ProcessRequest
  625       TEST_ASSERT(PR_SUCCESS == drv);
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print netbytes
netbytes = 201
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print filebytes
filebytes = 0
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print descbytes
descbytes = 918
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print bytes
bytes = 64
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print drv
drv = PR_FAILURE
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print rv
rv = PR_FAILURE
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print buffer
buffer = "127.0.0.1"
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print file
file = (nil)
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print me
me = 0x2d530
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print *me
*me = {
    state             = 130U
    priority          = PR_PRIORITY_NORMAL
    arg               = (nil)
    startFunc         = (nil)
    stack             = (nil)
    environment       = (nil)
    dump              = (nil)
    dumpArg           = (nil)
    tpdLength         = 0
    privateData       = (nil)
    errorCode         = -5950
    osErrorCode       = 2
    errorStringLength = 0
    errorStringSize   = 0
    errorString       = (nil)
    id                = 6U
    okToDelete        = 0
    waiting           = (nil)
    sp                = (nil)
    next              = (nil)
    prev              = 0x2d308
    suspend           = 0
    interrupt_blocked = 0
    syspoll_list      = (nil)
    syspoll_count     = 0
}
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print *descriptor
*descriptor = {
    size     = 918
    filename = "CS40a65a562d478-1e1.dat"
}
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print fd
fd = 0x28668
(/tools/ns/workshop-6.2/bin/../WS6U2/bin/sparcv9/dbx) print *server
*server = {
    list             = {
        next = 0x2d248
        prev = 0x2d248
    }
    ml               = 0x2d2a8
    thread           = 0x2d308
    stateChange      = 0x29c38
    port             = 13000U
    backlog          = 5U
    listener         = 0x285e8
    pool             = {
        exiting        = 0x29c60
        acceptComplete = 0x29c88
        accepting      = 0
        active         = 1U
        workers        = 1U
    }
    state            = cs_stop
    workers          = {
        minimum   = 0
        maximum   = 0
        accepting = 1U
    }
    started          = 1084643829U
    stopped          = 0
    operations       = 481U
    bytesTransferred = 492264U
}
QA Contact: wtchang → nspr
You need to log in before you can comment on or make changes to this bug.