Open
Bug 291225
Opened 20 years ago
Updated 3 years ago
NSS_Init leaks memory in failure case
Categories
(NSS :: Libraries, defect, P2)
Tracking
(Not tracked)
NEW
People
(Reporter: julien.pierre, Unassigned)
Details
(Keywords: memory-leak, Whiteboard: [redacted:noise] FIPS)
When calling NSS_Init("directory_without_db"), which returns SECFailure, there
is a memory leak, as reported by dbx check leaks below :
Actual leaks report (actual leaks: 2 total size: 208 bytes)
Total Num of Leaked Allocation call stack
Size Blocks Block
Address
========== ====== =========== =======================================
176 1 0x1001111e8 calloc < PR_Calloc < PR_NewMonitor <
nsslowcert_OpenCertDB < sftk_OpenCertDB < sftk_DBInit < SFTK_SlotInit <
nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit <
SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init <
NSS_Init < main
32 1 0x10010f978 calloc < PR_Calloc < PR_NewMonitor <
nsslowcert_OpenCertDB < sftk_OpenCertDB < sftk_DBInit < SFTK_SlotInit <
nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit <
SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init <
NSS_Init < main
Possible leaks report (possible leaks: 8 total size: 1854 bytes)
Total Num of Leaked Allocation call stack
Size Blocks Block
Address
========== ====== =========== =======================================
551 1 0x10010a7d8 PR_Malloc < PL_ArenaAllocate < PORT_ArenaAlloc <
secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < SECMOD_LoadModule <
nss_Init < NSS_Init < main
551 1 0x100109e18 PR_Malloc < PL_ArenaAllocate < PORT_ArenaAlloc <
secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < nss_Init < NSS_Init
< main
144 1 0x100109cb8 calloc < PR_Calloc < PR_NewLock < PORT_NewArena
< secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < nss_Init <
NSS_Init < main
144 1 0x10010a068 calloc < PR_Calloc < PR_NewLock <
secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < nss_Init < NSS_Init
< main
144 1 0x10010aa28 calloc < PR_Calloc < PR_NewLock <
secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < SECMOD_LoadModule <
nss_Init < NSS_Init < main
144 1 0x10010a728 calloc < PR_Calloc < PR_NewLock < PORT_NewArena
< secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < SECMOD_LoadModule
< nss_Init < NSS_Init < main
88 1 0x10010a6a8 calloc < PR_Calloc < PORT_ZAlloc < PORT_NewArena
< secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < SECMOD_LoadModule
< nss_Init < NSS_Init < main
88 1 0x100109c38 calloc < PR_Calloc < PORT_ZAlloc < PORT_NewArena
< secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < nss_Init <
NSS_Init < main
execution completed, exit code is 1
(dbx)
Updated•20 years ago
|
QA Contact: bishakhabanerjee → jason.m.reid
Updated•19 years ago
|
QA Contact: jason.m.reid → libraries
Updated•19 years ago
|
Priority: -- → P2
Target Milestone: --- → 3.11.2
| Reporter | ||
Comment 2•19 years ago
|
||
Retargetting all P2s to 3.11.3 .
Target Milestone: 3.11.2 → 3.11.3
Updated•18 years ago
|
Target Milestone: 3.11.3 → 3.11.8
| Reporter | ||
Comment 7•18 years ago
|
||
This would seem like a good one to fix along with the new DB work.
| Reporter | ||
Comment 12•18 years ago
|
||
This is not fixed.
My test case is :
1) mkdir nodb
2) certutil -d nodb -L under dbx with check -memuse
Here are the stacks :
Checking for memory leaks...
Actual leaks report (actual leaks: 2 total size: 128 bytes)
Total Num of Leaked Allocation call stack
Size Blocks Block
Address
========== ====== =========== =======================================
104 1 0x80b4b20 calloc < PR_Calloc < PR_NewMonitor < nsslowcert_OpenCertDB < lg_OpenCertDB < legacy_Open < sftkdbCall_open < sftk_DBInit < SFTK_SlotReInit < SFTK_SlotInit < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule
24 1 0x808ec68 calloc < PR_Calloc < PR_NewMonitor < nsslowcert_OpenCertDB < lg_OpenCertDB < legacy_Open < sftkdbCall_open < sftk_DBInit < SFTK_SlotReInit < SFTK_SlotInit < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule
Possible leaks report (possible leaks: 8 total size: 1510 bytes)
Total Num of Leaked Allocation call stack
Size Blocks Block
Address
========== ====== =========== =======================================
535 1 0x808e740 PR_Malloc < PL_ArenaAllocate < PORT_ArenaAlloc_Moved < secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
535 1 0x808edc0 PR_Malloc < PL_ArenaAllocate < PORT_ArenaAlloc_Moved < secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
88 1 0x808e660 calloc < PR_Calloc < PR_NewLock < PORT_NewArena_Moved < secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
88 1 0x808e970 calloc < PR_Calloc < PR_NewLock < secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
88 1 0x808eff0 calloc < PR_Calloc < PR_NewLock < secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
88 1 0x808eb68 calloc < PR_Calloc < PR_NewLock < PORT_NewArena_Moved < secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
44 1 0x808ec10 calloc < PR_Calloc < PORT_ZAlloc_Moved < PORT_NewArena_Moved < secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
44 1 0x808e618 calloc < PR_Calloc < PORT_ZAlloc_Moved < PORT_NewArena_Moved < secmod_NewModule < SECMOD_CreateModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
Checking for memory use...
Blocks in use report (blocks in use: 484 total size: 14999 bytes)
Total % of Num of Avg Allocation call stack
Size All Blocks Size
========== ==== ====== ====== =======================================
4816 32% 301 16 PR_Malloc < DefaultAllocEntry < PL_HashTableRawAdd < PL_HashTableAdd < secoid_Init < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
2048 13% 1 2048 PR_Malloc < DefaultAllocTable < PL_HashTableRawAdd < PL_HashTableAdd < secoid_Init < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
832 5% 52 16 PR_Malloc < DefaultAllocEntry < PL_HashTableRawAdd < PL_HashTableAdd < secoid_Init < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
832 5% 8 104 calloc < PR_Calloc < PR_NewMonitor < ExpandMonitorCache < _PR_InitCMon < _PR_InitStuff < _PR_ImplicitInitialization < PR_GetSpecialFD < certutil_main < main
512 3% 1 512 calloc < PR_Calloc < _PR_InitTPD < _PR_InitStuff < _PR_ImplicitInitialization < PR_GetSpecialFD < certutil_main < main
256 1% 1 256 PR_Malloc < DefaultAllocTable < PL_HashTableRawAdd < PL_HashTableAdd < secoid_Init < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
192 1% 8 24 calloc < PR_Calloc < PR_NewMonitor < ExpandMonitorCache < _PR_InitCMon < _PR_InitStuff < _PR_ImplicitInitialization < PR_GetSpecialFD < certutil_main < main
128 <1% 1 128 calloc < PR_Calloc < ExpandMonitorCache < _PR_InitCMon < _PR_InitStuff < _PR_ImplicitInitialization < PR_GetSpecialFD < certutil_main < main
104 <1% 1 104 calloc < PR_Calloc < PR_NewMonitor < _PR_UnixInit < _PR_InitStuff < _PR_ImplicitInitialization < PR_GetSpecialFD < certutil_main < main
104 <1% 1 104 calloc < PR_Calloc < PR_NewMonitor < OCSP_InitGlobal < nss_Init < NSS_Initialize < certutil_main < main
104 <1% 1 104 calloc < PR_Calloc < PR_NewMonitor < PR_NewNamedMonitor < _PR_InitLinker < _PR_InitStuff < _PR_ImplicitInitialization < PR_GetSpecialFD < certutil_main < main
88 <1% 1 88 calloc < PR_Calloc < PR_NewLock < __nss_InitLock_Moved < nsslowcert_InitLocks < legacy_Open < sftkdbCall_open < sftk_DBInit < SFTK_SlotReInit < SFTK_SlotInit < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule
88 <1% 1 88 calloc < PR_Calloc < PR_NewLock < pk11_InitSlotListStatic < PK11_InitSlotLists < SECMOD_Init < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
88 <1% 1 88 calloc < PR_Calloc < PR_NewLock < __nss_InitLock_Moved < nsslowcert_InitLocks < legacy_Open < sftkdbCall_open < sftk_DBInit < SFTK_SlotReInit < SFTK_SlotInit < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule
88 <1% 1 88 calloc < PR_Calloc < PR_NewLock < __nss_InitLock_Moved < certdb_InitDBLock < nsslowcert_OpenCertDB < lg_OpenCertDB < legacy_Open < sftkdbCall_open < sftk_DBInit < SFTK_SlotReInit < SFTK_SlotInit < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module
88 <1% 1 88 calloc < PR_Calloc < PR_NewLock < __nss_InitLock_Moved < nsslowcert_InitLocks < legacy_Open < sftkdbCall_open < sftk_DBInit < SFTK_SlotReInit < SFTK_SlotInit < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule
88 <1% 1 88 calloc < PR_Calloc < PR_NewLock < rng_init < PR_CallOnce < RNG_RNGInit < RNG_RNGInit < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main
88 <1% 1 88 calloc < PR_Calloc < PR_NewLock < pk11_InitSlotListStatic < PK11_InitSlotLists < SECMOD_Init < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
88 <1% 1 88 calloc < PR_Calloc < PR_NewLock < PORT_NewArena_Moved < secoid_InitDynOidData < secoid_Init < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main < main
88 <1% 1 88 calloc < PR_Calloc < PR_NewLock < NSSRWLock_New_Moved < nssRWLock_AtomicCreate < secoid_InitDynOidData < secoid_Init < nsc_CommonInitialize < NSC_Initialize < secmod_ModuleInit < SECMOD_LoadPKCS11Module < SECMOD_LoadModule < SECMOD_LoadModule < nss_Init < NSS_Initialize < certutil_main
(note that my tree has the util patch, so move functions in the stack have the word _Moved in them).
Comment 19•18 years ago
|
||
I have marked many comments in this bug as "private", which hides them.
It seems that those comments are about a separate issue from the leaks
reported in comment 0 and comment 12, and their presence in this bug
caused confusion. So I am attempting to reduce the confusion, and give
this bug a single clear subject again.
Updated•18 years ago
|
Assignee: neil.williams → nobody
Target Milestone: 3.11.8 → ---
Comment 22•17 years ago
|
||
We should try to fix this long-standing bug before the next FIPS evaluation.
Whiteboard: [redacted:noise] → [redacted:noise] FIPS
Updated•3 years ago
|
Severity: normal → S3
You need to log in
before you can comment on or make changes to this bug.
Description
•