Bug 500516 - Memory leaks in rpm-4.6.0
Summary: Memory leaks in rpm-4.6.0
Keywords:
Status: CLOSED NOTABUG
Alias: None
Product: Fedora
Classification: Fedora
Component: rpm
Version: rawhide
Hardware: i386
OS: Linux
low
medium
Target Milestone: ---
Assignee: Panu Matilainen
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2009-05-13 01:24 UTC by SK
Modified: 2009-05-13 06:59 UTC (History)
4 users (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2009-05-13 06:59:37 UTC
Type: ---
Embargoed:


Attachments (Terms of Use)

Description SK 2009-05-13 01:24:18 UTC
Description of problem:
I have a C utility that uses RPM(version 4.6.0) to install and erase packages. When I run my utility using VALGRIND, I am seeing a bunch of memory leaks in RPM library.



Version-Release number of selected component (if applicable):
RPM Version 4.6.0

How reproducible:
100%

Steps to Reproduce:
1. Any C utility that uses RPM version 4.6.0 to install and erase packages.
2. Need to use valgrind, with memcheck and leak options turned ON.
Note:: For the case below, I was installing 1 package and erasing 1 package.
  
Actual results:

Memory Leaks reported by valgrind.
Note::You will also see the api names of the C utility that call RPM apis.


==13315== 72 bytes in 1 blocks are definitely lost in loss record 19 of 54
==13315==    at 0x4028122: calloc (vg_replace_malloc.c:397)
==13315==    by 0x45E1E8F: PR_Calloc (in /lib/libnspr4.so)
==13315==    by 0x42A1356: (within /lib/libnss3.so)
==13315==    by 0x42A13A0: (within /lib/libnss3.so)
==13315==    by 0x42A12B3: (within /lib/libnss3.so)
==13315==    by 0x4297F7A: (within /lib/libnss3.so)
==13315==    by 0x429C8C3: (within /lib/libnss3.so)
==13315==    by 0x425E265: (within /lib/libnss3.so)
==13315==    by 0x425E563: NSS_NoDB_Init (in /lib/libnss3.so)
==13315==    by 0x40B7BFE: rpmInitCrypto (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40768D9: rpmtsCreate (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B3A3: executeTransactionUsingRpm (rpmutform.c:1698)

 ==13315== 536 bytes in 15 blocks are possibly lost in loss record 33 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x45E1CD1: PR_Malloc (in /lib/libnspr4.so)
==13315==    by 0x42F6CE6: (within /lib/libnss3.so)
==13315==    by 0x42F8CA5: (within /lib/libnss3.so)
==13315==    by 0x42F6190: (within /lib/libnss3.so)
==13315==    by 0x42C4106: (within /lib/libnss3.so)
==13315==    by 0x425E4DA: (within /lib/libnss3.so)
==13315==    by 0x425E563: NSS_NoDB_Init (in /lib/libnss3.so)
==13315==    by 0x40B7BFE: rpmInitCrypto (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40768D9: rpmtsCreate (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B3A3: executeTransactionUsingRpm (rpmutform.c:1698)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)

  ==13315== 5 bytes in 1 blocks are still reachable in loss record 1 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x4074380: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4074F0D: rpmReadConfigFiles (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B341: executeTransactionUsingRpm (rpmutform.c:1682)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)
==13315== 
==13315== 
==13315== 6 bytes in 1 blocks are still reachable in loss record 2 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x40743F3: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4074F8E: rpmReadConfigFiles (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B341: executeTransactionUsingRpm (rpmutform.c:1682)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)
==13315== 
==13315== 
==13315== 12 bytes in 8 blocks are still reachable in loss record 3 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x40B06F0: addMacro (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B1E59: (within /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B1ED8: rpmDefineMacro (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B1FA1: rpmLoadMacroFile (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B21E2: rpmInitMacros (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x4074F4A: rpmReadConfigFiles (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B341: executeTransactionUsingRpm (rpmutform.c:1682)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)
==13315== 
==13315== 
==13315== 16 bytes in 2 blocks are still reachable in loss record 4 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x4072382: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x407257B: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x40744B9: rpmSetTables (in /usr/lib/librpm-4.6.so)
==13315==    by 0x40747BF: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4074F5E: rpmReadConfigFiles (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B341: executeTransactionUsingRpm (rpmutform.c:1682)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)

==13315== 22 bytes in 1 blocks are still reachable in loss record 6 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x407E592: rpmtsAcquireLock (in /usr/lib/librpm-4.6.so)
==13315==    by 0x407B54B: rpmtsRun (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804AE32: invokeRpmToRunTrans (rpmutform.c:1475)
==13315==    by 0x804B73B: executeTransactionUsingRpm (rpmutform.c:1812)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)
==13315== 
==13315== 
==13315== 24 bytes in 1 blocks are still reachable in loss record 7 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x40B6119: (within /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B62A1: rpmlog (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x406126C: rpmReadPackageFile (in /usr/lib/librpm-4.6.so)
==13315==    by 0x8049AC1: addInstallPkgToRpmTs (rpmutform.c:369)
==13315==    by 0x8049D93: addPkgForInstall (rpmutform.c:463)
==13315==    by 0x804A10B: processTransList (rpmutform.c:630)
==13315==    by 0x804B638: executeTransactionUsingRpm (rpmutform.c:1776)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)

 ==13315== 24 bytes in 1 blocks are still reachable in loss record 9 of 54
==13315==    at 0x4028122: calloc (vg_replace_malloc.c:397)
==13315==    by 0x40B6B76: rpmluaNew (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B72CA: rpmluaGetPrintBuffer (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x4074FA6: rpmReadConfigFiles (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B341: executeTransactionUsingRpm (rpmutform.c:1682)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)

 ==13315== 32 bytes in 1 blocks are still reachable in loss record 12 of 54
==13315==    at 0x4028122: calloc (vg_replace_malloc.c:397)
==13315==    by 0x40593A5: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x405941E: rpmGetFilesystemList (in /usr/lib/librpm-4.6.so)
==13315==    by 0x4077B57: rpmtsInitDSI (in /usr/lib/librpm-4.6.so)
==13315==    by 0x407B714: rpmtsRun (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804AE32: invokeRpmToRunTrans (rpmutform.c:1475)
==13315==    by 0x804B6A8: executeTransactionUsingRpm (rpmutform.c:1793)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)

  ==13315== 42 bytes in 1 blocks are still reachable in loss record 14 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x406A8A9: rpmdsNewDNEVR (in /usr/lib/librpm-4.6.so)
==13315==    by 0x406A9F2: rpmdsNext (in /usr/lib/librpm-4.6.so)
==13315==    by 0x406ABD1: rpmdsSearch (in /usr/lib/librpm-4.6.so)
==13315==    by 0x4056184: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x405654F: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x40568AA: rpmtsCheck (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804ACE6: invokeRpmToRunTrans (rpmutform.c:1422)
==13315==    by 0x804B6A8: executeTransactionUsingRpm (rpmutform.c:1793)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)
==13315== 
==13315== 
==13315== 48 bytes in 1 blocks are still reachable in loss record 15 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x406AFE9: rpmdsMerge (in /usr/lib/librpm-4.6.so)
==13315==    by 0x406B76F: rpmdsRpmlib (in /usr/lib/librpm-4.6.so)
==13315==    by 0x4056162: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x405654F: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x40568AA: rpmtsCheck (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804ACE6: invokeRpmToRunTrans (rpmutform.c:1422)
==13315==    by 0x804B6A8: executeTransactionUsingRpm (rpmutform.c:1793)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)

==13315== 95 bytes in 1 blocks are still reachable in loss record 21 of 54
==13315==    at 0x402A18C: realloc (vg_replace_malloc.c:429)
==13315==    by 0x40B617E: (within /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B62A1: rpmlog (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x406126C: rpmReadPackageFile (in /usr/lib/librpm-4.6.so)
==13315==    by 0x8049AC1: addInstallPkgToRpmTs (rpmutform.c:369)
==13315==    by 0x8049D93: addPkgForInstall (rpmutform.c:463)
==13315==    by 0x804A10B: processTransList (rpmutform.c:630)
==13315==    by 0x804B638: executeTransactionUsingRpm (rpmutform.c:1776)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)

  ==13315== 96 bytes in 2 blocks are still reachable in loss record 22 of 54
==13315==    at 0x402A18C: realloc (vg_replace_malloc.c:429)
==13315==    by 0x4072354: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4072485: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x40724AF: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x40724AF: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x40724AF: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4072591: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x40744A1: rpmSetTables (in /usr/lib/librpm-4.6.so)
==13315==    by 0x40747BF: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4074F5E: rpmReadConfigFiles (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B341: executeTransactionUsingRpm (rpmutform.c:1682)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)
==13315== 
==13315== 
==13315== 100 bytes in 14 blocks are still reachable in loss record 23 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x41489CF: strdup (in /lib/libc-2.9.so)
==13315==    by 0x45DDBAF: PR_NewLogModule (in /lib/libnspr4.so)
==13315==    by 0x45E68F6: (within /lib/libnspr4.so)
==13315==    by 0x45ED25F: PR_NewLock (in /lib/libnspr4.so)
==13315==    by 0x428A329: (within /lib/libnss3.so)
==13315==    by 0x425DE60: (within /lib/libnss3.so)
==13315==    by 0x425E563: NSS_NoDB_Init (in /lib/libnss3.so)
==13315==    by 0x40B7BFE: rpmInitCrypto (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40768D9: rpmtsCreate (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B3A3: executeTransactionUsingRpm (rpmutform.c:1698)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)

  ==13315== 320 bytes in 35 blocks are still reachable in loss record 26 of 54
==13315==    at 0x402A18C: realloc (vg_replace_malloc.c:429)
==13315==    by 0x40730CE: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4074EF5: rpmReadConfigFiles (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B341: executeTransactionUsingRpm (rpmutform.c:1682)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)
==13315== 
==13315== 

==13315== 360 bytes in 59 blocks are still reachable in loss record 27 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x4073327: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4074EF5: rpmReadConfigFiles (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B341: executeTransactionUsingRpm (rpmutform.c:1682)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)
 ==13315== 1,152 bytes in 1 blocks are still reachable in loss record 40 of 54
==13315==    at 0x402A18C: realloc (vg_replace_malloc.c:429)
==13315==    by 0x40B060B: addMacro (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B1E59: (within /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B1ED8: rpmDefineMacro (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B1FA1: rpmLoadMacroFile (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40B21E2: rpmInitMacros (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x4074F4A: rpmReadConfigFiles (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B341: executeTransactionUsingRpm (rpmutform.c:1682)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)

==13315==  ==13315== 1,256 bytes in 2 blocks are still reachable in loss record 43 of 54
==13315==    at 0x4028122: calloc (vg_replace_malloc.c:397)
==13315==    by 0x405239F: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4052839: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4052344: rpmTagGetValue (in /usr/lib/librpm-4.6.so)
==13315==    by 0x404C51A: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x404DBBE: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x404DEFB: rpmdbOpen (in /usr/lib/librpm-4.6.so)
==13315==    by 0x40771AF: rpmtsOpenDB (in /usr/lib/librpm-4.6.so)
==13315==    by 0x407724A: rpmtsInitIterator (in /usr/lib/librpm-4.6.so)
==13315==    by 0x4077573: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4077710: rpmtsGetKeyring (in /usr/lib/librpm-4.6.so)
==13315==    by 0x40610FE: rpmReadPackageFile (in /usr/lib/librpm-4.6.so)

==13315==  ==13315== 3,781 bytes in 280 blocks are still reachable in loss record 49 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x40B06A2: addMacro (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x4074B6E: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4074C59: rpmReadConfigFiles (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B341: executeTransactionUsingRpm (rpmutform.c:1682)
==13315==    by 0x80493DB: main (callRpmUtil.c:16)

==13315== ==13315== 21,792 bytes in 506 blocks are still reachable in loss record 53 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x402A1EF: realloc (vg_replace_malloc.c:429)
==13315==    by 0x405F853: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x405B425: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x405AAF1: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x405EFF2: fsmSetup (in /usr/lib/librpm-4.6.so)
==13315==    by 0x4063872: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4064B0B: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x4064311: (within /usr/lib/librpm-4.6.so)
==13315==    by 0x407D5A3: rpmtsRun (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804AE32: invokeRpmToRunTrans (rpmutform.c:1475)
==13315==    by 0x804B73B: executeTransactionUsingRpm (rpmutform.c:1812)
==13315== 
==13315== 
==13315== 32,667 bytes in 440 blocks are still reachable in loss record 54 of 54
==13315==    at 0x402A06E: malloc (vg_replace_malloc.c:207)
==13315==    by 0x45E1CD1: PR_Malloc (in /lib/libnspr4.so)
==13315==    by 0x45ECBE7: PR_NewCondVar (in /lib/libnspr4.so)
==13315==    by 0x45F1F6D: (within /lib/libnspr4.so)
==13315==    by 0x45E6A0B: (within /lib/libnspr4.so)
==13315==    by 0x45ED25F: PR_NewLock (in /lib/libnspr4.so)
==13315==    by 0x428A329: (within /lib/libnss3.so)
==13315==    by 0x425DE60: (within /lib/libnss3.so)
==13315==    by 0x425E563: NSS_NoDB_Init (in /lib/libnss3.so)
==13315==    by 0x40B7BFE: rpmInitCrypto (in /usr/lib/librpmio-4.6.so)
==13315==    by 0x40768D9: rpmtsCreate (in /usr/lib/librpm-4.6.so)
==13315==    by 0x804B3A3: executeTransactionUsingRpm (rpmutform.c:1698)


==13315==  ==13315== LEAK SUMMARY:
==13315==    definitely lost: 72 bytes in 1 blocks.
==13315==      possibly lost: 1,804 bytes in 36 blocks.
==13315==    still reachable: 114,907 bytes in 3,322 blocks.
==13315==         suppressed: 0 bytes in 0 blocks.

Expected results:


Additional info:

Comment 1 Panu Matilainen 2009-05-13 06:59:37 UTC
See http://lists.rpm.org/pipermail/rpm-list/2009-May/000248.html, no real bugs here.


Note You need to log in before you can comment on or make changes to this bug.