"Bug" report sent to JShop on this date:
Client XXX uses attribute combinations to set the product code (i.e. code A1000 Black size 12 becomes A1000BLAC12). When they run out of a size, what they do is go into the admin area, go to "Extra Fields", "Size", and delete e.g. 12. However, the A1000BLAC12 stays in jss_combinations, and the e.g. extrafield1 now points to an extra field value which no longer exists.
In a perfect world, you could protect the data integrity by disallowing the deletion of an extra field if there are combinations (or other places) that refer to that extra field. Of course, there is always the point of view that the user would never understand what you were telling them if you STOPPED the action ;-<