When a log cursor returns a record that does not have a natural key and value, the intent is to return an empty key and fill the value with the current log record contents. In fact, an empty key and a value representing the next (not current) log record is returned. This is not typically visible because wt printlog doesn't print the returned key and value for operations like file_sync.
This was found while debugging the test suite for Python3. The test_alter02.py program could detect the problem, but it has an error (fixed as part of the Python3 work) that prevented this.
To reproduce, apply the attached patch to test_alter02.py. The test inserts a unique cookie into a table N times, and walks the log file, looking for N occurrences. When running, you see that there are 2*N matches, because the value for the record before the commit record contains the cookie. In this case, the record that is incorrect is file_sync. Compare the records printed with the wt printlog output.