When people are dealing with difficult times in their lives they can lash out. Sometimes we lash out at those we love the most because we feel safe doing so knowing that they will love us unconditionally and forgive us when the tantrum is over. It can be easier to look for people to blame rather than make peace with the past and move forward.
You know that you did the best you could. This is an outpouring from your child who is struggling to come to terms with the past but you do not need to be defined by them. Time is a great healer and can lend perspective. When I first met my husband he had a great hatred for his father who had divorced his mother. He was extremely bitter about how his father had behaved. However we did get in touch with him and realised that the past had been distorted and that what my husband believed was not based on truth. They were able to make peace and gain an appreciation and true affection for one another.
Your son will come to his senses and then he will appreciate how lucky he is to have loving parents.