I finally figured out why some people experience issues with the wrong user showing invalid information, and even scrobbling to the wrong user's last.fm account.
When a user changes players, a cookie is created that references that player. This way, when the user logs out and back in, that player is used if available.
Also, the info about each player only in regards to the now playing is kept separately from the other information in the database. In fact, it is not stored in the database at all! It is stored in java variables.
When a player is deleted or added, these java variables don't change.
When a player is created with an id that is not already in these variables, all of that player's information is added to the variables.
After that, the only information that will change for that id will be the currently playing song.
Even if a player is deleted, it still lives on in the java variables behind the scenes.
Here is why everyone is experiencing identity theft:When a player that was used first by user 1 is deleted and recreated by user 2, the only data that will change in the java variables is the now playing info. The username will stay the same (because it was never deleted from these java variables; it was deleted from the player table in the database).
This means that when the now playing frame looks up what is currently playing, it is passed the old player info, with the new play
ing info.
When the scrobbler service asks what to scrobble and for what user, it is handed the original player's username, and the currently playing song.
So now many of you that are still with me may ask how this is possible if you deleted the players but restarted the system? (After a restart, the variables are reset.)
Well, I mentioned that each browser stores a cookie referencing the player last used.
Here is a scenario:
After a fresh restart, user A creates player 1, then the player is deleted, and the server is restarted.
After the restart, user B creates player 1 (because player 1 was deleted right before the restart).
Now, user A logs in to his account. The cookie tells the server to load player 1.
Now any song played by user A looks like it came from user B.
And with subsonic version 4.6, players are deleted automatically when they are deemed obsolete.
While I realize this is very detailed and very confusing, this is the only way I can explain it. Hope this clears up some confusion!