diff --git a/src/platform/Tizen/DnssdImpl.cpp b/src/platform/Tizen/DnssdImpl.cpp index f7c14ae6eb3fa9..1b57f667684b72 100644 --- a/src/platform/Tizen/DnssdImpl.cpp +++ b/src/platform/Tizen/DnssdImpl.cpp @@ -340,7 +340,12 @@ void OnResolve(dnssd_error_e result, dnssd_service_h service, void * data) dnssdService.mTextEntries = textEntries.empty() ? nullptr : textEntries.data(); dnssdService.mTextEntrySize = textEntries.size(); - rCtx->mCallback(rCtx->mCbContext, &dnssdService, chip::Span(&ipAddr, 1), CHIP_NO_ERROR); + { // Lock the stack mutex when calling the callback function, so that the callback + // function could safely perform message exchange (e.g. PASE session pairing). + chip::DeviceLayer::StackLock lock; + rCtx->mCallback(rCtx->mCbContext, &dnssdService, chip::Span(&ipAddr, 1), CHIP_NO_ERROR); + } + rCtx->mInstance->RemoveContext(rCtx); return;