valgrind issue

I am reproducibly getting the following message from valgrind:

==20888== Conditional jump or move depends on uninitialised value(s)
==20888== at 0x52C7510: inflateReset2 (in
/lib/x86_64-linux-gnu/libz.so.1.2.3.4)
==20888== by 0x52C7605: inflateInit2_ (in
/lib/x86_64-linux-gnu/libz.so.1.2.3.4)
==20888== by 0x5019C13: H5Z_filter_deflate (H5Zdeflate.c:110)
==20888== by 0x5019170: H5Z_pipeline (H5Z.c:1103)
==20888== by 0x4E9CB69: H5D_chunk_lock (H5Dchunk.c:2758)
==20888== by 0x4E9DB20: H5D_chunk_read (H5Dchunk.c:1728)
==20888== by 0x4EACDDA: H5D_read (H5Dio.c:447)
==20888== by 0x4EAD248: H5Dread (H5Dio.c:173)
==20888== by 0x4CAD1D: HDF5::HDF5Reader::readData(std::string
const&) (HDF5Reader.cxx:634)
==20888== by 0x4CA489: HDF5::HDF5Reader::read(std::vector<int,
std::allocator<int> >&, std::string const&) (HDF5Reader.cxx:527)
==20888== by 0x4C379E: CD3T10_USER::SetupConstraints()
(cd3t10mpi_main.cxx:404)
==20888== by 0x4B6B7A: CD3T10::Solve() (CD3T10mpi.cxx:692)
==20888== by 0x4C0095: main (cd3t10mpi_main.cxx:589)

My own code HDF5Reader.cxx:634 reads:

status = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
H5P_DEFAULT, (int*)data);

I write my arrays several times, the message comes up only at the first use.

Any hints how to fix are highly appreciated.

Dominik

Hi Dominik,

I am reproducibly getting the following message from valgrind:

==20888== Conditional jump or move depends on uninitialised value(s)
==20888== at 0x52C7510: inflateReset2 (in
/lib/x86_64-linux-gnu/libz.so.1.2.3.4)
==20888== by 0x52C7605: inflateInit2_ (in
/lib/x86_64-linux-gnu/libz.so.1.2.3.4)
==20888== by 0x5019C13: H5Z_filter_deflate (H5Zdeflate.c:110)
==20888== by 0x5019170: H5Z_pipeline (H5Z.c:1103)
==20888== by 0x4E9CB69: H5D_chunk_lock (H5Dchunk.c:2758)
==20888== by 0x4E9DB20: H5D_chunk_read (H5Dchunk.c:1728)
==20888== by 0x4EACDDA: H5D_read (H5Dio.c:447)
==20888== by 0x4EAD248: H5Dread (H5Dio.c:173)
==20888== by 0x4CAD1D: HDF5::HDF5Reader::readData(std::string
const&) (HDF5Reader.cxx:634)
==20888== by 0x4CA489: HDF5::HDF5Reader::read(std::vector<int,
std::allocator<int> >&, std::string const&) (HDF5Reader.cxx:527)
==20888== by 0x4C379E: CD3T10_USER::SetupConstraints()
(cd3t10mpi_main.cxx:404)
==20888== by 0x4B6B7A: CD3T10::Solve() (CD3T10mpi.cxx:692)
==20888== by 0x4C0095: main (cd3t10mpi_main.cxx:589)

My own code HDF5Reader.cxx:634 reads:

status = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
H5P_DEFAULT, (int*)data);

I write my arrays several times, the message comes up only at the first use.

Any hints how to fix are highly appreciated.

According to the top-most lines this looks to me as if it's
coming from libz, which in turn is used by HDF5. Thus the
people to fix it would be the libz maintainers. I just down-
loaded the newest version (1.25, you seem to still be using
1.2.3.4) and there's an entry in the ChangeLog file for the
version 1.2.3.7:

  Avoid access of uninitialized data for first inflateReset2
  call [Gomes]

This sounds quite a bit as if it may be the fix for the prob-
lem you encountered. So I would recomment that you update to
at least version 1.2.3.7 and test if valgrind's complaint goes
away if you use the newer libz version instead.

                            Regards, Jens

···

On Wed, Sep 14, 2011 at 07:55:55PM +0200, Dominik Szczerba wrote:
--
  \ Jens Thoms Toerring ________ jt@toerring.de
   \_______________________________ http://toerring.de

Many thanks for the hint, will try out in the coming days.
Dominik

···

On Wed, Sep 14, 2011 at 8:28 PM, Jens Thoms Toerring <jt@toerring.de> wrote:

Hi Dominik,

On Wed, Sep 14, 2011 at 07:55:55PM +0200, Dominik Szczerba wrote:

I am reproducibly getting the following message from valgrind:

==20888== Conditional jump or move depends on uninitialised value(s)
==20888== at 0x52C7510: inflateReset2 (in
/lib/x86_64-linux-gnu/libz.so.1.2.3.4)
==20888== by 0x52C7605: inflateInit2_ (in
/lib/x86_64-linux-gnu/libz.so.1.2.3.4)
==20888== by 0x5019C13: H5Z_filter_deflate (H5Zdeflate.c:110)
==20888== by 0x5019170: H5Z_pipeline (H5Z.c:1103)
==20888== by 0x4E9CB69: H5D_chunk_lock (H5Dchunk.c:2758)
==20888== by 0x4E9DB20: H5D_chunk_read (H5Dchunk.c:1728)
==20888== by 0x4EACDDA: H5D_read (H5Dio.c:447)
==20888== by 0x4EAD248: H5Dread (H5Dio.c:173)
==20888== by 0x4CAD1D: HDF5::HDF5Reader::readData(std::string
const&) (HDF5Reader.cxx:634)
==20888== by 0x4CA489: HDF5::HDF5Reader::read(std::vector<int,
std::allocator<int> >&, std::string const&) (HDF5Reader.cxx:527)
==20888== by 0x4C379E: CD3T10_USER::SetupConstraints()
(cd3t10mpi_main.cxx:404)
==20888== by 0x4B6B7A: CD3T10::Solve() (CD3T10mpi.cxx:692)
==20888== by 0x4C0095: main (cd3t10mpi_main.cxx:589)

My own code HDF5Reader.cxx:634 reads:

status = H5Dread(dataset, H5T_NATIVE_INT, H5S_ALL, H5S_ALL,
H5P_DEFAULT, (int*)data);

I write my arrays several times, the message comes up only at the first use.

Any hints how to fix are highly appreciated.

According to the top-most lines this looks to me as if it's
coming from libz, which in turn is used by HDF5. Thus the
people to fix it would be the libz maintainers. I just down-
loaded the newest version (1.25, you seem to still be using
1.2.3.4) and there's an entry in the ChangeLog file for the
version 1.2.3.7:

Avoid access of uninitialized data for first inflateReset2
call [Gomes]

This sounds quite a bit as if it may be the fix for the prob-
lem you encountered. So I would recomment that you update to
at least version 1.2.3.7 and test if valgrind's complaint goes
away if you use the newer libz version instead.

                       Regards, Jens

--
\ Jens Thoms Toerring ________ jt@toerring.de
\_______________________________ http://toerring.de

_______________________________________________
Hdf-forum is for HDF software users discussion.
Hdf-forum@hdfgroup.org
http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org