I'm seeing valgrind stack traces that point to errors from libraries
which shouldn't be relevant to the given error messages.  Here's an
example:

   Conditional jump or move depends on uninitialised value(s)
      at 0x4C230A8: strlen (mc_replace_strmem.c:242)
      by 0x402702: std::char_traits<char>::length(char const*) 
(char_traits.h:262)
      by 0x403054: std::basic_ostream<char, std::char_traits<char> >& 
std::operator<< <s
  td::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, 
char const*) (ostre
  am:517)
      by 0x13D65830: avtH5NimrodFileFormat::avtH5NimrodFileFormat(char const*) 
(avtH5Nim
  rodFileFormat.C:155)
      by 0x13D62A86: H5NimrodCommonPluginInfo::SetupDatabase(char const* 
const*, int, in
  t) (H5NimrodCommonPluginInfo.C:84)
      by 0x8D5EB95: 
avtDatabaseFactory::SetupDatabase(CommonDatabasePluginInfo*, char co
  nst* const*, int, int, int, int, bool, bool) (avtDatabaseFactory.C:528)
      by 0x8D5F8B5: avtDatabaseFactory::FileList(DatabasePluginManager*, char 
const* con
  st*, int, int, std::__debug::vector<std::string, std::allocator<std::string> 
>&, char const*, b
  ool, bool) (avtDatabaseFactory.C:341)
      by 0x4EECCCF: NetworkManager::GetDBFromCache(std::string const&, int, 
char const*,
   bool, bool, bool) (NetworkManager.C:634)
      by 0x4EB80A6: RPCExecutor<OpenDatabaseRPC>::Execute(OpenDatabaseRPC*) 
(Executors.h
  :1271)
      by 0x4EC6E7B: RPCExecutor<OpenDatabaseRPC>::Update(Subject*) 
(RPCExecutor.h:67)
      by 0x6A749F1: Subject::Notify() (Subject.C:188)
      by 0x6929E10: AttributeSubject::Notify() (AttributeSubject.C:99)
      by 0x6AAEE70: Xfer::Process() (Xfer.C:420)
      by 0x4EB0925: Engine::ProcessInput() (Engine.C:1210)
      by 0x4EB21DB: Engine::EventLoop() (Engine.C:1159)
      by 0x4022CD: main (main.C:312)
    Uninitialised value was created by a heap allocation
      at 0x4C2291E: malloc (vg_replace_malloc.c:207)
      by 0xF5D1196: (within /usr/lib/libGL.so.180.44)
      by 0x7FEFFB8FF: ???
    by 0x13D79F1F: (within 
/home/tfogal/dev/git-rc/plugins/databases/libEH5NimrodDatabase_ser.so)
    by 0x7FEFFB8FF: ???
    by 0x404BB0C: (within /usr/lib/tls/libnvidia-tls.so.180.44)
    by 0x13D70F92: H5NIMROD_read_string_attrib(int, char const*, char**) 
(H5utils.C:14

Note that my uninitialized value comes from a malloc that was done
inside my nvidia driver.  I don't see how that memory could have ended
up in this particular module: this code is a file format reader.  We do
end up doing a lot of dlopen/dlsym-ing; *H5Nimrod* symbols come from a
runtime-loaded shared object, IIRC.  I don't see any valgrind messages
from that code though.

I'm using 3.4.1 with a plethora of options:
  vg="--leak-check=no"
  vg="${vg} --smc-check=all"
  vg="${vg} --log-file=vg-eng%p.vg"
  vg="${vg} --track-origins=yes"
  vg="${vg} --suppressions=/home/tfogal/dev/imagevis3d/test/nvidia.supp"
  vg="${vg} --error-limit=no"
  vg="${vg} --num-callers=64"
  # eventually: `valgrind ${vg} ${myprogram} ${myopts}'

The suppression file is what you might expect, but there is a notable
entry given the stack trace above:

  {
    nvid-gl4
    Memcheck:Leak
    fun:malloc
    obj:/usr/lib/libGL.so.180.44
  }

of course, that should only matter for leak checking, which I'm not
currently doing.

Any idea what's going on, or how I might debug this further?

Thanks,

-tom

------------------------------------------------------------------------------
Register Now & Save for Velocity, the Web Performance & Operations 
Conference from O'Reilly Media. Velocity features a full day of 
expert-led, hands-on workshops and two days of sessions from industry 
leaders in dedicated Performance & Operations tracks. Use code vel09scf 
and Save an extra 15% before 5/3. http://p.sf.net/sfu/velocityconf
_______________________________________________
Valgrind-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/valgrind-users

Reply via email to