Update: There's a new Valgrind suppressions file @ this link.
Working [1] on a C++ project with Oracle I found that Valgrind reported lots of warnings related to OCI, for which, regardless of being false positives [2] or not, there's little I can do about (other than migrating to MySQL, that is). As the error report kept growing I found that Valgrind will refuse to keep track of new errors after a million or so:
More than 1000000 errors detected. I'm not reporting any more. Final error counts may be inaccurate. Go fix your program!
The solution in this case is a suppresions file for Valgrind. After spending a good deal of time unsuccsesfuly trying to get one I had to do it myself and upload it for the next one to run into this problem:
Link to the file: Valgrind / OCI suppressions.
- Working at Intraway :)
- False positives are quite likely when compiling with -O2. See Valgrind FTW.
In reply to this post, Mattias commented @ 2009-04-02T08:17:41.000+02:00:
Great work, just what I'm looking for - but where is the file? (the link seems broken)
Original published here.
In reply to this post, nico commented @ 2009-04-03T12:06:30.000+02:00:
Should have been a temporary glitch, anyway this is the file:
{ OCI suppression Memcheck:Cond fun:slpmloclfv fun:slpmloc fun:lpmloadpkg fun:lfvLoadPkg }
{ OCI suppression Memcheck:Value4 fun:ztced_einit fun:ztcedgks fun:ztcedi fun:ztcebi fun:ztcei }
{ OCI suppression Memcheck:Value4 fun:ztcedecb fun:ztcedencbk fun:ztceb_encblk }
{ OCI suppression Memcheck:Cond fun:CMP_Compare fun:CMP_ModularReduce fun:Alg_ComputeModQ_GHash fun:A_X931RandomGenerateBytes fun:ztcr2rnd }
{ OCI suppression Memcheck:Cond fun:CMP_BitLengthOfCMPInt }
{ OCI suppression Memcheck:Cond fun:CMP_CMPIntToOctetString }
{ OCI suppression Memcheck:Cond fun:CMP_OctetStringToCMPInt }
{ OCI suppression Memcheck:Cond fun:CMP_SubtractInPlace fun:CMP_ModularReduce }
{ OCI suppression Memcheck:Cond fun:ztvo5ke fun:kpu8lgn fun:kpuauthxa }
{ OCI suppression Memcheck:Value4 fun:ztceaencbk fun:ztceb_encblk fun:ztcebn fun:ztcen }
{ OCI suppression Memcheck:Value4 fun:ztceaencbk fun:ztceb_encblk fun:ztceb_padding }
{ OCI suppression Memcheck:Cond fun:kzsrepw fun:kpu8lgn fun:kpuauthxa }
{ OCI suppression Memcheck:Value4 fun:ztceai fun:ztcebi fun:ztcei }
{ OCI suppression Memcheck:Value4 fun:ztucbtx fun:ztvo5pe fun:kzsrepw }
{ OCI suppression Memcheck:Value4 fun:ztceadecbk fun:ztceb_decblk }
{ OCI suppression Memcheck:Cond fun:ztceb_unpadding fun:ztcebf fun:ztcef }
{ OCI suppression Memcheck:Cond fun:nassky fun:nszssk fun:nszssk2 }
{ OCI suppression Memcheck:Cond fun:_intel_fast_memcmp obj:* }
{ OCI suppression Memcheck:Overlap fun:_intel_fast_memcpy fun:kpufprow fun:kpufch0 fun:kpufch }
Original published here.
In reply to this post, Mattias commented @ 2009-04-03T20:57:40.000+02:00:
Thanks! Since I use x86_64 I had to switch all the 'Value4' to 'Value8', and I also had to add a few extra suppressions (below), but after that it worked just perfectly. Nice to be able to get 0 errors for all our oracle tests ...
{ OCI suppression - Mattias Memcheck:Cond fun:ztcedec fun:ztvo5ed fun:ztvo5ver fun:kpu8lgn }
{ OCI suppression - Mattias Memcheck:Cond fun:ztcebf fun:ztcef fun:ztcedec fun:ztvo5ed }
{ OCI auppression - Mattias Memcheck:Value8 fun:ztceadecbk fun:ztcebn fun:ztcen fun:ztcedec }
{ OCI suppression - Mattias Memcheck:Value8 fun:ztceaencbk fun:ztcebn fun:ztcen fun:ztvo5pe }
{ OCI suppression - Mattias Memcheck:Value8 fun:ztceaencbk fun:ztcebn fun:ztcen fun:ztceenc }
{ OCI suppression - Mattias Memcheck:Value8 fun:ztcedecb fun:ztcedencbk fun:ztcebn fun:ztcen }
{ OCI suppression - Mattias Memcheck:Cond fun:CMP_ShiftRightByBits fun:CMP_ModularReduce fun:Alg_ComputeModQ_GHash fun:A_X931RandomGenerateBytes }
{ OCI suppression - Mattias Memcheck:Param write(buf) fun:__write_nocancel fun:snttwrite fun:nttwr fun:nsntwrn fun:nspsend }
{ OCI suppression - Mattias Memcheck:Overlap fun:_vgrZU_NONE__intel_fast_memcpy fun:kpufprow fun:kpufch0 fun:kpufch fun:OCIStmtFetch2 }
Original published here.
In reply to this post, Nicolás Brailovsky » Blog Archive » Valgrind – OCI: Suppressions file, Take II commented @ 2010-02-19T11:14:33.000+01:00:
[...] my OCI suppressions file? Well, since then I have updated it. Now it includes some more suppressions, for libnetsnmp, [...]
Original published here.