Postgres 10.3 could not bind IPv6 address, database system was not properly shut down
Those messages are unrelated.  The first one will show up every time you start postgresql if your machine is not configured to use IPv6.  You can just ignore it if you don't care about IPv6.

The other one is a bit more complex.  'system was not properly shut down' means it was interrupted without being given a chance to do a checkpoint and shut down. 'database system was interrupted while in recovery' means that it had been interrupted before, and was then interrupted again before it was able to clean up from the previous interruption, and is now trying to clean up from both of those previous interruptions.  

The 'stopped waiting' means the pg_ctl call in your startup script is not patient enough to for the recovery to happen (which seems to me to be a poor decision to make in a startup script).  But then the issue is, what then?  Sometimes when pg_ctl runs out of patience, it just exits nicely and lets the recovery proceed in the background.  Sometimes it clubs the recovery process over the head.  Which of these it does seems to be pretty unpredictable (to me, anyway) it depends on your OS and OS version, and how your start-up script is written, and maybe what logging options you have configured.

Based on the log file show posted, it is likely that on your system pg_ctl clubs the recovery process over the head once it runs out of patience.  So you shutdown the system uncleanly when it was in the middle of something hectic.  Restarting it will take a lot of time, because it has to clean up whatever it was in the middle of.  pg_ctl ran out of patience and killed it (this part was not in your posted logfile snippet).  Then pg_ctl ran out of patience again and killed (this part is in your snipped).  

Your start-up script should probably pass a large timeout value to the -t flag of pg_ctl, to make it patient.