How do I solve "CPASSERT failed" in cp_fm_cholesky.F?

If you see the following error message (line number correct as of CP2K 2.7, Dec 2015), with a routine calling stack that includes prepare_preconditioner, for example:

 *******************************************************************************
 *   ___                                                                       *
 *  /   \                                                                      *
 * [ABORT]                                                                     *
 *  \___/                             CPASSERT failed                          *
 *    |                                                                        *
 *  O/|                                                                        *
 * /| |                                                                        *
 * / \                                                  fm/cp_fm_cholesky.F:94 *
 *******************************************************************************


 ===== Routine Calling Stack ===== 

           10 cp_fm_cholesky_decompose
            9 make_full_inverse_cholesky
            8 make_preconditioner
            7 prepare_preconditioner
            6 init_scf_loop
            5 scf_env_do_scf
            4 qs_energies
            3 qs_forces
            2 qs_mol_dyn_low
            1 CP2K

This says that CP2K failed to compute a Cholesky decomposition during the construction of the preconditioner for OT. Most likely, the overlap matrix (S) has become singular (or at least numerically close to singular). Here are some causes / possible solutions: