Looking at the thread title, if songs are missing then that suggests either a corrupt .xml or .itl file (in which case you would be aware of it in iTunes) or supports my theory on data corruption during transfer from iTunes to the iOS. Here is an extract from the .xml file
<key>83</key>
<dict>
<key>Track ID</key><integer>83</integer>
<key>Name</key><string>Requiem Et Kyrie</string>
<key>Artist</key><string>Berlioz</string>
<key>Composer</key><string>Berlioz</string>
<key>Album</key><string>Berlioz : Grande Messe Des Morts</string>
<key>Genre</key><string>Classical</string>
Track = Song
and there are two permanent default Playlists 'owned' by the iTunes application and certainly one of them is what is used to display the Music list
<key>Playlists</key>
<array>
<dict>
<key>Name</key><string>Library</string>
<key>Master</key><true/>
<key>Playlist ID</key><integer>111</integer>
<key>Playlist Persistent ID</key><string>167FC17483D7BEFE</string>
<key>Visible</key><false/>
<key>All Items</key><true/>
<key>Playlist Items</key>
<array>
<dict>
<key>Track ID</key><integer>83</integer>
</dict>
<dict>
<key>Track ID</key><integer>85</integer>
</dict>
<dict>
<key>Track ID</key><integer>87</integer>
</dict>
<dict>
<key>Track ID</key><integer>89</integer>
</dict>
This playlist is the only way that the iOS can determine if it has read all the track data since there is one entry in the playlist for each track. Be interesting to know if the iOS part actually checks this.
As a supplementary, some of the problems that folk are seeing could be down to duplicate IP addresses. I had a heck of a problem which lasted for a long long long time and was unresolved until I used Fing and saw that I had an IP address conflict. For background, I have my Time Capsule located in a separate building from the house and connected by Ethernet. Out of the Time Capsule is fed a Netgear Wireless Access Point that feeds the iPod. I discovered that both the Time Capsule and the Netgear had the same IP address.....DHCP not working as I expected.