It is more likely that your inputs into your save method do not match what you think. Does it call to a stored procedure, or is it writing directly to a table?
On the save SmartObject call do you have it configured to continue on error?
You could try profiling the database to check the inputs are valid, or add some workflow variables that capture the values of the partially saved fields and use a Set Variables Step to save them before you call the save method, that way you can confirm the inputs at the time it fails to save. Remove them once you're done though.
Cheers
Alternatively, you could enable SmartObject logging and then check the generated logs to verify if the SmartObject Save method was executed and what are the inputs passed to the method when the issue does happened.
To enable SmartObject logging:
https://help.nintex.com/en-US/k2five/icg/5.5/default.htm#Configure/SmOLogging.htm