Skip to content

Commit 5742102

Browse files
committed
allow uninserted program
1 parent a073325 commit 5742102

File tree

3 files changed

+14
-6
lines changed

3 files changed

+14
-6
lines changed

source/loader/layers/sanitizer/asan/asan_ddi.cpp

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ ur_result_t setupContext(ur_context_handle_t Context, uint32_t numDevices,
5555
bool isInstrumentedKernel(ur_kernel_handle_t hKernel) {
5656
auto hProgram = GetProgram(hKernel);
5757
auto PI = getAsanInterceptor()->getProgramInfo(hProgram);
58+
if (PI == nullptr) {
59+
return false;
60+
}
5861
return PI->isKernelInstrumented(hKernel);
5962
}
6063

@@ -290,8 +293,9 @@ __urdlllocal ur_result_t UR_APICALL urProgramRetain(
290293
UR_CALL(pfnRetain(hProgram));
291294

292295
auto ProgramInfo = getAsanInterceptor()->getProgramInfo(hProgram);
293-
UR_ASSERT(ProgramInfo != nullptr, UR_RESULT_ERROR_INVALID_VALUE);
294-
ProgramInfo->RefCount++;
296+
if (ProgramInfo != nullptr) {
297+
ProgramInfo->RefCount++;
298+
}
295299

296300
return UR_RESULT_SUCCESS;
297301
}
@@ -419,8 +423,7 @@ ur_result_t UR_APICALL urProgramRelease(
419423
UR_CALL(pfnProgramRelease(hProgram));
420424

421425
auto ProgramInfo = getAsanInterceptor()->getProgramInfo(hProgram);
422-
UR_ASSERT(ProgramInfo != nullptr, UR_RESULT_ERROR_INVALID_VALUE);
423-
if (--ProgramInfo->RefCount == 0) {
426+
if (ProgramInfo != nullptr && --ProgramInfo->RefCount == 0) {
424427
UR_CALL(getAsanInterceptor()->unregisterProgram(hProgram));
425428
UR_CALL(getAsanInterceptor()->eraseProgram(hProgram));
426429
}

source/loader/layers/sanitizer/asan/asan_interceptor.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,7 @@ ur_result_t AsanInterceptor::registerProgram(ur_program_handle_t Program) {
436436

437437
ur_result_t AsanInterceptor::unregisterProgram(ur_program_handle_t Program) {
438438
auto ProgramInfo = getProgramInfo(Program);
439+
assert(ProgramInfo != nullptr && "unregistered program!");
439440

440441
for (auto AI : ProgramInfo->AllocInfoForGlobals) {
441442
UR_CALL(getDeviceInfo(AI->Device)->Shadow->ReleaseShadow(AI));
@@ -483,6 +484,7 @@ ur_result_t AsanInterceptor::registerSpirKernels(ur_program_handle_t Program) {
483484
}
484485

485486
auto PI = getProgramInfo(Program);
487+
assert(PI != nullptr && "unregistered program!");
486488
for (const auto &SKI : SKInfo) {
487489
if (SKI.Size == 0) {
488490
continue;
@@ -519,6 +521,7 @@ AsanInterceptor::registerDeviceGlobals(ur_program_handle_t Program) {
519521
auto Context = GetContext(Program);
520522
auto ContextInfo = getContextInfo(Context);
521523
auto ProgramInfo = getProgramInfo(Program);
524+
assert(ProgramInfo != nullptr && "unregistered program!");
522525

523526
for (auto Device : Devices) {
524527
ManagedQueue Queue(Context, Device);

source/loader/layers/sanitizer/asan/asan_interceptor.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,10 @@ class AsanInterceptor {
266266

267267
std::shared_ptr<ProgramInfo> getProgramInfo(ur_program_handle_t Program) {
268268
std::shared_lock<ur_shared_mutex> Guard(m_ProgramMapMutex);
269-
assert(m_ProgramMap.find(Program) != m_ProgramMap.end());
270-
return m_ProgramMap[Program];
269+
if (m_ProgramMap.find(Program) != m_ProgramMap.end()) {
270+
return m_ProgramMap[Program];
271+
}
272+
return nullptr;
271273
}
272274

273275
std::shared_ptr<KernelInfo> getKernelInfo(ur_kernel_handle_t Kernel) {

0 commit comments

Comments
 (0)