Skip to content

Commit 510f63d

Browse files
committed
Fix device var uninit when ctx not owned
1 parent a9aaccc commit 510f63d

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

src/CHIPBackend.cc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,10 +430,14 @@ void chipstar::Module::invalidateDeviceVariablesNoLock() {
430430

431431
void chipstar::Module::deallocateDeviceVariablesNoLock(
432432
chipstar::Device *Device) {
433+
if (!DeviceVariablesAllocated_)
434+
return;
433435
invalidateDeviceVariablesNoLock();
434436
for (auto *Var : ChipVars_) {
435-
auto Err = Device->getContext()->free(Var->getDevAddr());
436-
(void)Err;
437+
if (!::Backend->getReinitializeFlag()) {
438+
auto Err = Device->getContext()->free(Var->getDevAddr());
439+
(void)Err;
440+
}
437441
Var->setDevAddr(nullptr);
438442
}
439443
DeviceVariablesAllocated_ = false;

src/CHIPBackend.hh

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1825,6 +1825,7 @@ public:
18251825
*/
18261826
class Backend {
18271827
protected:
1828+
bool ReinitializeFlag_ = false;
18281829
chipstar::EventMonitor *EventMonitor_ = nullptr;
18291830

18301831
int MinQueuePriority_;
@@ -1838,6 +1839,8 @@ protected:
18381839
std::shared_ptr<spdlog::logger> Logger;
18391840

18401841
public:
1842+
void setReinitializeFlag(bool Flag) { ReinitializeFlag_ = Flag; }
1843+
bool getReinitializeFlag() const { return ReinitializeFlag_; }
18411844
chipstar::Context *PrimaryContext = nullptr;
18421845
std::stack<chipstar::Context *> ChipCtxStack;
18431846

src/CHIPDriver.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ extern hipError_t CHIPReinitialize(const uintptr_t *NativeHandles,
185185

186186
Backend->initializeFromNative(NativeHandles, NumHandles);
187187
Backend->getActiveDevice()->addFromModuleState(ModuleState);
188+
Backend->setReinitializeFlag(true);
188189

189190
return hipSuccess;
190191
}

0 commit comments

Comments
 (0)