Bug: An mp3 file with stream errors can make library scanning hang forever

An example of such an mp3 file can be found here:

https://drive.google.com/file/d/1ctk1JNlC0YCV3nmPw88Nql8ikOjJYmGU/view?usp=sharing

A run with “MP3 Diags” for the file reports:

  • “Invalid MPEG stream. Stream has fewer than 10 frames.”

  • “Two MPEG audio streams found, but a file should have exactly one.”

The file plays without any problems with many media players, Window Media Player for instance.

Tested with 1.13.2.5142.

Ha ha - 15?! - that’s a lot! : -) - thank you for your suggestions :slight_smile:

The problem is the same with both a basic music library and a premium music library.

As soon as the PlexTranscoder process hits the file, it will start using 100% cpu and never finish.

The bug is easy to recreate:

  1. Create a directory and add the mp3 file to it
  2. Add the directory to Plex as a basic music library or a premium music library.
  3. Scan the library.

Bug: The scanning process will never finish and the PlexTranscoder process will use 100% cpu.

It doesn’t matter if the Plex server is running Linux or Windows.

Because the process never finishes, there will never be written anything to the logs. So the logs will not provide any further information.

The problem I see with this bug, is that if a file like this is inside a directory with very many files, the scanning process will just seem to hang at some some point, before finding all mp3 files. And as a regular user, how would I now know how to identify the exact file causing the problem?

Only when the invalid mp3 file is found and fixed or removed, the scan process can run to completion.

Yay, glad to hear that it might be just something related to my setup :slight_smile:

I just tried it again with version 1.13.2.5154, and I still get the same behaviour.

The command that uses all cpu is this:

"C:\Program Files (x86)\Plex\Plex Media Server\PlexTranscoder.exe" -i "file:C:\mp3	mp\101 - Track 101.mp3" -filter_complex "[0:a:0] aresample=async=1:ocl='stereo':osr=44100[0]" -map [0] -codec:0 pcm_s16le -b:0 4096k -f wav -map_metadata -1 -map_chapters -1 -t 60 C:\Users\steff\AppData\Local\Temp\bc627f24-f105-4cbd-9b9a-a4e30b0b4c43 -y -nostats -loglevel quiet -loglevel_plex error -progressurl http://127.0.0.1:32400/video/:/transcode/session/414b7532-1676-4663-85ae-dd1ada404f1c/6e1d8e8b-cb92-4a29-89fd-fe65b433364f/progress

PlexTranscoder:

C:\Users\steff>"C:\Program Files (x86)\Plex\Plex Media Server\PlexTranscoder.exe" -version
ffmpeg version git-2018-06-01-e2b7800 Copyright (c) 2000-2018 the FFmpeg developers
built with gcc 5.3.0 (Rev5, Built by MSYS2 project)
configuration: --prefix=/C/J2/output/pms-depends-windows-i386-release-2bcfd7c --disable-bzlib --disable-ffplay --disable-ffprobe --disable-avdevice --disable-schannel --disable-linux-perf --disable-mediacodec --disable-debug --disable-doc --disable-shared --pkg-config-flags=--static --enable-muxers --enable-gpl --enable-version3 --enable-gnutls --enable-eae --disable-encoders --disable-decoders --disable-hwaccels --enable-libass --enable-librtmp --disable-devices --disable-lzma --disable-iconv --disable-protocol=concat --enable-libvorbis --enable-libopus --external-decoder=h264 --disable-bsfs --enable-bsf='aac_adtstoasc,extract_extradata,dca_core,h264_mp4toannexb,hevc_mp4toannexb,vp9_superframe,vp9_superframe_split,framedrop' --enable-decoder=png --enable-decoder=apng --enable-decoder=bmp --enable-decoder=mjpeg --enable-decoder=thp --enable-decoder=gif --enable-decoder=dirac --enable-decoder=ffv1 --enable-decoder=ffvhuff --enable-decoder=huffyuv --enable-decoder=rawvideo --enable-decoder=zero12v --enable-decoder=ayuv --enable-decoder=r210 --enable-decoder=v210 --enable-decoder=v210x --enable-decoder=v308 --enable-decoder=v408 --enable-decoder=v410 --enable-decoder=y41p --enable-decoder=yuv4 --enable-decoder=ansi --enable-decoder=alac --enable-decoder=flac --enable-decoder=vorbis --enable-decoder=opus --enable-decoder=pcm_f32be --enable-decoder=pcm_f32le --enable-decoder=pcm_f64be --enable-decoder=pcm_f64le --enable-decoder=pcm_lxf --enable-decoder=pcm_s16be --enable-decoder=pcm_s16be_planar --enable-decoder=pcm_s16le --enable-decoder=pcm_s16le_planar --enable-decoder=pcm_s24be --enable-decoder=pcm_s24le --enable-decoder=pcm_s24le_planar --enable-decoder=pcm_s32be --enable-decoder=pcm_s32le --enable-decoder=pcm_s32le_planar --enable-decoder=pcm_s8 --enable-decoder=pcm_s8_planar --enable-decoder=pcm_u16be --enable-decoder=pcm_u16le --enable-decoder=pcm_u24be --enable-decoder=pcm_u24le --enable-decoder=pcm_u32be --enable-decoder=pcm_u32le --enable-decoder=pcm_u8 --enable-decoder=pcm_alaw --enable-decoder=pcm_mulaw --enable-decoder=ass --enable-decoder=dvbsub --enable-decoder=dvdsub --enable-decoder=ccaption --enable-decoder=pgssub --enable-decoder=jacosub --enable-decoder=microdvd --enable-decoder=movtext --enable-decoder=mpl2 --enable-decoder=pjs --enable-decoder=realtext --enable-decoder=sami --enable-decoder=ssa --enable-decoder=stl --enable-decoder=subrip --enable-decoder=subviewer --enable-decoder=text --enable-decoder=vplayer --enable-decoder=webvtt --enable-decoder=xsub --enable-decoder=libzvbi_teletext --enable-decoder=eac3_mf --enable-decoder=wmalossless_mf --enable-decoder=wmapro_mf --enable-decoder=wmav1_mf --enable-decoder=wmav2_mf --enable-decoder=wmavoice_mf --enable-decoder=eac3_eae --enable-decoder=truehd_eae --enable-decoder=mlp_eae --enable-encoder=flac --enable-encoder=alac --enable-encoder=libvorbis --enable-encoder=libopus --enable-encoder=mjpeg --enable-encoder=wrapped_avframe --enable-encoder=ass --enable-encoder=dvbsub --enable-encoder=dvdsub --enable-encoder=movtext --enable-encoder=ssa --enable-encoder=subrip --enable-encoder=text --enable-encoder=webvtt --enable-encoder=xsub --enable-encoder=pcm_f32be --enable-encoder=pcm_f32le --enable-encoder=pcm_f64be --enable-encoder=pcm_f64le --enable-encoder=pcm_s8 --enable-encoder=pcm_s8_planar --enable-encoder=pcm_s16be --enable-encoder=pcm_s16be_planar --enable-encoder=pcm_s16le --enable-encoder=pcm_s16le_planar --enable-encoder=pcm_s24be --enable-encoder=pcm_s24le --enable-encoder=pcm_s24le_planar --enable-encoder=pcm_s32be --enable-encoder=pcm_s32le --enable-encoder=pcm_s32le_planar --enable-encoder=pcm_u8 --enable-encoder=pcm_u16be --enable-encoder=pcm_u16le --enable-encoder=pcm_u24be --enable-encoder=pcm_u24le --enable-encoder=pcm_u32be --enable-encoder=pcm_u32le --enable-encoder=aac_mf --enable-encoder=h264_qsv --enable-encoder=h264_nvenc --enable-encoder=h264_mf --enable-encoder=hevc_mf --enable-encoder=eac3_eae --arch=i386 --enable-libzvbi --extra-ldflags=-static-libgcc --enable-mf --enable-libmfx --extra-cflags='-Iinclude/windows -I/C/J2/output/pms-depends-windows-i386-release-2bcfd7c/include -DWINDOWS -D_WIN32_WINNT=0x0600 -static-libgcc -falign-loops=16 -ffast-math -mfpmath=sse -msse' --extra-ldflags='-static-libgcc -L/C/J2/output/pms-depends-windows-i386-release-2bcfd7c/lib' --extra-libs='-lgcrypt -lgpg-error -lwinmm -lwsock32 -lcrypt32'
libavutil      56.  7.101 / 56.  7.101
libavcodec     58. 12.102 / 58. 12.102
libavformat    58.  9.100 / 58.  9.100
libavfilter     7. 12.100 /  7. 12.100
libswscale      5.  0.101 /  5.  0.101
libswresample   3.  0.101 /  3.  0.101
libpostproc    55.  0.100 / 55.  0.100

With Linux (plexmediaserver_1.13.2.5154-fd05be322_amd64.deb) I get the same:

plex     16129 14113 98 01:52 ?        00:00:22 /usr/lib/plexmediaserver/Plex Transcoder -i file:/plex/mp3/tmp/101 - Track 101.mp3 -filter_complex [0:a:0] aresample=async=1:ocl='stereo':osr=44100[0] -map [0] -codec:0 pcm_s16le -b:0 4096k -f wav -map_metadata -1 -map_chapters -1 -t 60 /tmp/0bafbc91-d47e-48db-9b26-15be743d6f70 -y -nostats -loglevel quiet -loglevel_plex error -progressurl http://127.0.0.1:32400/video/:/transcode/session/c6c1f6e6-c47f-464b-a4a0-aae8c2383bbf/01001b23-d55d-4d2e-b0f1-50d678a2ea5d/progress

:~$ "/usr/lib/plexmediaserver/Plex Transcoder" -version
/usr/lib/plexmediaserver/Plex Transcoder: error while loading shared libraries: libva.so.2: cannot open shared object file: No such file or directory

:~$ uname -a
Linux plex 4.4.0-121-generic #145-Ubuntu SMP Fri Apr 13 13:47:23 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

And on Synology 1.13.2.5142 also the same:

plex     21994 27245 99 01:50 ?        00:00:28 /volume1/@appstore/Plex Media Server/Plex Transcoder -i file:/volume1/root/mp3/tmp/101 - Track 101.mp3 -filter_complex [0:a:0] aresample=async=1:ocl='stereo':osr=44100[0] -map [0] -codec:0 pcm_s16le -b:0 4096k -f wav -map_metadata -1 -map_chapters -1 -t 60 /volume1/Plex/tmp_transcoding/3a8fb1e3-9080-4c58-92bc-458b59dbf27e -y -nostats -loglevel quiet -loglevel_plex error -progressurl http://127.0.0.1:32400/video/:/transcode/session/50c3cbe8-c225-45df-a60e-e47ff05c3484/ecdb502a-8631-4e0c-b866-393a1c2cd5b9/progress

ash-4.3# "/volume1/@appstore/Plex Media Server/Plex Transcoder" -version
/volume1/@appstore/Plex Media Server/Plex Transcoder: error while loading shared libraries: libva.so.2: cannot open shared object file: No such file or directory

ash-4.3# uname -a
Linux plex 3.10.105 #22259 SMP Mon Oct 2 02:44:34 CST 2017 x86_64 GNU/Linux synology_bromolow_3615xs

Logs coming right up - this example is from the Windows installation :slight_smile:

And, that IS all of the log output I got - right from before the creation of the new library :slight_smile:

Anyway, I created a new server to recreate the bug from the start, and here are the full logs from that one.

The log reflects:

  1. Set up a new server

  2. Add c:\mp3 as a premium music library called “Music”
    First time it worked (a surprise for me!) - the file got scanned alright.

  3. Add c:\mp3 as a premium music library called “Music2”
    This time the scanning hangs, with the same command line as above.

This was the first time I saw the scan completing, for me.

So, apparently this is not a permanent, but a transparent bug - sometimes the scan completes, sometimes it doesn’t.

Therefore, I guess it might be worth trying a few times to reproduce the bug.

Thank you, Andy, for a very nice explanation :slight_smile:

I hear what you say, and in my experience the scan will not continue, when it first encounters a file like this.

The scan will appear to be running - but nothing will happen, for days.

Anyway, I just wanted to report the behaviour that I encountered, thinking that maybe the scanning process could be made even more robust in some way.

And, I think it is a perfectly valid assumption that all files Plex encounters should be without any errors. If not, expect trouble :slight_smile:

Ha ha - yeah, I can always wish and hope :slight_smile:

… and with Plex, my world is already a whole lot more perfect - thanks for all your great work! :slight_smile:

Tip: if you have a collection of files from different ages and sources, this little software can help weeding out the bad ones: http://mp3diags.sourceforge.net/