A couple of weeks ago we released a feature on the ‘develop’ branch that would resize mediacovers (especially posters) to smaller sizes and serve those smaller posters to clients. This change has the potential to reduce bandwidth usage on the first view significantly. For example: 21 MB before and 1.8 MB after this change, which is a very significant improvement for mobile apps such as the Android app nzb360.
The feature had a fallback mechanism, which served fullsize images if the small images weren’t available. Mainly intended to cover the period that the version was installed but the library hadn’t updated yet.
The feature was tested on windows and ubuntu successfully and released to the ‘develop’ branch on January 15th.
We didn’t get any negative reports until after it was merged to the ‘master’ around February 2nd.
It wasn’t until later that we realized that installations missing libgdiplus wouldn’t just log errors, but actually create zero-byte images, thus rendering the fallback mechanism ineffective (which serves those corrupted files, instead of the full sized ones).
We’ve pushed a fix that should handle the zero-byte images to the UI and prevent further errors to be logged.
Version 2.0.0.2850 was later release to remove the EPIC FAIL errors that were still being logged on mono.
In any case, our apologies that this bug got to master before we knew about it.
Related links
Synology github issue here
Synology forum thread here
Sonarr forum threads here and here
Thanks for the response and explanation. I have updated to latest version and also still having the EPIC FAIL errors on the libgdiplus.so: libgdiplus.so.
I’m on a synology box. Seems to be downloading images though the right way again.
I am still getting the “EPIC FAIL: An exception was thrown by the type initializer for System.Drawing.GDIPlus” but it doesn’t freeze up Sonarr.
Not sure how much of the log file I should paste:
15-2-7 10:50:06.5|Fatal|GlobalExceptionHandlers|EPIC FAIL: An exception was thrown by the type initializer for System.Drawing.GDIPlus
System.TypeInitializationException: An exception was thrown by the type initializer for System.Drawing.GDIPlus —> System.DllNotFoundException: libgdiplus.so
at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
at System.Drawing.GDIPlus…cctor () [0x00000] in :0
— End of inner exception stack trace —
at System.Drawing.Image.InitFromStream (System.IO.Stream stream) [0x00000] in :0
at System.Drawing.Bitmap…ctor (System.IO.Stream stream, Boolean useIcm) [0x00000] in :0
at (wrapper remoting-invoke-with-check) System.Drawing.Bitmap:.ctor (System.IO.Stream,bool)
at ImageResizer.ImageBuilder.DecodeStream (System.IO.Stream s, ImageResizer.ResizeSettings settings, System.String optionalPath) [0x00000] in :0
at ImageResizer.ImageBuilder.LoadImage (System.Object source, ImageResizer.ResizeSettings settings, Boolean restoreStreamPos) [0x00000] in :0
System.DllNotFoundException: libgdiplus.so
at (wrapper managed-to-native) System.Drawing.GDIPlus:GdiplusStartup (ulong&,System.Drawing.GdiplusStartupInput&,System.Drawing.GdiplusStartupOutput&)
at System.Drawing.GDIPlus…cctor () [0x00000] in :0
Just tore out libgdiplus on my ubuntu setup to repro.
This is ridiculous, I tell it to swallow the exception, but it’s still logs despite me telling it not to. Could be mono specific.
Well, at least the images are back. ** facepalm **
But I probably should spend time on getting a more permanent implementation in place instead of push updates to remove error messages. I’ll update the the first post.