First of all, your example document compiles fine when using
article instead of
revtex4-1, so it seems it's an incompatibility between
subfig is just triggering the problem.
Now back to the problem itself: The
lineno package tries hard to prevent page breaks at unwanted locations, and this code has changed over time. An excerpt from lineno.sty:
% (New v4.00)
% % \kern\z@
% was here previously. What for?
% According to \TeX book p._125, Stephan's
% interline penalty is changed into 10000. At the end of a
% paragraph, the ~\parskip~ would follow that penalty of 10000,
% so there could be a page break neither at the
% ~\parskip~ nor at the ~\baselineskip~ (\TeX book p._110)---so
% there could never be a page break between two paragraphs.
% So something must screen off the 10000 penalty.
% Indeed, the ~\kern~ is a place to break.
% (Stephan once knew this: see `allow pagebreaks' above.)
% Formerly, I tried to replace ~\kern\z@~ by
% % \penalty\@LN@parpgpen\relax
% ---but this allows a page break after heading. So:
%% After heading, ~\kern\z@~ resulting from previous line
%% (see below) is followed by ~\write~ or ~\penalty10000~,
%% so causes no page break.
% These and similar changes were formerly done by ~linenox1.sty~.
% (/New v4.00)
\@LN@parpgbrk is defined as:
% (New v4.00, v4.4) Initialize ~\@LN@parpgbrk~, accounting
% for earlier space and for appropriate columndepth.
% We use former ~\MakeLineNo~'s depth-preverving trick
% ~\@LN@depthbox~ again:
% (/New v4.4, v4.00)
This code is faulty. It assumes that it's in vertical mode always, using
\prevdepth without extra check.
Since I don't have enough inside into the code of
lineno to offer a bullet-proof fix (Is adding
\fi sufficient?), I suggest simply reverting
\@LN@parpgbrk back to
\penalty\@LN@parpgpen\relax, so we have at least a workaround for your problem:
% Workaround for problem in lineno.sty
I suggest sending the maintainer of the
lineno package a bug report and trying using the above workaround until the problem is fixed.