> I have also tried
>
> (progn (pos-visible-in-window-p)
>        (window-line-height))
>
> but it didn't seem to make any difference.

Why should it?  Calling pos-visible-in-window-p does not guarantee
that the window will be up-to-date, it just gives you the same
information without requiring that the display be up-to-date.  Its
disadvantage is that it is slower.

You might be confusing posn-at-point (which returns the height of the character amoung other things), with pos-visible-in-window-p, which returns t or nil.

In any case, the height of the character can be different from the height of the line, so they are not equivalent. So either a) the documentation is incomplete and misleading, or b) there is a bug in the implementation (which I think is more likely, given the arbitrary circumstances under which this function does and doesn't work).