A possible cause is you are hitting governor limits for Async transactions
Per the doc, the limit is:
250,000 or the number of user licenses in your organization multiplied
by 200, whichever is greater
So, if you had 100 user seats, your limit is 250,000 - 2 = 249,998 execute()
invocations.
(-2 because the start()
and finish()
consume one async transaction each)
If you had 10,000 user seats, your limit is 1,999,998 execute()
invocations.
With 6,000,000 records processed with batch size = 1, you would need a user org of 30,001 seats.
And, this assumes that during the 24 hour period, no other async job consumes async resources.
Suggested solution is to make the batch size bigger (like the default of 200).
An alternative solution would be to export all the Contacts to Excel, then use the Bulk API option of Data Loader to create Leads.