LogicReinc / LogicReinc.BlendFarm

A stand-alone Blender Network Renderer
GNU General Public License v3.0
412 stars 35 forks source link

Crash due to System.Drawing on NixOs #113

Open lyze237 opened 1 month ago

lyze237 commented 1 month ago

Hey!

I'm currently trying to get the project built on NixOS, however after the render finishes and the program wants to display it, it crashes with the following stack trace:

Received renderResp [1086333] from [::ffff:192.168.1.237]:15000
Unhandled exception. System.ArgumentException: Parameter is not valid.
   at System.Drawing.SafeNativeMethods.Gdip.CheckStatus(Int32 status)
   at System.Drawing.Image.InitializeFromStream(Stream stream)
   at System.Drawing.Image.LoadFromStream(Stream stream, Boolean keepAlive)
   at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement, Boolean validateImageData)
   at System.Drawing.Image.FromStream(Stream stream, Boolean useEmbeddedColorManagement)
   at System.Drawing.Image.FromStream(Stream stream)
   at LogicReinc.BlendFarm.Client.ImageTypes.DefaultImageConverter.FromStream(Stream str) in /tmp/LogicReinc.BlendFarm/LogicReinc.BlendFarm.Client/ImageTypes/DefaultImageConverter.cs:line 15
   at LogicReinc.BlendFarm.Client.ImageTypes.ImageConverter.Convert(Stream str, String format) in /tmp/LogicReinc.BlendFarm/LogicReinc.BlendFarm.Client/ImageTypes/IImageConverter.cs:line 30
   at LogicReinc.BlendFarm.Client.ImageTypes.ImageConverter.Convert(Byte[] bytes, String format) in /tmp/LogicReinc.BlendFarm/LogicReinc.BlendFarm.Client/ImageTypes/IImageConverter.cs:line 18
   at LogicReinc.BlendFarm.Client.Tasks.SplittedTask.<>c__DisplayClass6_1.<Execute>b__1(RenderNode node) in /tmp/LogicReinc.BlendFarm/LogicReinc.BlendFarm.Client/Tasks/SplittedTask.cs:line 86
   at LogicReinc.BlendFarm.Shared.RenderTask.<>c__DisplayClass64_1`1.<ForceParallel>b__1() in /tmp/LogicReinc.BlendFarm/LogicReinc.BlendFarm.Client/RenderTask.cs:line 518
   at System.Threading.Thread.StartCallback()

I've identified the problem and it's due to runtime.linux-x64-CoreCompat.System.Drawing.

Removing the library, updating System.Drawing.Common to 6.0.0 and then enabling it to work under non windows OSs via a runtime config makes it work.

This change is untested on anything other than NixOS.