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

Lionel Landwerlin lionel.g.landwerlin at intel.com
Fri Jul 20 16:19:57 UTC 2018


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 <rafael.antognolli at intel.com>
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
 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



More information about the mesa-dev mailing list