Hi list, hi Support,
as many other studios we've been suffering from fairly regular crashes when
trying to switch workgroups containing custom renderers in an open
softimage UI session.
I've made several attempts to work around this issue in the past with mixed
results.
However this time I've been in a particularly stubborn mood and I think
I've finally isolated the bugger! (Repro steps further down in this mail)
Cheers, Martin
*--- Description ---*
*Softimage UI will crash reliably on workgroup unload when this workgroup
contains a custom renderer and at least on .xsirtcompound file*
*--- Background Details ---*
When switching between jobs we are dynamically unloading the old job
workgroup and then loading the new job workgroup in an open Softimage
session without restarting the software.
This has worked reliably for years - until we started to regularly install
a custom renderer into these job workgroups (in our case Arnold - but I've
verified that this bug is not Arnold related).
Right now our workgroup switching leads to a crash in roughly 50% of the
cases in a UI session... :-/
BUT: the same workgroup switching code works on our farm absolutely
flawlessly.
*--- This is what I think happens ---*
*A workgroup unload will crash Softimage reliably if...*
*
*
*1.) a custom renderer is installed in this workgroup*
*2.) at least one .xsirtcompound file is part of this workgroup (either in
/Data/RTCompounds, or as part of another addon)*
*3.) the Render Tree window was opened at least once in the UI session
BEFORE the workgroup gets unloaded*
I think that when the Render Tree window gets displayed it refreshes its
list of available shaders and rtcompounds.
If this refresh gets executed before the attempted workgroup unload it will
crash. You will achieve the same effect if you open the Preset Manager
window.
Please note that it already is enough to display the Render Tree window in
an empty scene - the offending xsirtcompound must not be seen or used for
the crash to happen.
*--- A few more remarks from my side ---*
1.) I've run "unit tests" on my side (scripted UI sessions unloading a
workgroup, loading a workgroup, rendering a preview frame, ... 50 times in
a loop) without a crash. The minute I let the same test script also display
the Render Tree window it crashes reliably. Removing the offending
xsirtcompound file results in the same 50 loops of testing to finish
reliably again.
2.) It is not important what xsirtcompound file it is - as long as it is a
legal one. For my tests I just put a standard Mental Ray factory phong node
into a compound and exported it into* /Data/RTCompounds*.
3.) We've seen this with many versions of Arnold - but to understand if
this is a Softimage or Arnold issue I also tried this with the free version
of 3Delight - same behaviour.
4.) I've tested this on Softimage 2012.SAP (x64) and 2013.SP1 (x64) - both
on XP and Windows 7.
*--- Repro Steps ---*
*1.) Create an empty workgroup*
*2.) Install a custom renderer addon into this workgroup* (e.g. 3delight)
*3.) Place a legal .xsirtcompound file into Workgroup/Data/RTCompounds*. (I
just put a standard factory MentalRay phong node into a compound and
exported it...)
*4.) Start a fresh vanilla Softimage session and connect to this workgroup.*
*5.) Disconnect the workgroup again.* --> This works
*6.) Connect the workgroup again*
*7.) Disconnect the worgkroup again* --> still no problem
*8.) Now connect the workgroup once more*
*9.) Display a Render Tree Window*
*10) Now disconnect the workgroup again* ---> crash...
*[ Repro'ed with Softimage 2012.SAP and 2013.SP1 (both x64) on both Windows
7 and Win XP64. ]*
*[ Repro'ed with multiple versions of Arnold and 3Delight. ]*
--
Martin Chatterjee
[ Freelance Technical Director ]
[ http://www.chatterjee.de ]
[ https://vimeo.com/chatterjee ]