I get most of my crashes (~95%) by invalid pointers. Often it's either a ptr_remove to a pointer that was already removed or an access to a pointer that is already invalid (something like ent.string1).

Thank God GS prints out the function where the crash happens for some months ... earlier versions just printed out one of the functions that were currently running. So nowadays debugging is much easier.