[DTrace-devel] [PATCH 7/8] probe: fix memory leaks

Eugene Loh eugene.loh at oracle.com
Thu Apr 4 21:21:04 UTC 2024


I know you're looking some more at a couple of these patches... is this 
one of them?  Without the patch, a bunch of tests pass. When I add the 
patch, those tests fail.  Mostly with
     munmap_chunk(): invalid pointer
but some
     free(): invalid pointer

sudo ./runtest.sh \
test/demo/dtrace/begin.d \
test/demo/fbt/xioctl.d \
test/demo/intro/rwtime.d \
test/demo/intro/trussrw.d \
test/demo/io/applicat.d \
test/demo/io/iocpu.d \
test/demo/io/iosnoop.d \
test/demo/io/iothrough.d \
test/demo/io/iotime.d \
test/demo/io/whoio.d \
test/demo/io/whowrite.d \
test/demo/ip/ipio.d \
test/demo/ip/ipproto.d \
test/demo/lockstat/whatlock.d \
test/demo/proc/progtime.d \
test/demo/proc/sig.d \
test/demo/proc/whoexec.d \
test/demo/sched/dtrace.d \
test/demo/sched/howlong.d \
test/demo/sched/qlen.d \
test/demo/sched/qtime.d \
test/demo/sched/tick.d \
test/demo/sched/ticktime.d \
test/demo/sched/where.d \
test/demo/sched/whoqueue.d \
test/demo/sched/whosteal.d \
test/demo/script/syscall.d \
test/demo/script/tracewrite.d

On 4/3/24 11:26, Kris Van Hees via DTrace-devel wrote:
> Signed-off-by: Kris Van Hees <kris.van.hees at oracle.com>
> ---
>   libdtrace/dt_probe.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
>
> diff --git a/libdtrace/dt_probe.c b/libdtrace/dt_probe.c
> index 7da30ddb..c0273169 100644
> --- a/libdtrace/dt_probe.c
> +++ b/libdtrace/dt_probe.c
> @@ -1,6 +1,6 @@
>   /*
>    * Oracle Linux DTrace.
> - * Copyright (c) 2006, 2023, Oracle and/or its affiliates. All rights reserved.
> + * Copyright (c) 2006, 2024, Oracle and/or its affiliates. All rights reserved.
>    * Licensed under the Universal Permissive License v 1.0 as shown at
>    * http://oss.oracle.com/licenses/upl.
>    */
> @@ -962,6 +962,9 @@ dt_probe_args_info(dtrace_hdl_t *dtp, dt_probe_t *prp)
>   		prp->mapping[i] = argv[i].mapping;
>   		prp->argv[i] = dtt;
>   		prp->xargv[i]->dn_flags |= argv[i].flags;
> +
> +		free((char *)argv[i].native);
> +		free((char *)argv[i].xlate);
>   	}
>   
>   	dt_free(dtp, argv);



More information about the DTrace-devel mailing list