Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

RB-10.4 to RB-10.5 #1381

Merged
merged 8 commits into from
Jul 21, 2023
Merged

RB-10.4 to RB-10.5 #1381

merged 8 commits into from
Jul 21, 2023

Conversation

ivanimanishi
Copy link
Member

No description provided.

lucienfostier and others added 8 commits July 4, 2023 11:39
…r is computing.

I noticed crashes when the SceneCacheReader property panel was displayed and you would change frame or
filter the scene tag.

The following traceback indicates that it was related with refresh the SceneView widget.

This is likely something fundamentally flawed with the node ( as Nuke often complains
we are updating knob inside the _validate).

Futhermore, we should be able to use native Nuke node once we start using Nuke 14+ and
its USD support ( using our SceneCacheDataFormat AbstractFormat USD plugin ).

The trick is to avoid updating the widget when it's already up to date.
While testing,I couldnt reproduce the crash I saw when changing the filtering
and the "loading" of location in the Nuke 3d system.

```
0  0x0000000080000017 in ?? ()
1  0x00007fa26c59fee2 in QObject::disconnect(QObject const*, char const*, QObject const*, char const*) () from /software/apps/nuke/13.2v8/cent7.x86_64/libQt5Core.so.5
2  0x00007fa26d341e90 in QTreeView::setModel(QAbstractItemModel*) () from /software/apps/nuke/13.2v8/cent7.x86_64/libQt5Widgets.so.5
3  0x00007fa25b1a089c in ?? () from /software/apps/nuke/13.2v8/cent7.x86_64/libnuke-13.2.8.so
4  0x00007fa25aae2656 in ?? () from /software/apps/nuke/13.2v8/cent7.x86_64/libnuke-13.2.8.so
5  0x00007fa25aaec3f9 in ?? () from /software/apps/nuke/13.2v8/cent7.x86_64/libnuke-13.2.8.so
6  0x00007fa175dc56e9 in IECoreNuke::SceneCacheReader::filterScene(std::string const&, std::string const&, bool) ()
   from /software/apps/cortex/10.4.10.0/cent7.x86_64/nuke/13.2/lib/libIECoreNuke-10.4.so
7  0x00007fa175dc6065 in IECoreNuke::SceneCacheReader::_validate(bool) () from /software/apps/cortex/10.4.10.0/cent7.x86_64/nuke/13.2/lib/libIECoreNuke-10.4.so
8  0x00007fa2597faf3b in DD::Image::Op::force_validate(bool) () from /software/apps/nuke/13.2v8/cent7.x86_64/libDDImage.so
9  0x00007fa175da9794 in IECoreNuke::LiveScene::geometryList(DD::Image::Op*, double const&) const ()
   from /software/apps/cortex/10.4.10.0/cent7.x86_64/nuke/13.2/lib/libIECoreNuke-10.4.so
10 0x00007fa175da9dc9 in IECoreNuke::LiveScene::geometryList(double const&) const () from /software/apps/cortex/10.4.10.0/cent7.x86_64/nuke/13.2/lib/libIECoreNuke-10.4.so
11 0x00007fa175daa860 in IECoreNuke::LiveScene::cacheGeometryList(double const&) const () from /software/apps/cortex/10.4.10.0/cent7.x86_64/nuke/13.2/lib/libIECoreNuke-10.4.so
12 0x00007fa175dab8f2 in IECoreNuke::LiveScene::objectNum(double const*) const () from /software/apps/cortex/10.4.10.0/cent7.x86_64/nuke/13.2/lib/libIECoreNuke-10.4.so
13 0x00007fa175dacedb in IECoreNuke::LiveScene::childNames(std::vector<IECore::InternedString, std::allocator<IECore::InternedString> >&) const ()
   from /software/apps/cortex/10.4.10.0/cent7.x86_64/nuke/13.2/lib/libIECoreNuke-10.4.so
14 0x00007fa1298fbca9 in CaribouNuke::CaribouSceneReader::computeChildNames(std::vector<IECore::InternedString, std::allocator<IECore::InternedString> > const&, Gaffer::Context const*, GafferScene::ScenePlug const*) const () from /home/lucienf/apps/caribou/4.2.2dev/gaffer/1.2/tools/nuke/13.2/python/cent7.x86_64/cortex/10.4/CaribouNuke/_CaribouNuke.so
15 0x00007fa13530d444 in GafferScene::SceneNode::compute(Gaffer::ValuePlug*, Gaffer::Context const*) const ()
   from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGafferScene.so
16 0x00007fa148ec5340 in Gaffer::ValuePlug::ComputeProcess::ComputeProcess((anonymous namespace)::ComputeProcessKey const&) ()
   from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
17 0x00007fa148ece618 in Gaffer::ValuePlug::ComputeProcess::value(Gaffer::ValuePlug const*, IECore::MurmurHash const*) ()
   from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
18 0x00007fa148ec7f6a in Gaffer::ValuePlug::getValueInternal(IECore::MurmurHash const*) const () from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
19 0x00007fa148eba781 in boost::intrusive_ptr<IECore::TypedData<std::vector<IECore::InternedString, std::allocator<IECore::InternedString> > > const> Gaffer::ValuePlug::getObjectValue<IECore::TypedData<std::vector<IECore::InternedString, std::allocator<IECore::InternedString> > > >(IECore::MurmurHash const*) const ()
   from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
20 0x00007fa148ebab7a in Gaffer::TypedObjectPlug<IECore::TypedData<std::vector<IECore::InternedString, std::allocator<IECore::InternedString> > > >::getValue(IECore::MurmurHash const*) const () from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
21 0x00007fa148ebabbe in Gaffer::TypedObjectPlug<IECore::TypedData<std::vector<IECore::InternedString, std::allocator<IECore::InternedString> > > >::setFrom(Gaffer::ValuePlug const*)
    () from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
22 0x00007fa148e36256 in Gaffer::NameSwitch::compute(Gaffer::ValuePlug*, Gaffer::Context const*) const ()
   from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
23 0x00007fa148ec5340 in Gaffer::ValuePlug::ComputeProcess::ComputeProcess((anonymous namespace)::ComputeProcessKey const&) ()
   from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
24 0x00007fa148ece618 in Gaffer::ValuePlug::ComputeProcess::value(Gaffer::ValuePlug const*, IECore::MurmurHash const*) ()
   from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
25 0x00007fa148ec7f6a in Gaffer::ValuePlug::getValueInternal(IECore::MurmurHash const*) const () from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
26 0x00007fa148eba781 in boost::intrusive_ptr<IECore::TypedData<std::vector<IECore::InternedString, std::allocator<IECore::InternedString> > > const> Gaffer::ValuePlug::getObjectValue<IECore::TypedData<std::vector<IECore::InternedString, std::allocator<IECore::InternedString> > > >(IECore::MurmurHash const*) const ()
   from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
27 0x00007fa148ebab7a in Gaffer::TypedObjectPlug<IECore::TypedData<std::vector<IECore::InternedString, std::allocator<IECore::InternedString> > > >::getValue(IECore::MurmurHash const*) const () from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
28 0x00007fa1352c50ca in GafferScene::RenderController::SceneGraph::updateChildren(Gaffer::TypedObjectPlug<IECore::TypedData<std::vector<IECore::InternedString, std::allocator<IECore::InternedString> > > > const*) () from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGafferScene.so
29 0x00007fa1352d9754 in GafferScene::RenderController::SceneGraph::update(std::vector<IECore::InternedString, std::allocator<IECore::InternedString> > const&, unsigned int, GafferScene::RenderController::SceneGraph::Type, GafferScene::RenderController*) () from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGafferScene.so
30 0x00007fa1352d9e1b in GafferScene::RenderController::SceneGraphUpdateTask::execute() () from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGafferScene.so
31 0x00007fa2568544ef in ?? () from /software/apps/nuke/13.2v8/cent7.x86_64/libtbb.so.2
---Type <return> to continue, or q <return> to quit---
32 0x00007fa256851b00 in ?? () from /software/apps/nuke/13.2v8/cent7.x86_64/libtbb.so.2
33 0x00007fa1352bb36e in GafferScene::RenderController::updateInternal(std::function<void (Gaffer::BackgroundTask::Status)> const&, IECore::PathMatcher const*, bool) ()
   from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGafferScene.so
34 0x00007fa148e3b47b in std::_Function_handler<void (IECore::Canceller const&), Gaffer::ParallelAlgo::callOnBackgroundThread(Gaffer::Plug const*, std::function<void ()>)::{lambda(IECore::Canceller const&)#1}>::_M_invoke(std::_Any_data const&, IECore::Canceller const&) () from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
35 0x00007fa148d83dd5 in _ZN3tbb8internal13function_taskIZN6Gaffer14BackgroundTaskC4EPKNS2_4PlugERKSt8functionIFvRKN6IECore9CancellerEEEEUlvE_E7executeEv ()
   from /software/apps/gaffer/1.2.9.0/cent7.x86_64/cortex/10.4/nuke/13.2/lib/libGaffer.so
36 0x00007fa2568544ef in ?? () from /software/apps/nuke/13.2v8/cent7.x86_64/libtbb.so.2
37 0x00007fa25684dae4 in ?? () from /software/apps/nuke/13.2v8/cent7.x86_64/libtbb.so.2
38 0x00007fa25684c603 in ?? () from /software/apps/nuke/13.2v8/cent7.x86_64/libtbb.so.2
39 0x00007fa256848846 in ?? () from /software/apps/nuke/13.2v8/cent7.x86_64/libtbb.so.2
40 0x00007fa256848a79 in ?? () from /software/apps/nuke/13.2v8/cent7.x86_64/libtbb.so.2
41 0x00007fa26bed3ea5 in start_thread () from /lib64/libpthread.so.0
42 0x00007fa26b308b0d in clone () from /lib64/libc.so.6
```
The old code was incorrectly appending the target's location to the
`linkLocations`.

The `linkLocations` are expected to hold the locations in the current
LinkedScene that contain links to other files. These paths are expected
to exist in the LinkedScene itself.

Everything worked fine if the target location was set to the ROOT, but
if it was targeting an internal location, that would be appended which
would result in an invalid path.

The cause for that bug was that we were updating `m_linkedScene`, which
is used to compute LinkedScene::path(), but not updating the
`m_rootLinkDepth` property, which is also used to compute the path, by
stripping out part of it based on the depth of the link.

For `linkLocations`, that depth should generally be expected to
completely remove any contributions from `m_linkedScene`, since this
is the location where the link is being created, and therefore the
`m_rootLinkDepth` will match the length of the path inside the target
linked scene that we are linking to.

Note that existing saved `lscc` files have the attribute baked in, and
are therefore not fixed by this commit. A new export is necessary in
order to fix it.
LinkedScene : Fix incorrect `linkLocations` attribute value
@ivanimanishi ivanimanishi merged commit 4629329 into RB-10.5 Jul 21, 2023
4 checks passed
@ivanimanishi ivanimanishi deleted the tmpRB10.4toRB10.5 branch July 21, 2023 16:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants