I make a habit of documenting rare errors for which the fixes can't be found online, so here is one that took me a while to figure out.
Normally it is possible to killtarget a func_tracktrain if you want it gone for some reason. If you try to save your game or use a trigger_changelevel and the game crashes, then take a look at the following:
When saving the game, it will record the current gamestate including the reference to the tracktrain in the func_trackautochange. But with the train killtargeted, this reference is gone and Half-Life will crash. To fix this, make sure you killtarget the func_trackautochange as well.
usefull info, did not know that either!