critter in Commit: Haddock can not combile

planB

11-06-2010 09:47:47

hi!
i found the new critter in Commit: Haddock can not combile, it may not suit the new nxogre in Commit: Haddock .

am i right or just some other reason?

betajaen

11-06-2010 10:27:43

What is the error message?

planB

11-06-2010 13:22:15


error C2039: “RigidBodyType_USER_BEGIN”: is not the member of “NxOgre::Enums”
error C2039“ShapeDescription”: is not the member of “NxOgre”
error C2039: “UserBigClassAllocatable”: is not the member of “NxOgre”
.........

and some other errors because of these errors.

betajaen

11-06-2010 13:45:20

Looks like your using an old commit that isn't haddock, perhaps even using the wrong branch. (All the Detritus commits are under the Detritus branch).

Anyway, delete the old Critter and NxOgre directories, then download both of these, unzip to your dev directory. and compile.

http://github.com/betajaen/nxogre/zipball/detritus
http://github.com/betajaen/critter/zipball/master

planB

12-06-2010 04:31:28

it can combile now.

but it will crash down when use,

mWorld = NxOgre::World::createWorld();
NxOgre::ResourceSystem::getSingleton()->openProtocol(new Critter::OgreResourceProtocol());

//mWorld->getRemoteDebugger()->connect(); <----------------------------crash down firstly and then been commented

// Create the scene
NxOgre::SceneDescription scene_description;
scene_description.mGravity = NxOgre::Constants::MEAN_EARTH_GRAVITY;
scene_description.mUseHardware = false;
mScene = mWorld->createScene(scene_description);

// Set default material properties
mScene->getMaterial(0)->setAll(0.1, 0.9, 0.5);

// Create the rendersystem.
mRenderSystem = new Critter::RenderSystem(mScene, mSceneMgr); <----------------------------crash down here, no other clue

betajaen

12-06-2010 13:35:43

Do you get any error messages, or could you trace the error to the offending line?

planB

12-06-2010 14:35:51

there are no messages in ogre.log(no nxogre.log),
when i traced the error, when the app run to the line below, it will die directly
mRenderSystem = new Critter::RenderSystem(mScene, mSceneMgr);

the calling stack at the time of the crash:
> NxOgreDebug.dll!std::_Tree<std::_Tmap_traits<enum NxOgre::Enums::Priority,NxOgre::TimeListenerGroup *,std::less<enum NxOgre::Enums::Priority>,std::allocator<std::pair<enum NxOgre::Enums::Priority const ,NxOgre::TimeListenerGroup *> >,0> >::_Lbound(const NxOgre::Enums::Priority & _Keyval=Priority_MediumLow) line 1264 + 0x8 byte C++
NxOgreDebug.dll!std::_Tree<std::_Tmap_traits<enum NxOgre::Enums::Priority,NxOgre::TimeListenerGroup *,std::less<enum NxOgre::Enums::Priority>,std::allocator<std::pair<enum NxOgre::Enums::Priority const ,NxOgre::TimeListenerGroup *> >,0> >::lower_bound(const NxOgre::Enums::Priority & _Keyval=Priority_MediumLow) line 1004 + 0x10 byte C++
NxOgreDebug.dll!std::_Tree<std::_Tmap_traits<enum NxOgre::Enums::Priority,NxOgre::TimeListenerGroup *,std::less<enum NxOgre::Enums::Priority>,std::allocator<std::pair<enum NxOgre::Enums::Priority const ,NxOgre::TimeListenerGroup *> >,0> >::find(const NxOgre::Enums::Priority & _Keyval=Priority_MediumLow) line978 + 0x10 byte C++
NxOgreDebug.dll!NxOgre::map<enum NxOgre::Enums::Priority,NxOgre::TimeListenerGroup *,NxOgre::GC::HasGarbageCollection>::has(const NxOgre::Enums::Priority & key=Priority_MediumLow) line 216 + 0x3e byte C++
NxOgreDebug.dll!NxOgre::Scene::addRenderListener(NxOgre::TimeListener * listener=0x05b2f688, NxOgre::Enums::Priority priority=Priority_MediumLow) line 316 + 0x12 byte C++
test_nxogre.exe!Critter::RenderSystem::RenderSystem() + 0xcb byte
test_nxogre.exe!Ogre::BaseApplication::setupNxOgre() line 637 + 0x46 byte C++

betajaen

12-06-2010 15:10:39

You have PhysX and the PhysX SDK installed right? Because the crash on your remote debugger line is indicative of the SDK not being initialised.

planB

13-06-2010 00:40:03

yes, i installed the PhysX. i can run its sample and have created an environmental variable for PhysX like
PHYSX_DIR=D:\Develop\PhysX

i installed PhysX SDK 2.8.3 and PhysX_9.10.0129_SystemSoftware

when crash, the vs file xtree will open and point to the line below,

_Nodeptr _Lbound(const key_type& _Keyval) const
{// find leftmost node not less than _Keyval
_Nodeptr _Pnode = _Root(); <----------------------------crash down here
_Nodeptr _Wherenode = _Myhead; // end() if search fails
while (!_Isnil(_Pnode))
if (_DEBUG_LT_PRED(this->comp, _Key(_Pnode), _Keyval))
Pnode = _Right(_Pnode); // descend right subtree
else
{ // _Pnode not less than _Keyval, remember it
_Wherenode = _Pnode;
_Pnode = _Left(_Pnode); // descend left subtree
}

return (_Wherenode); // return best remembered candidate
}


when crash, the value of variable is like below,

+this 0x05b41928 {_Myhead=0xcdcd0101 _Mysize=4261281277 } const std::_Tree<std::_Tmap_traits<enum NxOgre::Enums::Priority,NxOgre::TimeListenerGroup *,std::less<enum NxOgre::Enums::Priority>,std::allocator<std::pair<enum NxOgre::Enums::Priority const ,NxOgre::TimeListenerGroup *> >,0> > * const
_Keyval Priority_MediumLow const NxOgre::Enums::Priority &
+Pnode 0x3c50898e {_Left=??? _Parent=??? _Right=??? ...} std::_Tree_nod<std::_Tmap_traits<enum NxOgre::Enums::Priority,NxOgre::TimeListenerGroup *,std::less<enum NxOgre::Enums::Priority>,std::allocator<std::pair<enum NxOgre::Enums::Priority const ,NxOgre::TimeListenerGroup *> >,0> >::_Node *
+_Wherenode 0x05b41928 {_Left=0x0012f4b4 _Parent=0x05b41928 _Right=0x05b41928 ...} std::_Tree_nod<std::_Tmap_traits<enum NxOgre::Enums::Priority,NxOgre::TimeListenerGroup *,std::less<enum NxOgre::Enums::Priority>,std::allocator<std::pair<enum NxOgre::Enums::Priority const ,NxOgre::TimeListenerGroup *> >,0> >::_Node *

the result in vs output window is like below,
“test_nxogre.exe”: loaded“C:\Program Files\NVIDIA Corporation\PhysX\Engine\v2.8.3\PhysXCooking.dll”
“test_nxogre.exe”: loaded“C:\WINDOWS\system32\wsock32.dll”
“test_nxogre.exe”:loaded“C:\Program Files\NVIDIA Corporation\PhysX\Engine\v2.8.3\PhysXCore.dll”
“test_nxogre.exe”: loaded“C:\Program Files\NVIDIA Corporation\PhysX\Common\cudart32_30_9.dll”,did not use the debug info to generate binary。
“test_nxogre.exe”: loaded“C:\Program Files\NVIDIA Corporation\PhysX\Common\PhysXDevice.dll”,did not use the debug info to generate binary。
“test_nxogre.exe”: loaded“C:\WINDOWS\system32\nvcuda.dll”,did not use the debug info to generate binary。
“test_nxogre.exe”: loaded“C:\WINDOWS\system32\nvapi.dll”

“test_nxogre.exe”: unloaded“C:\Program Files\NVIDIA Corporation\PhysX\Common\PhysXDevice.dll”

Unhandled exception at 0x01055124 (NxOgreDebug.dll) in test_nxogre.exe:0xC0000005: Access violation reading location 0xcdcd0105

planB

19-06-2010 02:49:03

i have checked the old Commit which before the Commit: Haddock, it can run and have no crash,
seems that only the Commit: Haddock will crash down.