OpenHarmony开发者论坛

标题: AccessTokenManagerClient::DeleteRemoteDeviceTokens的crash [打印本页]

作者: pidan_2023    时间: 2024-3-1 16:21
标题: AccessTokenManagerClient::DeleteRemoteDeviceTokens的crash
【问题描述】
问题现象和发生的背景
几台设备联网后,手工下电一台设备,另一台设备上出现
AccessTokenManagerClient:eleteRemoteDeviceTokens的crash


相关的代码,截图,日志信息
添加日志,多次尝试复现,发现如下规律
int AccessTokenManagerClient:eleteRemoteDeviceTokens(const std::string& deviceID)
{
    auto proxy = GetProxy();   //  这个时候get proxy是正常的。
    if (proxy == nullptr) {
        ACCESSTOKEN_LOG_ERROR(LABEL, "proxy is null");
        return AccessTokenError::ERR_SERVICE_ABNORMAL;
    }

-------中间发现有token服务被销毁的日志-----
TokenSyncManagerService::~TokenSyncManagerService()
{
    ACCESSTOKEN_LOG_INFO(LABEL, "~TokenSyncManagerService()");
}

-------这中间应该是有线程的切换------

    int res = proxy->DeleteRemoteDeviceTokens(deviceID);  // 出crash在这个地方
    return res;
}

我理解token服务被销毁了,之前的proxy就成了野指针,调用proxy->DeleteRemoteDeviceTokens就crash了。

请问有什么修改的方法?确保AccessTokenManagerClient::DeleteRemoteDeviceTokens这个函数在执行时不被切换掉。


【运行环境】
硬件:rk3568
ROM版本:OH_4.0
DevEvoStudio版本:
SDK版本:

作者: sunwenbin    时间: 2024-3-7 15:05
请问一下,你这个是参考哪里的资料想要实现什么能力呢?我怎么没有找到。




欢迎光临 OpenHarmony开发者论坛 (https://forums.openharmony.cn/) Powered by Discuz! X3.5