Bug#297798: libc6: dlerror valgrind error
Package: libc6
Version: 2.3.2.ds1-20
Severity: critical
Justification: breaks unrelated software
the following statement
AC_RaiseExc( AC_Critical, AC_For(Myself),
AC_Private( AC_9999 ),
"Cannot load PEX %s of %s : %s",
Fn, Name, dlerror() );
which basically serves as a printf
gives following valgrind error
==8220== Invalid read of size 1
==8220== at 0x1B906788: strlen (mac_replace_strmem.c:189)
==8220== by 0x1C0EB249: AC_vfnprintf (fnprintf_A.c:299)
==8220== by 0x1C0EAB39: AC_vfdprintf (fdprintf_A.c:9)
==8220== by 0x1C0EA02D: AC_VLog (ActivatorErrorHandling_A.c:136)
==8220== by 0x1C0EA3EC: AC_VRaiseExc (ActivatorErrorHandling_A.c:202)
==8220== by 0x1C0EA559: AC_RaiseExc (ActivatorErrorHandling_A.c:268)
==8220== by 0x1C5FDA8D: Repo2Pex_Load (PEX_A.c:35)
==8220== by 0x1B9192DA: Repo2Mgr_FindAndLoadParcelOfComponent (P_Repo2Manager_A.c:759)
==8220== by 0x1B90CADE: TOREPO_FindAndLoadParcel (REPO.c:196)
==8220== by 0x1B90E8A9: ILoadComponent (StdRootManager.c:776)
==8220== by 0x1B90F763: CheckCompRefQuality (StdRootManager.c:995)
==8220== by 0x1B910DC8: FindBehavior (StdRootManager.c:1457)
==8220== by 0x1B9128BD: Wrap_FindBehavior (StdRootManager.c:2023)
==8220== by 0x1C0EBF42: AC_FindBehaviorByCID (ActivatorLoader_A.c:98)
==8220== by 0x804866D: main (main.c:8)
==8220== Address 0x1C4F5E58 is 0 bytes inside a block of size 74 free'd
==8220== at 0x1B907460: free (vg_replace_malloc.c:153)
==8220== by 0x1C1284FA: _dlerror_run (dlerror.c:140)
==8220== by 0x1C128153: dlsym (dlsym.c:51)
==8220== by 0x1C0FE263: write (vg_libpthread.c:2369)
==8220== by 0x1C0EFF1D: AC_WriteExt (ActivatorIo_A.c:112)
==8220== by 0x1C0EAAF8: AC_WriteToFd (fdprintf_A.c:4)
==8220== by 0x1C0EACAC: fmtout (fnprintf_A.c:63)
==8220== by 0x1C0EB8A9: AC_vfnprintf (fnprintf_A.c:506)
==8220== by 0x1C0EAB39: AC_vfdprintf (fdprintf_A.c:9)
==8220== by 0x1C0EAB70: AC_fdprintf (fdprintf_A.c:17)
==8220== by 0x1C0E9FB0: AC_VLog (ActivatorErrorHandling_A.c:118)
==8220== by 0x1C0EA3EC: AC_VRaiseExc (ActivatorErrorHandling_A.c:202)
==8220== by 0x1C0EA559: AC_RaiseExc (ActivatorErrorHandling_A.c:268)
==8220== by 0x1C5FDA8D: Repo2Pex_Load (PEX_A.c:35)
==8220== by 0x1B9192DA: Repo2Mgr_FindAndLoadParcelOfComponent (P_Repo2Manager_A.c:759)
==8220== by 0x1B90CADE: TOREPO_FindAndLoadParcel (REPO.c:196)
==8220== by 0x1B90E8A9: ILoadComponent (StdRootManager.c:776)
==8220== by 0x1B90F763: CheckCompRefQuality (StdRootManager.c:995)
==8220== by 0x1B910DC8: FindBehavior (StdRootManager.c:1457)
==8220== by 0x1B9128BD: Wrap_FindBehavior (StdRootManager.c:2023)
==8220==
if i interpret this correctly then dlsym (used somewhere in the write
function of valgrind), causes a free of the return string of a
dlerror() which is still needed by my application because it wants
to printf it.
if that free occurs all the time it might break other applications too.
-- System Information:
Debian Release: 3.1
APT prefers unstable
APT policy: (500, 'unstable')
Architecture: i386 (i686)
Kernel: Linux 2.6.9-1-686
Locale: LANG=en_US, LC_CTYPE=en_US (charmap=ISO-8859-1)
Versions of packages libc6 depends on:
ii libdb1-compat 2.1.3-7 The Berkeley database routines [gl
-- no debconf information
Reply to: