Bugzilla – Bug 8876
RadioTEENTALL station causes the controller to reboot
Last modified: 2008-12-15 12:05:36 UTC
Connecting the controller to Squeezenetwork or Squeezecenter, if we choose some of the stations featured by RadioTEENTAAL.com, by going to Shoutcast->By Genre->Desi, the controller will reboot itself. We verified this behavior on the lab Controller firmware r2448
My Controller is on 7.1r2722 and it also reboots if I play any of the 4 RadioTeenTAAL stations from Shoutcast > by Genre > Desi I went to http://www.radioteentaal.com and tried playing their 128kbps stream manually. It did not reboot. Seems particular to whatever Shoutcast is handing us.
Ben notes this is a filesystem panic.
Reproduced easily. Here's the console log of what's happening when hitting play on one of the RadioTEENTALL stations: Jul 28 11:26:50 SqueezeboxController user.info jive: (NetworkThread.lua:249) - NOTIFY: playerModeChange(Player {Office SB3}, stop) Jul 28 11:26:50 SqueezeboxController user.info jive: (NetworkThread.lua:249) - NOTIFY: playerTrackChange(Player {Office SB3}, RaDioTEENTAAL.com 100DiAn MuSiC LiVe FrOm PaRiS - Request your song ~ On Air ~ STEREO 128K Request your song ~ On Air ~ STEREO 128K RaDioTEENTAAL.com 100DiA Jul 28 11:26:50 SqueezeboxController user.info jive: (NowPlayingApplet.lua:173) - Notification received that track has changed Jul 28 11:26:50 SqueezeboxController user.info jive: (NetworkThread.lua:249) - NOTIFY: playerPlaylistChange(Player {Office SB3}) Jul 28 11:26:50 SqueezeboxController user.info jive: (SlimBrowserApplet.lua:882) - _menuSink() Jul 28 11:26:50 SqueezeboxController user.err kernel: FAT: Filesystem panic (dev mmcblk0p1) Jul 28 11:26:50 SqueezeboxController user.err kernel: fat_free_clusters: deleting FAT entry beyond EOF Jul 28 11:26:50 SqueezeboxController user.err kernel: File system has been set read-only No issues when hitting play on one of these streams from desktop build of squeezeplay. Richard, any thoughts on the Filesystem panic? Bad character in a console message causing a kernel panic?? assigning to Richard, target to 7.2.
Created attachment 3698 [details] cometd data that causes controller crash this is the cometd debug from SC when the controller connects to a player that currently has one of these TEENTALL streams in the Current Playlist. The controller will crash just connecting to a player with this stream in a playlist. Looks like the playlist data in the playerstatus message is causing the crash.
My guess is that this is the offending line that causes the crash. I'm going to look at scrubbing this in SC before sending out to the controller. Assigning to myself now, but Richard I'm curious if you have any thoughts on the really bad controller behavior here. A full crash on bad text? text => "RaDioTEENTAAL.com 100% InDiAn MuSiC LiVe FrOm PaRiS - Request your song ~ On Air ~ STEREO 128K\nRequest your song ~ On Air ~ STEREO 128K\nRaDioTEENTAAL.com 100% InDiAn MuSiC LiVe FrOm PaRiS",
I've completely isolated the crash to the text (stream title) string that is sent in the playerstatus message from SC->SBC tried using URI::Encode::uri_encode on the text string to see if I could properly encode the string and avert the crash. $text = uri_encode($text); yields this sent to the controller: RaDioTEENTAAL.com%20100%25%20InDiAn%20MuSiC%20LiVe%20FrOm%20PaRiS%20-%20Request%20your%20song%20~%20On%20Air%20~%20STEREO%20128K%0ARequest%20your%20song%20~%20On%20Air%20~%20STEREO%20128K%0ARaDioTEENTAAL.com%20100%25%20InDiAn%20MuSiC%20LiVe%20FrOm%20PaRiS but the controller still crashes tried uri_encode_utf8() to same effect also tried this, recommended as a "very safe" encoding method in URI::Encode docs $text = uri_escape($text, "\0-\377"); this fixed the crash, but now causes the text of the stream to show up on the controller like this: %52%61%44%69%6F%54%45%45%4E%54%41%41%4C%2E%63%6F%6D%20%31%30%30%25%20%49%6E%44%69%41%6E%20%4D%75%53%69%43%20%4C%69%56%65%20%46%72%4F%6D%20%50%61%52%69%53%20%2D%20%52%65%71%75%65%73%74%20%79%6F%75%72%20%73%6F%6E%67%20%7E%20%4F%6E%20%41%69%72%20%7E%20%53%54%45%52%45%4F%20%31%32%38%4B%0A%52%65%71%75%65%73%74%20%79%6F%75%72%20%73%6F%6E%67%20%7E%20%4F%6E%20%41%69%72%20%7E%20%53%54%45%52%45%4F%20%31%32%38%4B%0A%52%61%44%69%6F%54%45%45%4E%54%41%41%4C%2E%63%6F%6D%20%31%30%30%25%20%49%6E%44%69%41%6E%20%4D%75%53%69%43%20%4C%69%56%65%20%46%72%4F%6D%20%50%61%52%69%53 There's an offending character in these TEENTALL stream titles, but nothing I've done thus far has been successful in sanitizing it to a no-crash, readable string on the controller. :-/
hmmm...well, it's the % symbol in the string that's causing the crash "RaDioTEENTAAL.com 100% InDiAn MuSiC LiVe FrOm PaRiS - Request your song ~ On Air ~ STEREO 128K\nRequest your song ~ On Air ~ STEREO 128K\nRaDioTEENTAAL.com 100% InDiAn MuSiC LiVe FrOm PaRiS" no crash if I remove the % from the string before sending like so: $text =~ s/\%//g; but I have yet to figure a way of encoding that % sign so as not to either cause a crash or to render incorrectly.
If you use this string directly on the controller does it cause a crash? I'm trying to establish if it's a rendering issue, of a networking issue. Also you might try valgrind on the desktop.
I hardcoded the NowPlaying applet to show the string for the trackinfo no matter what was playing. No crash. So...JSON munging it? Put in a log:warn() message in SlimBrowser when items in playlist menu are being constructed. the % sign and the three chars after it-- '% In' -- do not appear at all in the warn message, which makes me think that it's reading '% In' as a URI entity? Jul 28 15:46:13 SqueezeboxController user.warn jive: (SlimBrowserApplet.lua:1072) - RaDioTEENTAAL.com 100DiAn MuSiC LiVe FrOm PaRiS - Request your song ~ On Air ~ STEREO 128K Request your song ~ On Air ~ STEREO 128K RaDioTEENTAAL.com 100DiAn MuSiC LiVe FrOm PaRiS also, maybe I'm dense but not sure how valgrind on the desktop will help since the crash doesn't occur on the desktop?
additional info-- same log:warn() message on desktop squeezeplay shows the entire string correctly: 164921:632 WARN (SlimBrowserApplet.lua:1072) - RaDioTEENTAAL.com 100% InDiAn MuSiC LiVe FrOm PaRiS - Request your song ~ On Air ~ STEREO 128K Request your song ~ On Air ~ STEREO 128K RaDioTEENTAAL.com 100% InDiAn MuSiC LiVe FrOm PaRiS
Calling in the big guns, assigning to Richard. IMO, two things need to happen 1. (SC side) SC never sends a string that the controller balks at 2. (Jive side) The controller doesn't fall on its face if it does get an offending string
This is caused by a crash in lsyslog, due to a floating % format specifier. The arm syslog call must be more sensitive than the desktop version to the format string. I think this code needs rewriting to use vsyslog.
Fixed in r2751. The crash is easy to reproduce on the desktop when using lsyslog to log to the syslog, this library is normally only used on the jive. No SC changes are needed.
I still get my controller with 7.2 r3080 to reboot on a few of the stations listed in SHOUTcast. tested & failed: 4) Bollywood Music Radio old is gold the controller will intermittently reboot when playing that or other stations. it's not a 100% failure
James, I can't find "Bollywood Music Radio old is gold" in shoutcast now. Can you point me at it, or another stream that still crashes the Controller? Thanks.
Retested with Falco / SC 7.3r23875 and SBC r3309. Unable to reproduce the error with this combo. Marking bug as fixed, if you are able to reproduce, please reopen.
This bug has been fixed in the 7.3.0 release version of SqueezeCenter! Please download the new version from http://www.slimdevices.com/su_downloads.html if you haven't already. If you are still experiencing this problem, feel free to reopen the bug with your new comments and we'll have another look.