Jump to content

engine.world.getIntersection may cause program block forever


photo

Recommended Posts

unigine_x86.dll!String::copy(const char * s, int len) Line 166 + 0x22 bytes C++

unigine_x86.dll!StringStack<1024>::StringStack<1024>(const char * s) Line 198 C++

unigine_x86.dll!FileSystem::validateFile(const char * n) Line 810 + 0xe bytes C++

unigine_x86.dll!RenderResourceMesh::createThread(int force) Line 271 + 0x17 bytes C++

unigine_x86.dll!RenderResource<Mesh>::get() Line 145 + 0xd bytes C++

unigine_x86.dll!RenderManager::get_resource(const RenderManagedPtr<Mesh> & ptr) Line 997 + 0x36 bytes C++

unigine_x86.dll!RenderManagedPtr<Mesh>::get() Line 352 + 0xe bytes C++

unigine_x86.dll!ObjectMesh::getCollision(const vec3 & p0, const vec3 & p1, Vector<int,int> & csurfaces) Line 108 + 0x17 bytes C++

unigine_x86.dll!World::getIntersection(const vec3 & p0, const vec3 & p1, int mask, const Vector<Node *,int> & exclude, vec3 & ret_point, vec3 & ret_normal, vec4 & ret_texcoord, int & ret_surface) Line 1201 C++

unigine_x86.dll!world_get_intersection_5(const vec3 & p0, const vec3 & p1, int mask, int exclude_id, int ret_id) Line 299 + 0x3c bytes C++

unigine_x86.dll!ExternFunction<TypeList<Object *,TypeList<vec3 const &,TypeList<vec3 const &,TypeList<int,TypeList<int,TypeList<int,TypeListEnd> > > > > >,Object * (__cdecl*)(vec3 const &,vec3 const &,int,int,int)>::do_run<TypeToType<Object *> >(Interpreter * i, TypeToType<Object *> __formal, TypeToType<Object *> __formal) Line 655 + 0x15 bytes C++

unigine_x86.dll!ExternFunction<TypeList<Object *,TypeList<vec3 const &,TypeList<vec3 const &,TypeList<int,TypeList<int,TypeList<int,TypeListEnd> > > > > >,Object * (__cdecl*)(vec3 const &,vec3 const &,int,int,int)>::run(Interpreter * interpreter) Line 588 C++

unigine_x86.dll!Interpreter::run(int begin) Line 5825 C++

unigine_x86.dll!Interpreter::runFunction(const char * name) Line 6456 C++

unigine_x86.dll!EngineInterpreter::runFunction(const char * name, int extensions) Line 364 + 0x14 bytes C++

unigine_x86.dll!World::update() Line 553 + 0x15 bytes C++

 

The application wait the file to load, but FileSystem::update always suspend the thread because filesystem_cache small

Link to comment

Related to this post. Actual problem is that Object::getCollision() is still a blocking call, which has to be "guarded" by Object::HasRender() at various code sections.

 

if( object->hasRender() 
{ 
   object->getCollision(); 
   ...
}

Link to comment

thanks, glad it has been fixed

 

It has been fixed for RenderScene::getIntersection(), but most probably NOT for some other calling code parts

 

  • World::getIntersection()
  • Physics::getIntersection()
  • PhysicsScene::getIntersection()
  • ...

 

so centralizing this test in Object::getCollision() might be a good idea.

Link to comment
  • 2 weeks later...

It has been fixed for RenderScene::getIntersection(), but most probably NOT for some other calling code parts

 

  • World::getIntersection()
  • Physics::getIntersection()
  • PhysicsScene::getIntersection()
  • ...

 

so centralizing this test in Object::getCollision() might be a good idea.

 

Then I guess thats how I sent the 'Samples' program in the Physics section of the evaluation kit into an infinite loop? :lol:

 

I was driving the car around, running over the ragdolls, then I jumped off one of the ramps and hit the ground pretty hard (a ground already littered with ragdolls). The wheels appeared to have literally 'blown off' the car, the body of the car was stuck in some weird orientation, and the sample froze. Appears to be burning 100% of one CPU core. Thread deadlock maybe? If there's anything I can provide that might help you guys out, let me know what I need to do.

 

The engine is performing very well so far, this is the first issue I've seen with it thus far--and I've gone through nearly all of the demos.

Link to comment
×
×
  • Create New...