Hi,
All the MSM M6 handling routines have code that is called if an unexpected fault is detected by the Basic interpreter which mach uses to run scripts. The error handling code causes an estop condition. The theory is that stopping is better than continuing when something (which is unknown) has caused an error.
Because this is the detection of an unexpected error, it, by definition, has not other error info to offer to help give a clue as to what happened.
I have a couple of questions which might help narrow this down -
1) you say this happens "randomly". That is very unusual. Is there any pattern you can think of which would math when this happens? Doing some particular operation maybe?
2) what tool change mode do you have mach set for? ignore tool change? stop & Wait? auto tool changer?
3) Does you installation invoke any user written code as part of M6 handling? Are you using any of teh MSM extension hooks which can call user code as part of M6 handling?