Crash in DrawNodeInBoxMode

Crash in DrawNodeInBoxMode

svetlin.nikolov
Participant Participant
1,061 Views
6 Replies
Message 1 of 7

Crash in DrawNodeInBoxMode

svetlin.nikolov
Participant
Participant

Hey guys,

 

I am getting a crash when I repeatedly call EvalWorldState() on a geometry with Skin modifier which has Display as Box. This happens only in 3ds Max 2020 and 2021.

 

Steps to reproduce:

1. create a sphere and a biped
2. put a Skin mod on the sphere, pick the biped
3. create a Phoenix Simulator (any Phoenix 4.x will do, you can start a trial here https://www.chaosgroup.com/trial/phoenix-fd-3ds-max)

4. make the sphere displayed as box
5. run the sim - crash:

 

It is an infinite recursion inside DrawNodeInBoxMode:

 

.... [repeat]
3dsmax.exe!BaseNode::GetObjTMAfterWSM(int,class Interval *) Unknown
3dsmax.exe!BaseNode::GetObjectTM(int,class Interval *) Unknown
bonesDef.dlm!BonesDefMod::UpdateTMCacheTable(class BoneModData *,int,class Interval &,int) Unknown
bonesDef.dlm!BonesDefMod::ModifyObject(int,class ModContext &,class ObjectState *,class INode *) Unknown
core.dll!ModAppEvaluator::ModifyObject(class ObjectState &) Unknown
core.dll!ModAppEvaluator::ConvertAndModifyObject(void) Unknown
core.dll!ModAppEvaluator::Compute(void) Unknown
core.dll!ModApp::Eval(int,unsigned long,class Modifier *,class INode *,int &,bool,int) Unknown
core.dll!GenDerivedObject::Eval(int,class Matrix3 *,class Interval,unsigned long,class INode *,int &,bool,int) Unknown
core.dll!GenDerivedObject::Eval(int) Unknown
3dsmax.exe!Node::UpdateWS(int,int) Unknown
3dsmax.exe!BaseNode::GetObjTMAfterWSM(int,class Interval *) Unknown
3dsmax.exe!BaseNode::GetObjectTM(int,class Interval *) Unknown
3dsmax.exe!BaseNode::DrawNodeInBoxMode(int,class View3D *,class Mtl *,int) Unknown
MaxGraphicsObjects.dll!MaxGraphics::DisplayNodeAccessoriesCallback::DoDisplay(int,class MaxSDK::Graphics::DisplayCallbackContextInternal const &) Unknown
GraphicsDriver.dll!MaxGraphics::Server::SimpleServerLegacyImmediateCallback::Draw(class OGS::Devices::ADrawContext &,class MaxSDK::Graphics::DisplayCallbackContextInternal const &,class MaxSDK::Graphics::RefPtr<class MaxGraphics::Server::ServerMaterial,class MaxSDK::Graphics::SafeReferenceObjectProxy<class MaxGraphics::Server::ServerMaterial>,class MaxSDK::Graphics::DefaultLifeTimePolicy<class MaxGraphics::Server::ServerMaterial> > const &) Unknown
GraphicsDriver.dll!MaxGraphics::Server::OgsDisplayCallbackRenderItem::DrawLegacyCallbacks(class OGS::Devices::ADrawContext &,class MaxGraphics::Server::DrawContextImp *) Unknown
GraphicsDriver.dll!MaxGraphics::Server::OgsDisplayCallbackRenderItem::Draw(class OGS::Devices::ADrawContext &,bool) Unknown
OGSGraphics.dll!00007ffa974c7f56() Unknown
OGSGraphics.dll!00007ffa974c7fd4() Unknown
OGSGraphics.dll!00007ffa9748db59() Unknown
OGSGraphics.dll!00007ffa97621b82() Unknown
OGSGraphics.dll!00007ffa97625d1f() Unknown
OgsExtRendering.dll!00007ffaa450c2d1() Unknown
OGSGraphics.dll!00007ffa975c5f6d() Unknown
OgsExtRendering.dll!00007ffaa44e109e() Unknown
OGSGraphics.dll!00007ffa973d8aa6() Unknown
GraphicsDriver.dll!MaxGraphics::Server::ServerSimpleRenderStage::Run(void) Unknown
GraphicsDriver.dll!MaxGraphics::Server::ServerRenderStage::CallCustomFunction(unsigned long,class MaxGraphics::InputChangeBuffer &,class MaxGraphics::OutputChangeBuffer *) Unknown
GraphicsDriver.dll!MaxGraphics::Server::ServerSimpleRenderStage::CallCustomFunction(unsigned long,class MaxGraphics::InputChangeBuffer &,class MaxGraphics::OutputChangeBuffer *) Unknown
GraphicsDriver.dll!MaxGraphics::Commands::fnCommandCallback_CustomFunction(class MaxGraphics::InputChangeBuffer &) Unknown
GraphicsDriver.dll!MaxGraphics::Commands::BatchedCommand::Execute(class ThreadingTools::BaseThread *) Unknown
GraphicsDriver.dll!MaxGraphics::Commands::RenderThreadImpl::PostCommand(class MaxSDK::Graphics::RefPtr<class MaxGraphics::Commands::BaseCommand,class MaxSDK::Graphics::SafeReferenceObjectProxy<class MaxGraphics::Commands::BaseCommand>,class MaxSDK::Graphics::DefaultLifeTimePolicy<class MaxGraphics::Commands::BaseCommand> > const &) Unknown
GraphicsDriver.dll!MaxGraphics::Commands::RenderThreadImpl::FlushCommands(void) Unknown
GraphicsDriver.dll!MaxGraphics::Commands::RenderThread::SendCommand(class MaxSDK::Graphics::RefPtr<class MaxGraphics::Commands::BaseCommand,class MaxSDK::Graphics::SafeReferenceObjectProxy<class MaxGraphics::Commands::BaseCommand>,class MaxSDK::Graphics::DefaultLifeTimePolicy<class MaxGraphics::Commands::BaseCommand> > const &,class MaxSDK::Graphics::RefPtr<class MaxGraphics::Commands::ISendCommandCallback,class MaxSDK::Graphics::SafeReferenceObjectProxy<class MaxGraphics::Commands::ISendCommandCallback>,class MaxSDK::Graphics::DefaultLifeTimePolicy<class MaxGraphics::Commands::ISendCommandCallback> > const &) Unknown
MaxGraphicsObjects.dll!MaxGraphics::CacheSubGraphOutputFragment::DoEvaluate(void *) Unknown
FragmentGraph.dll!00007ffacdb93623() Unknown
FragmentGraph.dll!00007ffacdb9360a() Unknown
FragmentGraph.dll!00007ffacdb9360a() Unknown
FragmentGraph.dll!00007ffacdb94b97() Unknown
FragmentGraph.dll!00007ffacdb93623() Unknown
ViewSystem.dll!00007ffad7729b0b() Unknown
ViewSystem.dll!00007ffad772784b() Unknown
ViewSystem.dll!00007ffad77288c7() Unknown
ViewSystem.dll!00007ffad7731244() Unknown
3dsmax.exe!IViewPanelManagerImp::ApplyToAllVisibleIViewPanels(class std::function<void > const &) Unknown
ViewSystem.dll!00007ffad773079c() Unknown
00007ff9d8bf2d5d() Unknown
00007ff9d8c47320() Unknown
00007ff9d8c46c6f() Unknown
clr.dll!00007ffa35d421fe() Unknown
3dsmax.exe!wWinMain() Unknown
3dsmax.exe!__scrt_common_main_seh() Unknown
00007ff9d67f4b78() Unknown
clr.dll!00007ffa35d46c23() Unknown
clr.dll!00007ffa35d46b38() Unknown
clr.dll!00007ffa35d47398() Unknown
clr.dll!00007ffa35db7cf9() Unknown
clr.dll!00007ffa35db86b3() Unknown
clr.dll!00007ffa35db8567() Unknown
clr.dll!00007ffa35db7eb3() Unknown
clr.dll!00007ffa35db7e31() Unknown
clr.dll!00007ffa35db8e84() Unknown
mscoreei.dll!00007ffaccb18c01() Unknown
mscoree.dll!00007ffaccbca56c() Unknown
kernel32.dll!00007ffaf8907bd4() Unknown
ntdll.dll!00007ffaf9a2ced1() Unknown

 

I have also attached a scene - just open and start the Phoenix simulation immediately.

 

Thank you in advance, cheers!

0 Likes
1,062 Views
6 Replies
  • SDK
Replies (6)
Message 2 of 7

denisT.MaxDoctor
Advisor
Advisor

so you need to ask Phoenix (Chaos Group) about it

0 Likes
Message 3 of 7

svetlin.nikolov
Participant
Participant

@denisT.MaxDoctor , I might not have been clear - the crash is entirely in 3ds Max's callstack. It seems to be triggered indirectly by us (Phoenix / ChaosGroup) just calling EvalWorldState() on this node, which is what has to be done for any scene node in order to interact with it. It also crashes only when it's displayed as Box.

 

If an Autodesk developer can reproduce it and shed some light on the problem, I would be very grateful.

 

Thanks in advance!

0 Likes
Message 4 of 7

denisT.MaxDoctor
Advisor
Advisor

How can I reproduce the problem without Phoenix? 

0 Likes
Message 5 of 7

svetlin.nikolov
Participant
Participant

Ah, have not tried yet to reproduce it without the sim. I was going to try and create a minimal plugin that calls SetTime() and EvalWorldState() repeatedly, but decided to ask here first if it's something obvious when traced with symbols.

 

A Phoenix trial is 30 days without any limitations and just expires in the end. You need a reg in chaosgroup.com, start the trial from here and it would forward you to the downloads - Phx installs in 10 secs and will also automatically install the CG license server.

 

If you are with Autodesk, please PM me and we'll get you a license ASAP - note that the software will not behave any differently though.

 

Cheers!

 

0 Likes
Message 6 of 7

attilaszabo
Alumni
Alumni

Hi @svetlin.nikolov , thanks for reporting this issue. 

We'll look into it and get in touch with you if we have questions.

 

Best regards,
Attila Szabo

Attila Szabo
Product Owner, 3ds Max
Autodesk
0 Likes
Message 7 of 7

svetlin.nikolov
Participant
Participant

Awesome! Thanks, guys!

0 Likes