Bugzilla – Bug 3561
slimserver sometimes sends wrong list length to knob
Last modified: 2006-10-11 14:21:36 UTC
when browsing arists after a short time sometimes the slimserver sends the wrong list length to the knob. it won't do it again right now(!), but when it does i think the incorrect list length is normally 15 or 16.
It has just happened again and the knob range was between 1 .. 18. Using the remote let me reach 19 and onwards.
ah, i think it's the playlist length. maybe a timeout value is not being update when the knob is used?
Who should this belong to? Thanks
maybe mode changes involving now playing screensaver?
Richard speculates that this happens when a track change happens
definately a problem with listLen being set in browseplaylistindex. I get better results just by knocking that out. Home menu still broken, for example, but popping back into homer works perfecty once that one line is commented out.
got this one...not sure how to fix. browseplaylistindex is called on startup to add the remembered current playlist. This length is what gets replaced, at least in the case that I've been seeing. Here is the backtrace from browseplaylistindex() just after listLen is set (it gets done twice on startup): 2006-08-18 23:13:05.4337 Backtrace: frame 0: Slim::Buttons::Playlist::browseplaylistindex (/usr/local/slimserver/trunk/Slim/Buttons/Playlist.pm line 294) frame 1: Slim::Buttons::Playlist::jump (/usr/local/slimserver/trunk/Slim/Player/Playlist.pm line 341) frame 2: Slim::Player::Playlist::refreshPlaylist (/usr/local/slimserver/trunk/Slim/Player/Playlist.pm line 622) frame 3: Slim::Player::Playlist::reshuffle (/usr/local/slimserver/trunk/Slim/Control/Commands.pm line 1038) frame 4: Slim::Control::Commands::playlistXtracksCommand (/usr/local/slimserver/trunk/Slim/Control/Request.pm line 1404) frame 5: (eval) (/usr/local/slimserver/trunk/Slim/Control/Request.pm line 1404) frame 6: Slim::Control::Request::execute (/usr/local/slimserver/trunk/Slim/Control/Request.pm line 730) frame 7: Slim::Control::Request::executeRequest (/usr/local/slimserver/trunk/Slim/Player/Client.pm line 456) frame 8: Slim::Player::Client::execute (/usr/local/slimserver/trunk/Slim/Player/Client.pm line 387) frame 9: Slim::Player::Client::startup (/usr/local/slimserver/trunk/Slim/Player/Player.pm line 250) frame 10: Slim::Player::Player::init (/usr/local/slimserver/trunk/Slim/Player/Squeezebox.pm line 42) frame 11: Slim::Player::Squeezebox::init (/usr/local/slimserver/trunk/Slim/Player/Squeezebox2.pm line 58) frame 12: Slim::Player::Squeezebox2::init (/usr/local/slimserver/trunk/Slim/Player/Transporter.pm line 39) frame 13: Slim::Player::Transporter::init (/usr/local/slimserver/trunk/Slim/Networking/Slimproto.pm line 840) frame 14: Slim::Networking::Slimproto::_hello_handler (/usr/local/slimserver/trunk/Slim/Networking/Slimproto.pm line 385) frame 15: Slim::Networking::Slimproto::client_readable (/usr/local/slimserver/trunk/Slim/Networking/Select.pm line 238) frame 16: Slim::Networking::Select::select (/usr/local/slimserver/trunk/slimserver.pl line 503) frame 17: main::idle (/usr/local/slimserver/trunk/slimserver.pl line 456) frame 18: main::main (/usr/local/slimserver/trunk/slimserver.pl line 1053) 2006-08-18 23:13:05.4347 Backtrace: frame 0: Slim::Buttons::Playlist::browseplaylistindex (/usr/local/slimserver/trunk/Slim/Buttons/Playlist.pm line 294) frame 1: Slim::Buttons::Playlist::jump (/usr/local/slimserver/trunk/Slim/Player/Playlist.pm line 341) frame 2: Slim::Player::Playlist::refreshPlaylist (/usr/local/slimserver/trunk/Slim/Control/Commands.pm line 1070) frame 3: Slim::Control::Commands::playlistXtracksCommand (/usr/local/slimserver/trunk/Slim/Control/Request.pm line 1404) frame 4: (eval) (/usr/local/slimserver/trunk/Slim/Control/Request.pm line 1404) frame 5: Slim::Control::Request::execute (/usr/local/slimserver/trunk/Slim/Control/Request.pm line 730) frame 6: Slim::Control::Request::executeRequest (/usr/local/slimserver/trunk/Slim/Player/Client.pm line 456) frame 7: Slim::Player::Client::execute (/usr/local/slimserver/trunk/Slim/Player/Client.pm line 387) frame 8: Slim::Player::Client::startup (/usr/local/slimserver/trunk/Slim/Player/Player.pm line 250) frame 9: Slim::Player::Player::init (/usr/local/slimserver/trunk/Slim/Player/Squeezebox.pm line 42) frame 10: Slim::Player::Squeezebox::init (/usr/local/slimserver/trunk/Slim/Player/Squeezebox2.pm line 58) frame 11: Slim::Player::Squeezebox2::init (/usr/local/slimserver/trunk/Slim/Player/Transporter.pm line 39) frame 12: Slim::Player::Transporter::init (/usr/local/slimserver/trunk/Slim/Networking/Slimproto.pm line 840) frame 13: Slim::Networking::Slimproto::_hello_handler (/usr/local/slimserver/trunk/Slim/Networking/Slimproto.pm line 385) frame 14: Slim::Networking::Slimproto::client_readable (/usr/local/slimserver/trunk/Slim/Networking/Select.pm line 238) frame 15: Slim::Networking::Select::select (/usr/local/slimserver/trunk/slimserver.pl line 503) frame 16: main::idle (/usr/local/slimserver/trunk/slimserver.pl line 456) frame 17: main::main (/usr/local/slimserver/trunk/slimserver.pl line 1053)
Created attachment 1447 [details] my solution Here is my solution. it's a bit of a hack, but no worse than the existing comment would seem to indicate. This will ONLY set the listIndex and listRef params if the client is in 'playlist' mode. This isn't a good production solution but it illustrates the way to get around the problem. Need to figure out why the calls are getting to this point and why it might be needed when not in playlist mode. It may be possible to cut off the backtrace further back for this case.
This should be fixed as of change 9084
Slightly updated by svn 9086