Copy DataEngine relays before itterating
relay->checkQueueing emits a signal to all observers. As it's a signal anything can happen at that point. It's seemingly common for a receiver to connect/disconnect a new visualisation which in turn alters d->relays.
This broke when a foreach (with implicit shallow copy) was ported to a for statement.
This report contains a good analysis and test case
Probably also:
Edited by David Edmundson