Nicolás Brailovsky


A modern blog

Valgrind – OCI: Suppressions file FTW!

author Posted by: nico on date Mar 23rd, 2009 | filed Filed under: C++, Programming

Update: There’s a new Valgrind suppressions file @ this link.

valgrind-link3 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.

[1] Working at Intraway :)
[2] False positives are quite likely when compiling with -O2. See Valgrind FTW.

tag4 Responses to “Valgrind – OCI: Suppressions file FTW!”

  1. Mattias Said,

    Great work, just what I’m looking for – but where is the file? (the link seems broken)

  2. nico Said,

    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
    }

  3. Mattias Said,

    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
    }

  4. Nicolás Brailovsky » Blog Archive » Valgrind – OCI: Suppressions file, Take II Said,

    [...] my OCI suppressions file? Well, since then I have updated it. Now it includes some more suppressions, for libnetsnmp, [...]

     Add A Comment

trackback Trackback URI | rsscomment Comments RSS