Skip to content

Commit 919e9da

Browse files
fix: segfaults in Validation Layer for Zer API's (#392)
Signed-off-by: Vishnu Khanth <[email protected]>
1 parent a62ec58 commit 919e9da

File tree

11 files changed

+63
-7
lines changed

11 files changed

+63
-7
lines changed

scripts/templates/validation/param.cpp.mako

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,11 @@ namespace validation_layer
3232
ZEParameterValidation *zeChecker = new ZEParameterValidation;
3333
ZESParameterValidation *zesChecker = new ZESParameterValidation;
3434
ZETParameterValidation *zetChecker = new ZETParameterValidation;
35+
ZERParameterValidation *zerChecker = new ZERParameterValidation;
3536
parameterChecker.zeValidation = zeChecker;
3637
parameterChecker.zetValidation = zetChecker;
3738
parameterChecker.zesValidation = zesChecker;
39+
parameterChecker.zerValidation = zerChecker;
3840
validation_layer::context.getInstance().validationHandlers.push_back(&parameterChecker);
3941
}
4042
}
@@ -44,6 +46,7 @@ namespace validation_layer
4446
delete parameterChecker.zeValidation;
4547
delete parameterChecker.zetValidation;
4648
delete parameterChecker.zesValidation;
49+
delete parameterChecker.zerValidation;
4750
}
4851
}
4952
%endif

source/layers/validation/checkers/basic_leak/zel_basic_leak_checker.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2024 Intel Corporation
2+
* Copyright (C) 2024-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -23,9 +23,11 @@ namespace validation_layer
2323
basic_leakChecker::ZEbasic_leakChecker *zeChecker = new basic_leakChecker::ZEbasic_leakChecker;
2424
basic_leakChecker::ZESbasic_leakChecker *zesChecker = new basic_leakChecker::ZESbasic_leakChecker;
2525
basic_leakChecker::ZETbasic_leakChecker *zetChecker = new basic_leakChecker::ZETbasic_leakChecker;
26+
basic_leakChecker::ZERbasic_leakChecker *zerChecker = new basic_leakChecker::ZERbasic_leakChecker;
2627
basic_leak_checker.zeValidation = zeChecker;
2728
basic_leak_checker.zetValidation = zetChecker;
2829
basic_leak_checker.zesValidation = zesChecker;
30+
basic_leak_checker.zerValidation = zerChecker;
2931
validation_layer::context.getInstance().validationHandlers.push_back(&basic_leak_checker);
3032
}
3133
}
@@ -35,6 +37,7 @@ namespace validation_layer
3537
delete basic_leak_checker.zeValidation;
3638
delete basic_leak_checker.zetValidation;
3739
delete basic_leak_checker.zesValidation;
40+
delete basic_leak_checker.zerValidation;
3841
}
3942
}
4043

source/layers/validation/checkers/certification/zel_certification_checker.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ certificationChecker::certificationChecker() {
2222
new certificationChecker::ZEScertificationChecker;
2323
certificationChecker::ZETcertificationChecker *zetChecker =
2424
new certificationChecker::ZETcertificationChecker;
25+
certificationChecker::ZERcertificationChecker *zerChecker =
26+
new certificationChecker::ZERcertificationChecker;
2527
ze_api_version_t certification_version = ZE_API_VERSION_CURRENT;
2628
const auto certification_version_string =
2729
getenv_string("ZEL_CERTIFICATION_CHECKER_VERSION");
@@ -38,6 +40,7 @@ certificationChecker::certificationChecker() {
3840
certification_checker.zeValidation = zeChecker;
3941
certification_checker.zetValidation = zetChecker;
4042
certification_checker.zesValidation = zesChecker;
43+
certification_checker.zerValidation = zerChecker;
4144
validation_layer::context.getInstance().validationHandlers.push_back(
4245
&certification_checker);
4346
}
@@ -48,6 +51,7 @@ certificationChecker::~certificationChecker() {
4851
delete certification_checker.zeValidation;
4952
delete certification_checker.zetValidation;
5053
delete certification_checker.zesValidation;
54+
delete certification_checker.zerValidation;
5155
}
5256
}
5357

source/layers/validation/checkers/events_checker/zel_events_checker.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2024 Intel Corporation
2+
* Copyright (C) 2024-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -21,9 +21,11 @@ eventsChecker::eventsChecker() {
2121
eventsChecker::ZEeventsChecker *zeChecker = new eventsChecker::ZEeventsChecker;
2222
eventsChecker::ZESeventsChecker *zesChecker = new eventsChecker::ZESeventsChecker;
2323
eventsChecker::ZETeventsChecker *zetChecker = new eventsChecker::ZETeventsChecker;
24+
eventsChecker::ZEReventsChecker *zerChecker = new eventsChecker::ZEReventsChecker;
2425
events_checker.zeValidation = zeChecker;
2526
events_checker.zesValidation = zesChecker;
2627
events_checker.zetValidation = zetChecker;
28+
events_checker.zerValidation = zerChecker;
2729

2830
validation_layer::context.getInstance().validationHandlers.push_back(&events_checker);
2931
}
@@ -34,6 +36,7 @@ eventsChecker::~eventsChecker() {
3436
delete events_checker.zeValidation;
3537
delete events_checker.zesValidation;
3638
delete events_checker.zetValidation;
39+
delete events_checker.zerValidation;
3740
}
3841
}
3942

source/layers/validation/checkers/parameter_validation/ze_parameter_validation.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ namespace validation_layer
2222
ZEParameterValidation *zeChecker = new ZEParameterValidation;
2323
ZESParameterValidation *zesChecker = new ZESParameterValidation;
2424
ZETParameterValidation *zetChecker = new ZETParameterValidation;
25+
ZERParameterValidation *zerChecker = new ZERParameterValidation;
2526
parameterChecker.zeValidation = zeChecker;
2627
parameterChecker.zetValidation = zetChecker;
2728
parameterChecker.zesValidation = zesChecker;
29+
parameterChecker.zerValidation = zerChecker;
2830
validation_layer::context.getInstance().validationHandlers.push_back(&parameterChecker);
2931
}
3032
}
@@ -34,6 +36,7 @@ namespace validation_layer
3436
delete parameterChecker.zeValidation;
3537
delete parameterChecker.zetValidation;
3638
delete parameterChecker.zesValidation;
39+
delete parameterChecker.zerValidation;
3740
}
3841
}
3942

source/layers/validation/checkers/template/zel_template_checker.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (C) 2024 Intel Corporation
2+
* Copyright (C) 2024-2025 Intel Corporation
33
*
44
* SPDX-License-Identifier: MIT
55
*
@@ -18,9 +18,11 @@ namespace validation_layer
1818
validationCheckerTemplate::ZEvalidationCheckerTemplate *zeChecker = new validationCheckerTemplate::ZEvalidationCheckerTemplate;
1919
validationCheckerTemplate::ZESvalidationCheckerTemplate *zesChecker = new validationCheckerTemplate::ZESvalidationCheckerTemplate;
2020
validationCheckerTemplate::ZETvalidationCheckerTemplate *zetChecker = new validationCheckerTemplate::ZETvalidationCheckerTemplate;
21+
validationCheckerTemplate::ZERvalidationCheckerTemplate *zerChecker = new validationCheckerTemplate::ZERvalidationCheckerTemplate;
2122
templateChecker.zeValidation = zeChecker;
2223
templateChecker.zetValidation = zetChecker;
2324
templateChecker.zesValidation = zesChecker;
25+
templateChecker.zerValidation = zerChecker;
2426
validation_layer::context.getInstance().validationHandlers.push_back(&templateChecker);
2527
}
2628
}
@@ -30,6 +32,7 @@ namespace validation_layer
3032
delete templateChecker.zeValidation;
3133
delete templateChecker.zetValidation;
3234
delete templateChecker.zesValidation;
35+
delete templateChecker.zerValidation;
3336
}
3437
}
3538

source/layers/validation/checkers/template/zel_template_checker.h

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/*
22
*
3-
* Copyright (C) 2024 Intel Corporation
3+
* Copyright (C) 2024-2025 Intel Corporation
44
*
55
* SPDX-License-Identifier: MIT
66
*
@@ -33,6 +33,9 @@ namespace validation_layer
3333
public:
3434
ze_result_t zetModuleGetDebugInfoPrologue( zet_module_handle_t hModule, zet_module_debug_info_format_t format, size_t* pSize, uint8_t* pDebugInfo ) override;
3535
};
36+
class ZERvalidationCheckerTemplate : public ZERValidationEntryPoints {
37+
public:
38+
};
3639
bool enableValidationCheckerTemplate = false;
3740
};
3841
extern class validationCheckerTemplate templateChecker;

source/lib/error_state.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ namespace error_state
2828
{
2929
errorDescs[threadId] = std::string();
3030
}
31-
*ppString = errorDescs[threadId].c_str();
31+
if(ppString != nullptr) {
32+
*ppString = errorDescs[threadId].c_str();
33+
}
3234
}
3335
}

test/CMakeLists.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -701,4 +701,11 @@ add_test(NAME test_ze_and_zer_tracing_dynamic COMMAND tests --gtest_filter=*Trac
701701
set_property(TEST test_ze_and_zer_tracing_dynamic PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")
702702

703703
add_test(NAME test_zer_unsupported_and_ze_tracing_dynamic COMMAND tests --gtest_filter=*TracingParameterizedTest*GivenLoaderWithDynamicTracingEnabledAndZerApisUnsupportedAndBothZeAndZerCallbacksRegisteredWhenCallingBothApisThenTracingWorksForZeOnly*)
704-
set_property(TEST test_zer_unsupported_and_ze_tracing_dynamic PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")
704+
set_property(TEST test_zer_unsupported_and_ze_tracing_dynamic PROPERTY ENVIRONMENT "ZE_ENABLE_NULL_DRIVER=1")
705+
706+
# ZER API Validation Layer Tests
707+
add_test(NAME test_zer_validation_layer_positive_case COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWithLoaderInterceptEnabledAndDdiExtSupportedWhenCallingRuntimeApisAfterZeInitDriversThenExpectNullDriverIsReachedSuccessfully)
708+
set_property(TEST test_zer_validation_layer_positive_case PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_NULL_DRIVER=1;ZE_ENABLE_VALIDATION_LAYER=1;ZE_ENABLE_PARAMETER_VALIDATION=1;ZE_ENABLE_HANDLE_LIFETIME=0;ZEL_ENABLE_EVENTS_CHECKER=1;ZEL_ENABLE_BASIC_LEAK_CHECKER=1;ZEL_ENABLE_CERTIFICATION_CHECKER=1")
709+
710+
add_test(NAME test_zer_parameter_validation_layer_negative_case COMMAND tests --gtest_filter=*GivenLevelZeroLoaderPresentWhenCallingZerApiWithParameterValidationEnabledThenExpectValidationsAreTriggered)
711+
set_property(TEST test_zer_parameter_validation_layer_negative_case PROPERTY ENVIRONMENT "ZE_ENABLE_LOADER_DEBUG_TRACE=1;ZE_ENABLE_NULL_DRIVER=1;ZE_ENABLE_VALIDATION_LAYER=1;ZE_ENABLE_PARAMETER_VALIDATION=1;ZE_ENABLE_HANDLE_LIFETIME=1;ZEL_ENABLE_EVENTS_CHECKER=1;ZEL_ENABLE_BASIC_LEAK_CHECKER=1;ZEL_ENABLE_CERTIFICATION_CHECKER=1")

test/loader_api.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2311,7 +2311,11 @@ TEST_F(DriverOrderingTest,
23112311
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
23122312
EXPECT_TRUE(compare_env("zerGetLastErrorDescription", "1"));
23132313

2314-
deviceId = zerTranslateDeviceHandleToIdentifier(nullptr);
2314+
uint32_t device_count = 1;
2315+
std::vector<ze_device_handle_t> devices(device_count);
2316+
EXPECT_EQ(ZE_RESULT_SUCCESS, zeDeviceGet(drivers[0], &device_count, devices.data()));
2317+
2318+
deviceId = zerTranslateDeviceHandleToIdentifier(devices[0]);
23152319
EXPECT_TRUE(compare_env("zerTranslateDeviceHandleToIdentifier", "1"));
23162320

23172321
ze_device_handle_t translatedDevice = zerTranslateIdentifierToDeviceHandle(deviceId);

0 commit comments

Comments
 (0)