]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb/testsuite/lib/rocm: Fix with_rocm_gpu_lock
authorLancelot SIX <lancelot.six@amd.com>
Tue, 7 May 2024 08:49:51 +0000 (09:49 +0100)
committerLancelot SIX <lancelot.six@amd.com>
Tue, 7 May 2024 09:33:45 +0000 (10:33 +0100)
A recent commit refactored with_rocm_gpu_lock:

    commit fbb0edfe60edf4ca01884151e6d9b1353aaa0a7e
    Date:   Sat May 4 10:41:09 2024 +0200

        [gdb/testsuite] Factor out proc with_lock

        Factor out proc with_lock from with_rocm_gpu_lock, and move required procs
        lock_file_acquire and lock_file_release to lib/gdb-utils.exp.

This causes regressions in gdb.rocm/*.exp (as well as in downstream
rocgdb).  The issue can be reproduced in the following minimal test:

    load_lib rocm.exp
    set foo hello
    with_rocm_gpu_lock {
        verbose -logs $foo
    }

The issue is that the body to execute under the lock is executed in the
context of with_rocm_gpu_lock (uplevel 1 used in with_lock) instead of
in the context of the "original" caller.

This patch adjusted with_rocm_gpu_lock to account for the new extra
frame in the call stack between the caller of with_rocm_gpu_lock and
where the code execution is triggered.

Approved-By: Tom de Vries <tdevries@suse.de>
Change-Id: I79ce2c9615012215867ed5bb60144abe7dce28fe

gdb/testsuite/lib/rocm.exp

index 2276bb3640ecd50a0cbd2766b5e36a5e167708ba..b2db0d5c783f35c0a350a25e6d3d3feef83eb1f9 100644 (file)
@@ -112,7 +112,7 @@ set gpu_lock_filename gpu-parallel.lock
 # the GPU lock.
 
 proc with_rocm_gpu_lock { body } {
-    with_lock $::gpu_lock_filename $body
+    with_lock $::gpu_lock_filename {uplevel 1 $body}
 
     # In case BODY returned early due to some testcase failing, and
     # left GDB running, debugging the GPU.