AWS Thinkbox Discussion Forums

3ds max Vray - PNG Library Internal Warning

Hi,

I have some problem 3ds max error PNG Library Internal Warninig. From time to time when we are running DBR jobs with 3dsCmd this PNG Plugin pops up and is blocking rendering till someone will click OK button.

png_error.png

I’ve found this old thread https://forums.thinkboxsoftware.com/viewtopic.php?f=11&t=12446&hilit=PNG+Library, but it didn’t help.

I should add that we are submitting jobs via API, so I’m looking for a solution that do not require submission via SMTD. I’ve also tried to add below code (including its variations with regex and popup body message) to the 3dscmd.py, but it didn’t help.

self.AddPopupHandler( "PNG Plugin", "OK" )

Maybe it’s not working due the fact that we are running 3dsCmd not 3dsmax plugin. Any idea what I can do about this?

Additional info:

  • max 2017
  • vray 3.6
  • deadline 9.0.4.0

My only guess is that maybe the regex parser for the handling of popups is looking for an exact match and there’s some secret whitespace. If that’s the case, try this instead:

self.AddPopupHandler( ".*PNG Plugin.*", "OK" )

Another option is to use a pop-up ignorer which just clicks the “close” button on the window:

self.AddPopupIgnorer( ".*PNG Plugin.*" )

Deadline should be logging the pop-up handling in the render log, so you should hopefully see it there. If not, it’s likely Deadline’s not seeing it at all, which might be caused by some sub-process but I’m not certain.

Re-reading the older forum thread, I’m pretty sure this is a classic 3dsMax bug, where one or more RE’s gets confused as to what image file format plugin it thinks it is using. (You can prove this to yourself by rendering this bad file locally and opening up the image RE’s generated. I bet at least one of them thinks it is corrupt and not the image file format you thought it was. ie: change the file extension to what it should be and then the image will open correctly in Photoshop). The easiest and most reliable way to fix this is to enable the auto-rebuild render elements checkbox in SMTD, which will fire during job submission, then you don’t need to worry about this anymore. If it’s the actual main render file output path that is causing this issue, then it would just need to be fixed manually by re-wiring it to a different image file format and then click it back to *.png again, hit save and then submit.

Like Edwin; not sure why the popup wasn’t detected. For the 3dsCmd plugin it would need to be placed under the “CmdProcess” class, as the 3dsCmd.py plugin is now an Advanced Plugin in Deadline. Perhaps, you edited the wrong location. Either way, I wouldn’t leave things to chance here and just fix this issue at the ‘root’ of the problem and get SMTD to auto-heal you at job submission time.

Just for my own curiosity, is there a reason why someone might not want to rebuild their render elements? It seems to be handy a few places.

Not really, which is why we switched it a while back to be enabled by default. :smiley:

Thanks for looking into this. But…

  1. I’ve checked the log file and the dialog is not being detected. Not sure but the dialog is probably coming from MAX_DIR/stdplugs/png.bmi file
  2. As i wrote, I’m submitting jobs via API and not via SMTD and the rebuild RE feature is part of SMTD submission process

Can you post a simple/teapot scene file that has this issue, so I can have a play?

Not sure if this is easily replicate. This happened to one of our clients scene and of course I cannot send you this file. But maybe I will try to recreate a minimal test case.

So I’ve manage to prepare a minimal test scene.

PNG_error_test.zip (299 KB)

Comments:

  1. It’s a simple teapot with a single texture created in Max 2017. Upon opening you should see said PNG Library warning.

  2. The PNG file is corrupted, even though it is displayed properly. Blow is an output of the pngcheck which clearly states that the file is corrupted.

  1. Job submitted as 3dsmax properly detected the popup, but it did not handle it gracefully. Not sure if it should.
2017-08-23 11:22:48:  0: INFO: Loading Map Files
2017-08-23 11:22:48:  0: INFO: Preparing Objects
2017-08-23 11:23:13:  0: WARNING: Detected popup dialog "PNG Plugin".
2017-08-23 11:23:13:  0: WARNING: ---- dump of dialog ----
2017-08-23 11:23:13:  0: WARNING: Button: OK
2017-08-23 11:23:13:  0: WARNING: Static: PNG Library Internal Warning
2017-08-23 11:23:13:  0: WARNING: ---- end dump of dialog ----
2017-08-23 11:23:13:  0: Done executing plugin command of type 'Render Task'
2017-08-23 11:23:13:  0: An exception occurred: Error: RenderTask: Unexpected exception (Dialog popup detected: Title "PNG Plugin", Message "PNG Library Internal Warning")
2017-08-23 11:23:13:     w Deadline.Plugins.PluginWrapper.RenderTasks(String taskId, Int32 startFrame, Int32 endFrame, String& outMessage, AbortLevel& abortLevel) (Deadline.Plugins.RenderPluginException)
  1. Job submitted as 3dscmd faild to detect the dialog and hanged forever with popup. This is probably because the stdout handler is attached to different process (3dsmaxcmd.exe) than the one that is spawning the popup window (3dsmax.exe).

ok, after quite a bit of testing, looks like an issue with handling popups generated by a child process, as per your last comment. I can re-produce the issue by breaking and also fixing our 3dsmax.py plugin with an extra plugin property that was recently introduced. However, 3dsmax.py drives 3dsmax.exe directly which explains why it works, whilst 3dsmaxcmd.exe spawns 3dsmax.exe and hence the issue, as per your last screen-grab. I will log a dev ticket for this issue to see if we can do anything here.

Privacy | Site terms | Cookie preferences