https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114379
--- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- (In reply to Denilson Sá Maia from comment #0) > for (auto &queue : queues) { > auto actionQueue = > std::dynamic_pointer_cast<ActionQueue>(queue); The compiler can't prove that actionQueue is not null here. If it is null, then actionQueue would dereference a null pointer, and so would try to do an atomic store on an object at address zero. That's what the warning is saying. > actionQueue->Stop(); You can fix this either by checking for null: if (actionQueue) actionQueue->Stop(); or by telling the compiler it can't be null: if (!actionQueue) __builtin_unreachable(); // or C++23 std::unreachable() actionQueue->Stop();