core: Use ensure_started instead of calling exec:start directly