prman-pixar / RenderManForBlender

RenderMan for Blender render addon
MIT License
808 stars 133 forks source link

Can't use IPR - Blender 2.79, RPS 21.5 #585

Closed mj-saunders closed 6 years ago

mj-saunders commented 6 years ago

Using 'Keep UI' setting and rendering out to 'it'.

Running from console, I can see these errors:

R90007 {SEVERE} DisplayWindow failed to send display data (System Error: Bad file descriptor) R56005 {SEVERE} Renderer completing shutdown request. (System Error: Bad file descriptor)

Using: Arch Linux 4.18 x64 RenderManProServer 21.5

Standard rendering seems to work fine.

If no specific answer, I'll also take any advice on how to debug this.

mj-saunders commented 6 years ago

I've managed to get some rudimentary remote debugging going using pydev. But it's not helping much.

Between that and a lot of reading around, I find the above error (R90007) described on this page toward the bottom: prmanual I've not been able to dig deeper on understanding that.

Any reference I can find online to the same error never refers to "Bad file descriptor".

RenderManForBlender uses the following for IPR: launch:prman? -t:-1 -cwd /tmp/renderman_for_blender/untitled -ctrl $ctrlin $ctrlout -dspyserver it

I am guessing at this point, that the pipes that are supposed to allow communication to 'it' from 'blender' are not being used. 'it' does not open at all, but also RenderManForBlender runs IPR without error, prman having been closed in the background. Also fails even if 'it' is open already (or opened manually from command line).

I am out of my depth, but trying to make sense of this. As I mentioned before, rendering to 'it' works fine with F12 (but I have not figured out how to debug that pathway - bpy.ops.render.render()).

Any advice would be supremely appreciated.


Managed to go through how rendermanforblender renders with F12. But I couldn't figure out much. For IPR, looks like a RIB file is made, then another method to run prman is used (line 632 onward in engine.py) compared with standard render. I assume that it how the "pipes" are kept open to communicate with 'it'.

It hasn't helped me much, but after line 646 in engine.py has run is where the error R90007 is displayed - I don't know if that's really where the cause is.

Is line 638 where 'it' should be launched? Or perhaps something to do with line 3670 in export.py? My theory at the moment is that the pipes fail simply because 'it' isn't launched...

mj-saunders commented 6 years ago

Well, closing this.

Solved. Turns out you should not forget when you are using linux-hardened and then expect things to behave normally.