Skip to content

Commit 8a49660

Browse files
authored
[SYCL][XPTI] Fix dangling pointer (#8904)
Hoist a call to `packCallArguments` and conditionally obtain the data. Fixes a dangling pointer issue.
1 parent df9f5b0 commit 8a49660

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

sycl/source/detail/plugin.hpp

+6-2
Original file line numberDiff line numberDiff line change
@@ -177,10 +177,14 @@ class plugin {
177177
uint64_t CorrelationID = pi::emitFunctionBeginTrace(PIFnName);
178178
uint64_t CorrelationIDWithArgs = 0;
179179
unsigned char *ArgsDataPtr = nullptr;
180+
using PackCallArgumentsTy =
181+
decltype(packCallArguments<PiApiOffset>(std::forward<ArgsT>(Args)...));
182+
auto ArgsData =
183+
xptiTraceEnabled()
184+
? packCallArguments<PiApiOffset>(std::forward<ArgsT>(Args)...)
185+
: PackCallArgumentsTy{};
180186
// TODO check if stream is observed when corresponding API is present.
181187
if (xptiTraceEnabled()) {
182-
auto ArgsData =
183-
packCallArguments<PiApiOffset>(std::forward<ArgsT>(Args)...);
184188
ArgsDataPtr = ArgsData.data();
185189
CorrelationIDWithArgs = pi::emitFunctionWithArgsBeginTrace(
186190
static_cast<uint32_t>(PiApiOffset), PIFnName, ArgsDataPtr, *MPlugin);

0 commit comments

Comments
 (0)