Whenever the user reports an error, for example
System.Runtime.InteropServices.SEHException - Did an external component raise an exception?
Is there anything that I, as a programmer, can do to determine the cause?
Scenario: One user (using a program written by my company) reported this error. This may or may not be one mistake. They mentioned that last month the computer “stopped working” twice. I learned from experience not to take this description too literally, because usually this means that someone connected to the computer does not work as expected. They could not give me more detailed information, and I could not find any registered errors. Therefore, this may or may not be this error.
From the stack trace, the actual error was to build a class that does not directly call any interaction code, but is possibly complicated by the fact that the object can be part of a list bound to the DevExpress Grid database.
The error was "caught" using an unhandled exception procedure, which usually closes the program but has the ability to ignore and continue. If they decided to ignore the error, the program continued to work, but the error was repeated the next time this procedure was started. However, this did not happen after closing and restarting our application.
The computer in question does not appear to have been stressed. It works in Vista Business, has 2 GB of memory, and, according to the Task Manager, it uses about half of what is with our application about 200 MB.
There is another piece of information that may or may not be relevant. In another section of the same program, a third-party component is used, which is actually a dotnet shell around the native DLL, and this component has a well-known problem when you rarely get
Attempted to read or write protected memory. This often indicates that another memory is corrupted.
Component manufacturers say this has been fixed in the latest version of their component, which we use on our own, but this has not yet been provided to the client.
Given that the consequences of the error are low (no work is lost and reloading the program and returning to where they only take minutes), and given that the client will soon receive a new version (with an updated third-party component), I can obviously cross my fingers and I hope that the error does not happen again.
But is there anything else I can do?