bugfix in __fire_event -- system list may change while running event