It would help if you showed the actual message to to know if there is a simulator bug.
But in any case, you need to raise the objection to the phase immediately, before it ends.
And usually you need to only do this for a specific phase
function void phase_ready_to_end(uvm_phase phase);
if(phase.get_name == "run")begin
phase.raise_objection(this, "Scoreboard objection");
fork
begin
wait(vif.rst);
phase.drop_objection(this, "Scoreboard objection");
end
join_none