• Alejandro Sanchez's avatar
    jobcomp/elasticsearch - fix memory leak when transferring generated buffer. · 8172b7df
    Alejandro Sanchez authored
    Running slurmctld under valgrind while operating with jobcomp/elasticsearch
    reported the following bytes definitely lost:
    
    ==27403== 658 bytes in 1 blocks are definitely lost in loss record 301 of 342
    ==27403==    at 0x4C2FD4F: realloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
    ==27403==    by 0x2281B3: slurm_xrealloc (xmalloc.c:137)
    ==27403==    by 0x22856A: makespace (xstring.c:114)
    ==27403==    by 0x2285D0: _xstrcat (xstring.c:132)
    ==27403==    by 0x228CE0: _xstrfmtcat (xstring.c:291)
    ==27403==    by 0x83C5BCD: ???
    ==27403==    by 0x30A913: g_slurm_jobcomp_write (slurm_jobcomp.c:172)
    ==27403==    by 0x18D8FC: job_completion_logger (job_mgr.c:13652)
    
    It turns out the generated buffer in slurm_jobcomp_log_record was xstrdup'ed to
    the corresponding job_node->serialized_job, but the originally generated buffer
    wasn't freed afterwards. The fix consists in change the transfer so that instead
    of xstrdup'ing the char * we just assign the pointer and NULL the buffer.
    
    The job_node->serialized_job was already xfree'd properly later when the job
    was indexed.
    
    Discovered while working on Bug 4065.
    8172b7df
To find the state of this project's repository at the time of any of these versions, check out the tags.