From 200e62873d4ba25c3eda1a17368f94a2081d3bfc Mon Sep 17 00:00:00 2001 From: Andrey Alekseenko Date: Wed, 13 Dec 2023 01:22:31 +0100 Subject: [PATCH] Fix crash in urAdapterGet with non-initialized platforms Encountered in a bothched ASAN build, but makes sense to check platform status before trying to query it. --- scripts/templates/ldrddi.cpp.mako | 2 ++ source/loader/ur_ldrddi.cpp | 3 +++ 2 files changed, 5 insertions(+) diff --git a/scripts/templates/ldrddi.cpp.mako b/scripts/templates/ldrddi.cpp.mako index 90a2d1449a..bbc7c7c7d0 100644 --- a/scripts/templates/ldrddi.cpp.mako +++ b/scripts/templates/ldrddi.cpp.mako @@ -58,6 +58,8 @@ namespace ur_loader { for( auto& platform : context->platforms ) { + if(platform.initStatus != ${X}_RESULT_SUCCESS) + continue; platform.dditable.${n}.${th.get_table_name(n, tags, obj)}.${th.make_pfn_name(n, tags, obj)}( 1, &${obj['params'][1]['name']}[adapterIndex], nullptr ); try { diff --git a/source/loader/ur_ldrddi.cpp b/source/loader/ur_ldrddi.cpp index 75434a512b..dac56ddd1d 100644 --- a/source/loader/ur_ldrddi.cpp +++ b/source/loader/ur_ldrddi.cpp @@ -54,6 +54,9 @@ __urdlllocal ur_result_t UR_APICALL urAdapterGet( size_t adapterIndex = 0; if (nullptr != phAdapters && NumEntries != 0) { for (auto &platform : context->platforms) { + if (platform.initStatus != UR_RESULT_SUCCESS) { + continue; + } platform.dditable.ur.Global.pfnAdapterGet( 1, &phAdapters[adapterIndex], nullptr); try {