Hi Marc,

On Aug 24, 2010, at 2:09 AM, Marc POINOT wrote:

> 
> Hi all,
> I've used valgrind to check my hdf5 use and it returns this:
> 
> ==16072== Source and destination overlap in memcpy(0x4FC9CC0, 0x4FC9CC0, 33)
> ==16072==    at 0x4906884: memcpy (mac_replace_strmem.c:394)
> ==16072==    by 0x4C6A27A: H5O_attr_write_cb (in 
> /home/poinot/Tools-2/lib/libhdf5.so.6.0.4)
> ==16072==    by 0x4C7FEEC: H5O_msg_iterate_real (in 
> /home/poinot/Tools-2/lib/libhdf5.so.6.0.4)
> ==16072==    by 0x4C6A620: H5O_attr_write (in 
> /home/poinot/Tools-2/lib/libhdf5.so.6.0.4)
> ==16072==    by 0x4B84F64: H5Awrite (in 
> /home/poinot/Tools-2/lib/libhdf5.so.6.0.4)
> ==16072==    by 0x4A13C1E: HDF_Add_Attribute_As_String (l3.c:761)
> ==16072==    by 0x4A1434E: HDF_Create_Root (l3.c:876)
> ==16072==    by 0x4A16C90: L3_openFile (l3.c:1359)
> ==16072==    by 0x401882: main (test02.c:19)
> 
> even when I set the --enable-using-memchecker.
> Then I should have a bug in my code...
> I cannot find it and when I run my test suite I has correct results (which is 
> far to be a proof...)
> Here's the piece of code, I would appreciate any help, hint or whatever 
> (except putting the
> valgrind message in the suppression list !).
> I've suspected a misused of SCALAR data space and strings, I've seen examples 
> with SIMPLE dataspaces
> instead of SCALAR for strings but the use of a fixed length string should be 
> possible ?

        Your code looks reasonable.  We've been working on valgrind issues 
recently - can you check out the latest code from:

        http://svn.hdfgroup.uiuc.edu/hdf5/branches/hdf5_1_8/

        See if these recent changes help.

                Quincey

> notes:
> * nodeid is a group
> * L3C_MAX_ATTRIB_SIZE > L3C_MAX_DTYPE
> * using hdf 1.8.5 thread-safe
> * using valgrind 3.5
> * x86 platform with gcc
> 
> int HDF_Add_Attribute_As_String(L3_Cursor_t *ctxt, hid_t nodeid, const char 
> *name, const char *value)
> {
>  hid_t sid,tid,aid;
>  herr_t status;
>  hsize_t dim;
>  char buff[L3C_MAX_ATTRIB_SIZE+1];
> 
>  if (!strcmp(name,L3S_DTYPE))
>  {
>    dim=(hsize_t)(L3C_MAX_DTYPE+1);
>  }
>  else
>  {
>    dim=(hsize_t)(L3C_MAX_ATTRIB_SIZE+1);
>  }
>  sid = H5Screate(H5S_SCALAR);
>  if (sid < 0)
>  {
>    return 0;
>  }
>  tid = H5Tcopy(H5T_C_S1);
>  if (tid < 0)
>  {
>    H5Sclose(sid);
>    return 0;
>  }
>  if (H5Tset_size(tid,dim)<0)
>  {
>    H5Tclose(tid);
>    H5Sclose(sid);
>    return 0;
>  }
>  aid = H5Acreate(nodeid,name,tid,sid,H5P_DEFAULT,H5P_DEFAULT);
>  if (aid < 0)
>  {
>    H5Tclose(tid);
>    H5Sclose(sid);
>    return 0;
>  }
>  memset(buff, 0, dim);
>  strcpy(buff, value);
>  status = H5Awrite(aid, tid, buff);
> 
>  H5Aclose(aid);
>  H5Tclose(tid);
>  H5Sclose(sid);
> 
>  if (status < 0)
>  {
>    return 0;
>  }
>  return 1;
> }
> 
> 
> -MP-
> -----------------------------------------------------------------------
> Marc POINOT [ONERA/DSNA] Tel:+33.1.46.73.42.84  Fax:+33.1.46.73.41.66
> Avertissement/disclaimer http://www.onera.fr/onera-en/emails-terms
> 
> 
> 
> _______________________________________________
> Hdf-forum is for HDF software users discussion.
> [email protected]
> http://mail.hdfgroup.org/mailman/listinfo/hdf-forum_hdfgroup.org


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

Reply via email to