Actually whats more probable is that your AsyncTask actually does execute and in onPostExecute is using references to widgets (from previous Activity instance) that were destroyed by Android. Since your DownloadProductTask is internal to your Activity it hold implicit reference to your Activity and it disallows freeing your activity.
If you dont want to use android:configChanges hack - then make your AsyncTask static, then retain your AsyncTask instance using onRetainNonConfigurationInstance / getLastNonConfigurationInstance, and in onCreate update your AsyncTask with new widgets to update. Thats actually short story, its quite complicated. Other options - IMO a lot easier is to put your AsyncTask into retained fragment. Here are some info on this:
Android Fragments. Retaining an AsyncTask during screen rotation or configuration change
The problam with android:configChanges is that it does not protect you when your Activity is destroyed during normal LifeCycle changes, ie. you call you AsyncTask and then you hide your activity, and go to some other Activity - Android is now free to destroy your Activity - causing the same problems.