Skip to content

Commit 7048835

Browse files
authored
[core] check if Instance has been initialized before logging (openthread#13099)
When logging while `Instance` has not been initialized yet, use 0 as return value of `GetUptime` and use `OPENTHREAD_CONFIG_LOG_LEVEL_INIT` as default log level instead of accessing raw memory.
1 parent 9137b82 commit 7048835

1 file changed

Lines changed: 24 additions & 3 deletions

File tree

src/core/common/log.cpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -133,23 +133,44 @@ void Logger::Log(const char *aModuleName, LogLevel aLogLevel, Error aError, cons
133133
#else
134134
#error "OPENTHREAD_CONFIG_LOG_PREPEND_UPTIME requires LOG_INSTANCE_AWARE_API_ENABLE under multi-instance"
135135
#endif
136-
ot::UptimeToString(instance->Get<ot::UptimeTracker>().GetUptime(), logString, kUptimeStringIncludeMsec);
136+
if (instance->IsInitialized())
137+
{
138+
ot::UptimeToString(instance->Get<ot::UptimeTracker>().GetUptime(), logString, kUptimeStringIncludeMsec);
139+
}
140+
else
141+
{
142+
ot::UptimeToString(0, logString, kUptimeStringIncludeMsec);
143+
}
137144
logString.Append(" ");
138145
}
139146
#endif
140147

141148
#if OPENTHREAD_CONFIG_LOG_LEVEL_DYNAMIC_ENABLE
142149

143150
#if !OPENTHREAD_CONFIG_MULTIPLE_INSTANCE_ENABLE
144-
VerifyOrExit(Instance::Get().GetLogLevel() >= aLogLevel);
151+
if (Instance::Get().IsInitialized())
152+
{
153+
VerifyOrExit(Instance::Get().GetLogLevel() >= aLogLevel);
154+
}
155+
else
156+
{
157+
VerifyOrExit(OPENTHREAD_CONFIG_LOG_LEVEL_INIT >= aLogLevel);
158+
}
145159
#elif !OPENTHREAD_CONFIG_LOG_INSTANCE_AWARE_API_ENABLE
146160
VerifyOrExit(Instance::GetGlobalLogLevel() >= aLogLevel);
147161
#else
148162
{
149163
Instance *instance = Instance::GetActiveInstance();
150164

151165
VerifyOrExit(instance != nullptr);
152-
VerifyOrExit(instance->GetLogLevel() >= aLogLevel);
166+
if (instance->IsInitialized())
167+
{
168+
VerifyOrExit(instance->GetLogLevel() >= aLogLevel);
169+
}
170+
else
171+
{
172+
VerifyOrExit(OPENTHREAD_CONFIG_LOG_LEVEL_INIT >= aLogLevel);
173+
}
153174
}
154175
#endif
155176

0 commit comments

Comments
 (0)