I start geth 1.8.16-stable-477eb093 on Windows 10 with the following command on mainnet:
geth --syncmode "fast" --cache=4096
it starts to sync, but currentBlock never riches highestBlock, although they are close and the difference is about 100. eth.blockNumber is always zero. I have the similar situation as described here, but on the main network.
geth 1.8.20 starts syncing, but crashes.
I waited for a couple days, should I wait more?
see my blog post for more details.