On Fri, Oct 23, 2015 at 10:10:06 +0200, Jakub Jelinek wrote: > On Thu, Oct 22, 2015 at 09:26:37PM +0300, Ilya Verbin wrote: > > On Mon, Dec 22, 2014 at 13:01:40 +0100, Thomas Schwinge wrote: > > > By chance (when tracking down a different problem), I've found the > > > following. Would you please check whether that's a real problem in > > > liboffloadmic, or its libgomp plugin, or just a mis-diagnosis by > > > Valgrind? > > > > > > ==21327== Syscall param write(buf) points to uninitialised byte(s) > > > > Finally we have investigated this :) Valgrind warns about uninitialized > > bytes, > > inserted into the struct for alignment. It's possible to avoid the warning > > by > > the patch bellow. Should I commit it, or just leave it as is? > > Or use calloc instead of malloc, or add two uint8_t padding fields after the > two uint8_t fields and initialize them too. Though, as you have some > padding after the name, I think calloc is best.
Here is what I committed to trunk together with an obvious change. liboffloadmic/ * runtime/offload_host.cpp (OffloadDescriptor::setup_misc_data): Use calloc instead of malloc. (__offload_fini_library): Set mic_engines_total to zero. diff --git a/liboffloadmic/runtime/offload_host.cpp b/liboffloadmic/runtime/offload_host.cpp index c6c6518..a150410 100644 --- a/liboffloadmic/runtime/offload_host.cpp +++ b/liboffloadmic/runtime/offload_host.cpp @@ -2424,8 +2424,8 @@ bool OffloadDescriptor::setup_misc_data(const char *name) } // initialize function descriptor - m_func_desc = (FunctionDescriptor*) malloc(m_func_desc_size + - misc_data_size); + m_func_desc = (FunctionDescriptor*) calloc(1, m_func_desc_size + + misc_data_size); if (m_func_desc == NULL) LIBOFFLOAD_ERROR(c_malloc); m_func_desc->console_enabled = console_enabled; @@ -5090,6 +5090,7 @@ static void __offload_fini_library(void) OFFLOAD_DEBUG_TRACE(2, "Cleanup offload library ...\n"); if (mic_engines_total > 0) { delete[] mic_engines; + mic_engines_total = 0; if (mic_proxy_fs_root != 0) { free(mic_proxy_fs_root); -- Ilya