diff --git a/src/os_unix.c b/src/os_unix.c
index 47073ba..861ff6c 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -444,7 +444,10 @@
     if (check_only)
 	return do_resize;
     while (do_resize)
+    {
+	ch_log(NULL, "calling handle_resize() in resize_func()");
 	handle_resize();
+    }
     return FALSE;
 }
 
@@ -4166,6 +4169,7 @@
 	{
 	    columns = ws.ws_col;
 	    rows = ws.ws_row;
+	    ch_log(NULL, "Got size with TIOCGWINSZ: %ld x %ld", columns, rows);
 	}
     }
 # else // TIOCGWINSZ
@@ -4181,6 +4185,7 @@
 	{
 	    columns = ts.ts_cols;
 	    rows = ts.ts_lines;
+	    ch_log(NULL, "Got size with TIOCGSIZE: %ld x %ld", columns, rows);
 	}
     }
 #  endif // TIOCGSIZE
@@ -4194,9 +4199,15 @@
     if (columns == 0 || rows == 0 || vim_strchr(p_cpo, CPO_TSIZE) != NULL)
     {
 	if ((p = (char_u *)getenv("LINES")))
+	{
 	    rows = atoi((char *)p);
+	    ch_log(NULL, "Got 'lines' from $LINES: %ld", rows);
+	}
 	if ((p = (char_u *)getenv("COLUMNS")))
+	{
 	    columns = atoi((char *)p);
+	    ch_log(NULL, "Got 'columns' from $COLUMNS: %ld", columns);
+	}
     }
 
 #ifdef HAVE_TGETENT
@@ -4204,7 +4215,10 @@
      * 3. try reading "co" and "li" entries from termcap
      */
     if (columns == 0 || rows == 0)
+    {
 	getlinecol(&columns, &rows);
+	ch_log(NULL, "Got size from termcap: %ld x %ld", columns, rows);
+    }
 #endif
 
     /*
@@ -4241,16 +4255,14 @@
     ws.ws_xpixel = cols * 5;
     ws.ws_ypixel = rows * 10;
     retval = ioctl(tty_fd, TIOCSWINSZ, &ws);
-    ch_log(NULL, "ioctl(TIOCSWINSZ) %s",
-	    retval == 0 ? "success" : "failed");
+    ch_log(NULL, "ioctl(TIOCSWINSZ) %s", retval == 0 ? "success" : "failed");
 # elif defined(TIOCSSIZE)
     struct ttysize ts;
 
     ts.ts_cols = cols;
     ts.ts_lines = rows;
     retval = ioctl(tty_fd, TIOCSSIZE, &ts);
-    ch_log(NULL, "ioctl(TIOCSSIZE) %s",
-	    retval == 0 ? "success" : "failed");
+    ch_log(NULL, "ioctl(TIOCSSIZE) %s", retval == 0 ? "success" : "failed");
 # endif
     if (tty_fd != fd)
 	close(tty_fd);
@@ -6506,7 +6518,10 @@
 	    // Check whether window has been resized, EINTR may be caused by
 	    // SIGWINCH.
 	    if (do_resize)
+	    {
+		ch_log(NULL, "calling handle_resize() in RealWaitForChar()");
 		handle_resize();
+	    }
 
 	    // Interrupted by a signal, need to try again.  We ignore msec
 	    // here, because we do want to check even after a timeout if
