[Mesa-dev] [PATCH 2/2] intel: tools: dump: protect against multiple calls on destructor
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Fri Jul 20 10:26:53 UTC 2018
On 20/07/18 11:24, Lionel Landwerlin wrote:
> Because we LD_PRELOAD in front of the command line, which might
> contain gdb, the fini destructor in intel_dump_gpu.c might be called
> twice (once for the program we're tracing and once for gdb). This
> change prevents a crash in gdb when the aub->file has already been
> closed.
This was found using coredumpctl :)
>
> Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
> ---
> src/intel/tools/aub_write.c | 5 ++++-
> src/intel/tools/intel_dump_gpu.c | 10 ++++++++--
> 2 files changed, 12 insertions(+), 3 deletions(-)
>
> diff --git a/src/intel/tools/aub_write.c b/src/intel/tools/aub_write.c
> index 6fb99feb005..c948a4852b0 100644
> --- a/src/intel/tools/aub_write.c
> +++ b/src/intel/tools/aub_write.c
> @@ -286,7 +286,10 @@ void
> aub_file_finish(struct aub_file *aub)
> {
> aub_ppgtt_table_finish(&aub->pml4, 4);
> - fclose(aub->file);
> + if (aub->file) {
> + fclose(aub->file);
> + aub->file = NULL;
> + }
> }
>
> uint32_t
> diff --git a/src/intel/tools/intel_dump_gpu.c b/src/intel/tools/intel_dump_gpu.c
> index 1abe54147cf..c4082c207f0 100644
> --- a/src/intel/tools/intel_dump_gpu.c
> +++ b/src/intel/tools/intel_dump_gpu.c
> @@ -538,7 +538,13 @@ ioctl_init_helper(int fd, unsigned long request, ...)
> static void __attribute__ ((destructor))
> fini(void)
> {
> - free(output_filename);
> aub_file_finish(&aub_file);
> - free(bos);
> + if (output_filename) {
> + free(output_filename);
> + output_filename = NULL;
> + }
> + if (bos) {
> + free(bos);
> + bos = NULL;
> + }
> }
More information about the mesa-dev
mailing list