Skip to content

Commit fe01ae6

Browse files
committed
feature: events deadlock detection in validation layer
Related-To: NEO-12810 Signed-off-by: Chandio, Bibrak Qamar <[email protected]>
1 parent bc3bfa4 commit fe01ae6

File tree

1 file changed

+17
-11
lines changed

1 file changed

+17
-11
lines changed

test/loader_validation_layer.cpp

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -324,14 +324,16 @@ TEST(
324324
EXPECT_EQ(ZE_RESULT_SUCCESS, status);
325325

326326
std::stringstream capture;
327-
std::streambuf *old_buf;
328-
329-
old_buf = std::cerr.rdbuf();
327+
std::streambuf *old_cerr_buf = std::cerr.rdbuf();
328+
std::streambuf *old_cout_buf = std::cout.rdbuf();
330329
std::cerr.rdbuf(capture.rdbuf());
330+
std::cout.rdbuf(capture.rdbuf());
331331

332332
// Action_2: Host to Device, is dependent on Action_1. It also creates a deadlock by having Action_0 dependent on it.
333333
status = zeCommandListAppendMemoryCopy(command_list, device_mem_ptr, host_mem_ptr, buffer_size, event[2], 1, &event[1]);
334-
std::cerr.rdbuf(old_buf);
334+
335+
std::cerr.rdbuf(old_cerr_buf);
336+
std::cout.rdbuf(old_cout_buf);
335337

336338
auto found = capture.str().find("Warning: There may be a potential event deadlock");
337339
EXPECT_NE(found, std::string::npos);
@@ -355,12 +357,15 @@ TEST(
355357
capture.str("");
356358
capture.clear();
357359

358-
old_buf = std::cerr.rdbuf();
360+
old_cerr_buf = std::cerr.rdbuf();
361+
old_cout_buf = std::cout.rdbuf();
359362
std::cerr.rdbuf(capture.rdbuf());
363+
std::cout.rdbuf(capture.rdbuf());
360364

361365
// Explicitly break the dependency by signaling the last event.
362366
status = zeEventHostSignal(event[2]);
363-
std::cerr.rdbuf(old_buf);
367+
std::cerr.rdbuf(old_cerr_buf);
368+
std::cout.rdbuf(old_cout_buf);
364369

365370
found = capture.str().find("Warning: zeEventHostSignal is using the same ze_event_handle_t");
366371
EXPECT_NE(found, std::string::npos);
@@ -542,14 +547,15 @@ TEST(
542547
EXPECT_EQ(ZE_RESULT_SUCCESS, status);
543548

544549
std::stringstream capture;
545-
std::streambuf *old_buf;
546-
547-
old_buf = std::cerr.rdbuf();
550+
std::streambuf *old_cerr_buf = std::cerr.rdbuf();
551+
std::streambuf *old_cout_buf = std::cout.rdbuf();
548552
std::cerr.rdbuf(capture.rdbuf());
553+
std::cout.rdbuf(capture.rdbuf());
549554

550-
// Host to Device, signals event[0] and is dependent on nothing.
555+
// Host to Device, signals event[0] and is dependent on nothing.
551556
status = zeCommandListAppendMemoryCopy(command_list, device_mem_ptr, host_mem_ptr, buffer_size, event[0], 0, nullptr);
552-
std::cerr.rdbuf(old_buf);
557+
std::cerr.rdbuf(old_cerr_buf);
558+
std::cout.rdbuf(old_cout_buf);
553559
EXPECT_EQ(ZE_RESULT_SUCCESS, status);
554560

555561
auto warningText = capture.str();

0 commit comments

Comments
 (0)