# Page break problem after \subsection in LNCS format

I am using LNCS template to author a paper. But, weirdly at random point, if I add a \subsection a page break appears between 'Abstract' and 'First Section':

\documentclass[runningheads,a4paper]{llncs}

\usepackage{amssymb}
\setcounter{tocdepth}{3}
\usepackage{graphicx}

\usepackage{url}
%\urldef{\mailsa}\path|{alfred.hofmann, ursula.barth, ingrid.haas, frank.holzwarth,|
%\urldef{\mailsb}\path|anna.kramer, leonie.kunz, christine.reiss, nicole.sator,|
%\urldef{\mailsc}\path|erika.siebert-cole, peter.strasser, lncs}@springer.com|
\noindent\keywordname\enspace\ignorespaces#1}

\begin{document}

\mainmatter  % start of an individual contribution

% first the title is needed
\title{XXXXXX}
% a short form should be given in case it is too long for the running head
%\titlerunning{Lecture Notes in Computer Science: Authors' Instructions}

% the name(s) of the author(s) follow(s) next
%
% NB: Chinese authors should write their first names(s) in front of
% their surnames. This ensures that the names appear correctly in
% the running heads and the author index.
%
\author{}
%\author{Alfred Hofmann%
%\thanks{Please note that the LNCS Editorial assumes that all authors have used
%the western naming convention, with given names preceding surnames. This determines
%the structure of the names in the running heads and the author index.}%
%\and Ursula Barth\and Ingrid Haas\and Frank Holzwarth\and\\
%Anna Kramer\and Leonie Kunz\and Christine Rei\ss\and\\
%Nicole Sator\and Erika Siebert-Cole\and Peter Stra\ss er}
%
%\authorrunning{Lecture Notes in Computer Science: Authors' Instructions}
% (feature abused for this document to repeat the title also on left hand pages)

% unless you accept that it will be published
\institute{}
%\institute{Springer-Verlag, Computer Science Editorial,\\
%Tiergartenstr. 17, 69121 Heidelberg, Germany\\
%\mailsa\\
%\mailsb\\
%\mailsc\\
%\url{http://www.springer.com/lncs}}

%
% NB: a more complex sample for affiliations and the mapping to the
% corresponding authors can be found in the file "llncs.dem"
% (search for the string "\mainmatter" where a contribution starts).
% "llncs.dem" accompanies the document class "llncs.cls".
%

%\toctitle{Lecture Notes in Computer Science}
%\tocauthor{Authors' Instructions}
\maketitle

\begin{abstract}
Dummy abstract
\keywords{}
\end{abstract}

\section{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\section{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\section{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\section{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\subsection{XXXXXX}

\section{XXXXXX}

%\subsection{XXXXXX}% Uncomment this to see the problem

\end{document}


What surprising is, I am adding a \subsection at the end and the break appears at the very beginning, after the first page. Can anyone please give me any clue on how to fix it?

Each of the sectional units go through the same macro during construction, \@startsection. This macro conditions on whether the sectional heading is supposed to be "run-in" or "display". In a display section, the title is set on a single line with the paragraph content following on a separate line. However, to avoid dangling sectional headings at the bottom of a page, a \nobreak is issued. This allows the sectional heading to be joined/glued (not separated) with the succeeding paragraph (well, not all of it), either keeping them both on the current page, or flushing both to the following page.
In your setup, you've only used sectional units to build your document (\sections and \subsections). Both these sectional headings are set as a display and therefore force a \nobreak. With all the headings issuing \nobreaks, they're virtually "stuck together". Once there's a page break to issue, the entire block of sectional units can only be flushed to a following page, since the abstract is the only piece of text where a reliable page break can be inserted.