[BUG] - MediaScannerService Crashes Parsing Characters

Need help? Post your questions here.

Moderator: moderators

[BUG] - MediaScannerService Crashes Parsing Characters

Postby funkmata » Fri Feb 17, 2017 5:24 pm

Version 6.0 (build a7857c) – April 30, 2016
Server jetty-6.1.x, java 1.8.0_111, Linux (73.8 MB / 133.5 MB)
Uname Linux x.x.x 3.10.0-514.2.2.el7.x86_64 #1 SMP Tue Dec 6 23:06:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

BUG: Subsonic's MediaScannerService completely bombed out when it attempted to parse one of my mp3's that had the 'Σ' character in the filename and id3 tag title. See the error below in /var/subsonic/subsonic.log

[2017-02-17 09:06:36,586] WARN JaudiotaggerParser - Error when parsing tags in XXXXXXXXXX.............Σ.mp3
java.lang.InternalError: java.io.IOException: Stream closed
at sun.util.locale.provider.BreakIteratorProviderImpl.getBreakInstance(BreakIteratorProviderImpl.java:178)
at sun.util.locale.provider.BreakIteratorProviderImpl.getWordInstance(BreakIteratorProviderImpl.java:85)
at java.text.BreakIterator.createBreakInstance(BreakIterator.java:568)
at java.text.BreakIterator.createBreakInstance(BreakIterator.java:553)
at java.text.BreakIterator.getBreakInstance(BreakIterator.java:544)
at java.text.BreakIterator.getWordInstance(BreakIterator.java:459)
at java.lang.ConditionalSpecialCasing.isFinalCased(ConditionalSpecialCasing.java:206)
at java.lang.ConditionalSpecialCasing.isConditionMet(ConditionalSpecialCasing.java:176)
at java.lang.ConditionalSpecialCasing.lookUpTable(ConditionalSpecialCasing.java:161)
at java.lang.ConditionalSpecialCasing.toLowerCaseEx(ConditionalSpecialCasing.java:108)
at java.lang.String.toLowerCase(String.java:2616)
at java.lang.String.toLowerCase(String.java:2670)
at org.jaudiotagger.audio.generic.Utils.getExtension(Utils.java:85)
at org.jaudiotagger.audio.AudioFileIO.readFile(AudioFileIO.java:278)
at org.jaudiotagger.audio.AudioFileIO.read(AudioFileIO.java:150)
at net.sourceforge.subsonic.service.metadata.JaudiotaggerParser.getRawMetaData(JaudiotaggerParser.java:74)
at net.sourceforge.subsonic.service.metadata.MetaDataParser.getMetaData(MetaDataParser.java:47)
at net.sourceforge.subsonic.service.MediaFileService.createMediaFile(MediaFileService.java:483)
at net.sourceforge.subsonic.service.MediaFileService.updateChildren(MediaFileService.java:403)
at net.sourceforge.subsonic.service.MediaFileService.getChildrenOf(MediaFileService.java:201)
at net.sourceforge.subsonic.service.MediaScannerService.scanFile(MediaScannerService.java:235)
at net.sourceforge.subsonic.service.MediaScannerService.scanFile(MediaScannerService.java:239)
at net.sourceforge.subsonic.service.MediaScannerService.doScanLibrary(MediaScannerService.java:177)
at net.sourceforge.subsonic.service.MediaScannerService.access$000(MediaScannerService.java:48)
at net.sourceforge.subsonic.service.MediaScannerService$2.run(MediaScannerService.java:147)
Caused by: java.io.IOException: Stream closed
at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:159)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at sun.util.locale.provider.RuleBasedBreakIterator.readFile(RuleBasedBreakIterator.java:462)
at sun.util.locale.provider.RuleBasedBreakIterator.readTables(RuleBasedBreakIterator.java:375)
at sun.util.locale.provider.RuleBasedBreakIterator.<init>(RuleBasedBreakIterator.java:321)
at sun.util.locale.provider.BreakIteratorProviderImpl.getBreakInstance(BreakIteratorProviderImpl.java:169)
... 24 more

[2017-02-17 09:06:36,587] ERROR MediaScannerService - Failed to scan media library.
java.lang.InternalError: java.io.IOException: Stream closed
at sun.util.locale.provider.BreakIteratorProviderImpl.getBreakInstance(BreakIteratorProviderImpl.java:178)
at sun.util.locale.provider.BreakIteratorProviderImpl.getWordInstance(BreakIteratorProviderImpl.java:85)
at java.text.BreakIterator.createBreakInstance(BreakIterator.java:568)
at java.text.BreakIterator.createBreakInstance(BreakIterator.java:553)
at java.text.BreakIterator.getBreakInstance(BreakIterator.java:544)
at java.text.BreakIterator.getWordInstance(BreakIterator.java:459)
at java.lang.ConditionalSpecialCasing.isFinalCased(ConditionalSpecialCasing.java:206)
at java.lang.ConditionalSpecialCasing.isConditionMet(ConditionalSpecialCasing.java:176)
at java.lang.ConditionalSpecialCasing.lookUpTable(ConditionalSpecialCasing.java:161)
at java.lang.ConditionalSpecialCasing.toLowerCaseEx(ConditionalSpecialCasing.java:108)
at java.lang.String.toLowerCase(String.java:2616)
at java.lang.String.toLowerCase(String.java:2670)
at net.sourceforge.subsonic.service.MediaFileService.getMediaType(MediaFileService.java:552)
at net.sourceforge.subsonic.service.MediaFileService.createMediaFile(MediaFileService.java:501)
at net.sourceforge.subsonic.service.MediaFileService.updateChildren(MediaFileService.java:403)
at net.sourceforge.subsonic.service.MediaFileService.getChildrenOf(MediaFileService.java:201)
at net.sourceforge.subsonic.service.MediaScannerService.scanFile(MediaScannerService.java:235)
at net.sourceforge.subsonic.service.MediaScannerService.scanFile(MediaScannerService.java:239)
at net.sourceforge.subsonic.service.MediaScannerService.doScanLibrary(MediaScannerService.java:177)
at net.sourceforge.subsonic.service.MediaScannerService.access$000(MediaScannerService.java:48)
at net.sourceforge.subsonic.service.MediaScannerService$2.run(MediaScannerService.java:147)
Caused by: java.io.IOException: Stream closed
at java.io.BufferedInputStream.getInIfOpen(BufferedInputStream.java:159)
at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
at java.io.FilterInputStream.read(FilterInputStream.java:107)
at sun.util.locale.provider.RuleBasedBreakIterator.readFile(RuleBasedBreakIterator.java:462)
at sun.util.locale.provider.RuleBasedBreakIterator.readTables(RuleBasedBreakIterator.java:375)
at sun.util.locale.provider.RuleBasedBreakIterator.<init>(RuleBasedBreakIterator.java:321)
at sun.util.locale.provider.BreakIteratorProviderImpl.getBreakInstance(BreakIteratorProviderImpl.java:169)
... 20 more

Should be easy to replicate. Just add the 'Σ' to a song's filename and id3 tag title and run a scan. The user will only notice the error when new albums are added to their media collection and only a few songs are visible (because the MediaScannerService crashes before it has a chance to scan them all in).
funkmata
 
Posts: 1
Joined: Fri Feb 17, 2017 5:09 pm

Return to Help

Who is online

Users browsing this forum: No registered users and 18 guests