<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/64681>64681</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libomptarget] potential deadlock in amdgpu plugin
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
jdoerfert,
kevinsala
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ye-luo
</td>
</tr>
</table>
<pre>
Tries to guess why https://github.com/llvm/llvm-project/issues/64572 happens.
In a threaded code,
T1 gets Stream 1 and summit Event 1
T2 gets Stream 2 and summit Event 2
T3 gets Stream 3 and summit Event 3
now for what ever reason each thread picks up the next stream
T1 gets Stream 2 and summit Event 1. Tries to lock stream 1 and 2
T2 gets Stream 3 and summit Event 2. Tries to lock stream 2 and 3
T3 gets Stream 1 and summit Event 3. Tries to lock stream 3 and 1
at https://github.com/llvm/llvm-project/blob/e63382542f0941b550839a226d0e2ad02a9de328/openmp/libomptarget/plugins-nextgen/amdgpu/src/rtl.cpp#L1436
I feel deadlock may happen and we need to avoid actively waiting a stream through its recorded stream.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykVMGOrDYQ_BpzaS3CbfDAgcMmG6RIuWV_wOAe8K6xkW1mMn8fwbDJW-3s4eldZiR3Ua6q7raK0YyOqGXVbwzxTXsKZwqJITL8nSG-08W4qKzaTqqXTK1p8qG90ZNdfdZ7fWtfg6EIycO4UoxwnW4wpbREJp4Zdgy70aRp7fPBzww7ay8ff09L8G80JIadiXGlyLCTZXVCmNSykIs5K15Y8Xz__dOBgjQFUpo0DF7TpnAvvXIYKUX4OwVSM3BQTkNc59kk-ONCLgE_gPgJiF-BeADFJ6D4ChR3oPNXOPsA10kloAsFCKSid0BqmA65sJjhPcK6QJoIHP2TIO68D9U_EMVz-C9k64f34_PDKD709kAyfkNzv1E8dP4gS_ENzf3GI2mVfn4Ieut7hh1JIWqsSjwXTcn7qipq0ShEqQtCpQtUjSaBNcPOL-TmZWMyvZ-XpMJIG9Ni19G4-LRlPZJj2KlZj8vKsIthYNiFZPNhWRiKv3gp5DFhcCayoEnp3desbsck7s6uW-9Ib7bVxRsNakjmQvYGV2WScSOojyjSFPw6TmBShECDD9vI3mt5pluhG9GojFouGyx4w1FmU9ufTrJRmgaxHRDJ4VxXDT9pVROXOGSmxQJFUfOSC16XMu_7aqgqKUtUUmLZs7KgWRmbb8HmPozZvletLGXNM6t6svHYdEdX2IvHXod2b0a_jpGVhTUxxf9Zkkl2fyI-xVy9wOITuWTUD6EZB_es4d6EbA22_ZX3QNb83wAAAP__0UGE9A">