The error in question appears to break the session as far as the user is concerned and required them to restart their web browser.
Having to restart the browser implies that the browser has crashed. That we might achieve that seems highly unlikely. I presume it is sufficient merely to navigate back to the website and make a clean start.
I also presume that, when starting again, it is not necessary to log in to Drupal again. If you need to log back in to Drupal it would imply cookies have gone missing and the Drupal session has broken. Again, very unlikely.
The problem is almost certainly with our code. When records are submitted the browser sends information to the Drupal site and the Drupal site forwards it to the Warehouse. The Warehouse replies to the Drupal site and the Drupal site replies to the browser.
One way this can break is if the user spends too long entering data. Each recording form is authenticated with the warehouse to send data for a limited time. However, this results in a not-authenticated error, not the one you are seeing.
Client Side Validation should be enabled for your recording form (a check box under User Interface options). This should ensure required fields (spatial reference is required) are filled in before the form can be submitted.
If a valid form is submitted then it should be forwarded correctly and accepted by the warehouse. If the warehouse detects an error in the submission, as seems to be the case here, then it sends an error response to the Drupal site and the Drupal site is supposed to send the erroneous form, with all the original data back to the browser so it can be corrected and resubmitted.
This suggests that the submission is being mangled somewhere on its journey which possibly makes it unsurprising that the response is also broken. My instinct is to trust the warehouse and to look for the problem in the vicinity of the Drupal site. You know that the form typically works and you associate the problem with a long list.
Like you say, I think you will have to investigate further. You could create a record with a dozen occurrences and send it. If successful, edit, add another dozen and send again. Repeat a number of times and see if it breaks. Probably it will. Probably you will then find you have a repeatable error. Probably we'll then be able to see what it is. Whether it is the same error that your user is experiencing is another question.
Let us know how you get along.
Jim Bacon.