Re: [Mesa-dev] [PATCH v2] intel: tools: dump: protect against multiple calls on destructor

2018-07-20 Thread Rafael Antognolli
On Fri, Jul 20, 2018 at 05:19:57PM +0100, Lionel Landwerlin wrote:
> When running gdb, make sure to pass the LD_PRELOAD variable only to
> the executed program, not the debugger. Otherwise the debugger will
> run the preloaded constructor/destructor too and bad things will
> happen.
> 
> Suggested-by: Rafael Antognolli 
> Signed-off-by: Lionel Landwerlin 

Reviewed-by: Rafael Antognolli 

> ---
>  src/intel/tools/intel_dump_gpu.in | 19 ---
>  1 file changed, 16 insertions(+), 3 deletions(-)
> 
> diff --git a/src/intel/tools/intel_dump_gpu.in 
> b/src/intel/tools/intel_dump_gpu.in
> index 0454cff25da..aa187ba8614 100755
> --- a/src/intel/tools/intel_dump_gpu.in
> +++ b/src/intel/tools/intel_dump_gpu.in
> @@ -23,8 +23,10 @@ EOF
>  exit 0
>  }
>  
> +ld_preload="@install_libexecdir@/libintel_dump_gpu.so${LD_PPRELOAD:+:$LD_PRELOAD}"
>  args=""
>  file=""
> +gdb=""
>  
>  function add_arg() {
>  arg=$1
> @@ -60,6 +62,14 @@ while true; do
>  add_arg "device=${1##--device=}"
>  shift
>  ;;
> +--gdb)
> +gdb=1
> +shift
> +;;
> +-g)
> +gdb=1
> +shift
> +;;
>  --help)
>  show_help
>  ;;
> @@ -85,9 +95,12 @@ done
>  tmp_file=`mktemp`
>  echo -e $args > $tmp_file
>  
> -LD_PRELOAD="@install_libexecdir@/libintel_dump_gpu.so${LD_PPRELOAD:+:$LD_PRELOAD}"
>  \
> -  INTEL_DUMP_GPU_CONFIG=$tmp_file \
> -  $@
> +if [ -z $gdb ]; then
> +LD_PRELOAD="$ld_preload" INTEL_DUMP_GPU_CONFIG=$tmp_file $@
> +else
> +gdb -iex "set exec-wrapper env LD_PRELOAD=$ld_preload 
> INTEL_DUMP_GPU_CONFIG=$tmp_file" --args $@
> +fi
> +
>  ret=$?
>  rm $tmp_file
>  exit $ret
> -- 
> 2.18.0
> 
___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev


[Mesa-dev] [PATCH v2] intel: tools: dump: protect against multiple calls on destructor

2018-07-20 Thread Lionel Landwerlin
When running gdb, make sure to pass the LD_PRELOAD variable only to
the executed program, not the debugger. Otherwise the debugger will
run the preloaded constructor/destructor too and bad things will
happen.

Suggested-by: Rafael Antognolli 
Signed-off-by: Lionel Landwerlin 
---
 src/intel/tools/intel_dump_gpu.in | 19 ---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/src/intel/tools/intel_dump_gpu.in 
b/src/intel/tools/intel_dump_gpu.in
index 0454cff25da..aa187ba8614 100755
--- a/src/intel/tools/intel_dump_gpu.in
+++ b/src/intel/tools/intel_dump_gpu.in
@@ -23,8 +23,10 @@ EOF
 exit 0
 }
 
+ld_preload="@install_libexecdir@/libintel_dump_gpu.so${LD_PPRELOAD:+:$LD_PRELOAD}"
 args=""
 file=""
+gdb=""
 
 function add_arg() {
 arg=$1
@@ -60,6 +62,14 @@ while true; do
 add_arg "device=${1##--device=}"
 shift
 ;;
+--gdb)
+gdb=1
+shift
+;;
+-g)
+gdb=1
+shift
+;;
 --help)
 show_help
 ;;
@@ -85,9 +95,12 @@ done
 tmp_file=`mktemp`
 echo -e $args > $tmp_file
 
-LD_PRELOAD="@install_libexecdir@/libintel_dump_gpu.so${LD_PPRELOAD:+:$LD_PRELOAD}"
 \
-  INTEL_DUMP_GPU_CONFIG=$tmp_file \
-  $@
+if [ -z $gdb ]; then
+LD_PRELOAD="$ld_preload" INTEL_DUMP_GPU_CONFIG=$tmp_file $@
+else
+gdb -iex "set exec-wrapper env LD_PRELOAD=$ld_preload 
INTEL_DUMP_GPU_CONFIG=$tmp_file" --args $@
+fi
+
 ret=$?
 rm $tmp_file
 exit $ret
-- 
2.18.0

___
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev