A race condition can be this small:
if Assigned(Setting.OnChanged) then Setting.OnChanged(Setting);
If in between these lines, the value of Setting.OnChanged
becomes nil
, then you have an access violation.
It is a very slim, but real chance.
–jeroen