The job is not really running, the timeline view only visualizes jobs by their "start" and "end" time.
Usually the Cron runner can handle cases of error and set the end time.
But in case of a fatal error this does not happen, the job has ended without setting the state in the database. This happens for example if you exceed the memory limit.
To notice this, you should validate if such errors get into the error log or validate your crontab config, if it not only puts stdout but also error to /dev/null.
You can simple delete this run from the table, it will have no negative effect, and if it had ended would get cleaned anyway after the configured amount of days.