Hello,
I am having an issue with SSL_ConfigMPServerSIDCache on a Fedora Core 5
with 2.6.16 kernel. On a Unix machine, SSL_ConfigMPServerSIDCache
calls LaunchLockPoller, which starts LockPoller() in another thread to
poll the cache for expired locks. However, the cache pointer that
LockPoller receives is NULL. This happens in this situation: I use
Apache with mod_nss, start it with 'apachectl start', stop it with
'apachectl stop' and then start it again. Sometimes I need to start
and stop two times before I get this error.
Here is the GDB trace:
(gdb) bt
#0 0x4569988b in LockPoller (arg=0x456ab280) at sslsnce.c:1461
#1 0x453c39da in _pt_root (arg=0x82e98a8) at
../../../../pr/src/pthreads/ptthread.c:220
#2 0x48e943b6 in start_thread () from /lib/libpthread.so.0
#3 0x48aeb33e in clone () from /lib/libc.so.6
And here is what the arg argument passed to LockPoller contains.
(gdb) print *(cacheDesc *)arg
$1 = {cacheMemSize = 0, numSIDCacheLocks = 0, numSIDCacheSets = 0,
numSIDCacheSetsPerLock = 0, numSIDCacheEntries = 0,
sidCacheSize = 0, numCertCacheEntries = 0, certCacheSize = 0,
numKeyCacheEntries = 0, keyCacheSize = 0, ssl2Timeout = 0,
ssl3Timeout = 0, numSIDCacheLocksInitialized = 0, nextCertCacheEntry
= 0, stopPolling = 0, everInherited = 0,
sidCacheLocks = 0x0, keyCacheLock = 0x0, certCacheLock = 0x0,
sidCacheSets = 0x0, sidCacheData = 0x0,
certCacheData = 0x0, keyCacheData = 0x0, cacheMem = 0x0, sharedCache
= 0x0, cacheMemMap = 0x0, poller = 0x0, shared = 0}
When SSL_ConfigMPServerSIDCache invokes LaunchLockPoller, it passes to
it a pointer to the global cache:
cacheDesc * cache = &globalCache;
...
...
#if defined(XP_UNIX) || defined(XP_BEOS)
/* Launch thread to poll cache for expired locks on Unix */
LaunchLockPoller(cache);
#endif
Does anybody know in what situation this pointer to the global cache
might be NULL?
Peter
_______________________________________________
dev-tech-crypto mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-crypto