Today I came across another instance of an incremental search crawl that seemed to be stuck. The crawl had been running overnight for more than nine hours and had zero items in the crawl log.
After digging through the event logs, I found a series of warnings saying "The index was paused."
However, according to the menu items on the content source management screen, the crawl did not appear to be paused.
I manually paused the crawl and then resumed it. After clicking Resume Crawl, I got the following prompt:
Apparently, a crawl can be paused by a backup but never resumed. Since the crawl had been paused for over nine hours, I felt it was safe to resume the crawl.
After resuming, the crawl ran for several more hours and then completed successfully. The reason why the crawl took several hours to complete is that a large amount of content had been added to the sites after the previous crawl.