Apparently changing "exec" to "." is not the right thing: it makes all session types execute .xsession (or rather whatever the default behaviour).
Acting on my previous suggestion, it appears that things exit in /etc/X11/Xsession.d/20xfree86-common_process-args (as sourced by /etc/X11/Xsession) when the "which $1" (i.e. "which custom") command fails (due to `set -e' at the beginning of /etc/X11/Xsession). This appears not the intent of the script (it appears that the programmer wanted something like STARTUP_FULL_PATH=$(which $1 || true) ). That aside, it now looks to me that the proposal of removing Custom from the session menu is the best thing. pjrm.