I was able to reproduce the problem in the debugger:
Thread 68: "Cannot remove an observer <NSDictionaryController 0x7fc4f530e290> for the key path \"value\" from <_NSDictionaryControllerKeyValuePair 0x60000093e2b0> because it is not registered as an observer."
The problems were
a) I use NSString as the value, but check for an NSNumber, hence it should be
NSString *dictIdent = self.loggedConfigs[identString];
but that didn't cause the actual crash
b) The method was called from multiple dispatch queues at the same time, causing a mutating while enumerating crash.