It's still running and no crash so far (fingers crossed).
Might be worth putting in a call to check available space before each write, and throwing up a dialog if the drive is getting below some threshold, with the option of saving the DB at that point, so that it can be resumed after a clean up.
When the crash happened it lost all DB info it had done on that update - which in my case was 1/2 a day.
Edit - left it running all night - no crashes and got all the MAME media. It was the HD space that was the underlying cause.
Hopefully this will help others who encounter the same problem