get_comments_number() returns 0

From quick look at the source there seems to be three possibilities:

  1. get_post() returned falsy value, so current post context is invalid in some way.
  2. $post->comment_count is 0.
  3. get_comments_number filter is being used to adjust the output.

Most commonly it would be case 1/2 with something interfering with global post context, dump get_post() at the point and see if it contains expected instance.