[Solved] v2-2 ParticleSystem stall

Problems building or running the engine, queries about how to use features etc.
Post Reply
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

[Solved] v2-2 ParticleSystem stall

Post by dermont »

GL3/Linux/Nvidia.

I've recently updated to latest v2-2 branch to try out the updates for TextureGpu::copyTo.

The scene contains a v1 particle system. Since updating the render pipeline stalls/hangs after a few frames,
remove the particle system everything renders OK.

Previously I started with trying to create a screenshot for a RTT with Image2.convertFromTexture where the scene
contained a v1 particle system. Image2.convertFromTexture only appears to handle certain pixel formats/textures.

What would be the correct way to create a screenshot for a RTT/RenderWindow?

I asked before regarding the copy ctor for Image2, is this correct.

Code: Select all

Image2( const Image &img );
Last edited by dermont on Wed Mar 07, 2018 1:07 am, edited 1 time in total.
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5299
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1280
Contact:

Re: v2-2 ParticleSystem stall

Post by dark_sylinc »

I'm not sure I understand.

Are you asking how to save an RTT to disk? (TextureGpu::writeContentsToFile)
Or are you asking how to efficiently save a sequence of images (like a video) by continously downloading the RTT to CPU every frame?

Edit:
Previously I started with trying to create a screenshot for a RTT with Image2.convertFromTexture where the scene
contained a v1 particle system. Image2.convertFromTexture only appears to handle certain pixel formats/textures.
What do you mean by this? It should be handling all types of formats and resolutions? (anything else is a bug).
Note however, saving it to a disk may pose compatibility issues (for example, saving a PFG_RGBA16_FLOAT to PNG will fail because the file format doesn't support such format, and the file formats that could support it are in codecs that haven't been ported yet)
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5299
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1280
Contact:

Re: v2-2 ParticleSystem stall

Post by dark_sylinc »

If it's the latter (efficiently save a sequence of images (like a video) by continously downloading the RTT to CPU every frame), then you need to do what Image2::convertFromTexture does, however:
  • There's no need to call texture->waitForData if it's a RenderTexture
  • Image2 creates an AsyncTextureTicket, calls download, then immediately proceeds to map the async ticket. This causes a stall.
  • To prevent the stall, you need to create 2/3 tickets (double buffer / triple buffer) which you'll keep forever around. You call download() with accurateTracking set to false at frame N, and call map/unmap at frame N+3. This way you can keep continuously downloading the RTT results without stalling (at N+3, canMapMoreThanOneSlice should be returning false) but the results will be lagging 2-3 frames behind. The limiting factor could become the bus bandwidth or much more likely the disk write speed (if you save the contents to file). You only need to destroy these tickets if the RTT gets resized, you're done capturing, or you're closing the application.
Cheers.
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: v2-2 ParticleSystem stall

Post by dermont »

Yes like writeContentsToFile, I didn't see that method. This was my code as a starting point. I first tested RTT
class ScreenShotTextureGpuListener: public Ogre::TextureGpuListener
{
public:
ScreenShotTextureGpuListener() : Ogre::TextureGpuListener()
{

}
static void saveToFile( TextureGpu *texture, const Ogre::String& name )
{
if (texture->getResidencyStatus() == Ogre::GpuResidency::Resident) {
Ogre::Image2 image2;
image2.convertFromTexture(texture , 0,0);
image2.save(name,0,0);
}
}
// for textures with listeners
void notifyTextureChanged( TextureGpu *texture, TextureGpuListener::Reason reason )
{
if (reason == Ogre::TextureGpuListener::Reason::ReadyForDisplay)
{
ScreenShotTextureGpuListener::saveToFile(texture, "TEST.png");
texture->removeListener(this);
}
}
This the what the renderwindow looks like:
https://ibb.co/e0PMDG


This is the screenshot/output from "saveToFile"
https://ibb.co/fM3nnb
https://ibb.co/fssu0w
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: v2-2 ParticleSystem stall

Post by dermont »

Just tried "writeContentsToFile" with Workspace->getFinalTarget() and a RTT texture, both saved correctly. There must have been something wrong in my code, sorry for the noise.

I'll try the saving the texture for a (RTT/ParticleSystem) if I can track down the problem the ParticleSytem.
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5299
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1280
Contact:

Re: v2-2 ParticleSystem stall

Post by dark_sylinc »

I will rename ReadyForDisplay because I see the confusion it just caused.

Basically if you download an RTT when you get that message, you'll be downloading an empty texture, or something halfway.

That message should be renamed to ReadyForRendering and documentation more clear, since it's meant for regular textures informing they're done loading in a background thread, not that an RTT has finished rendering and is ready to be presented to the monitor.

Edit: Renamed and clarified. Thanks for the feedback.
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: v2-2 ParticleSystem stall

Post by dermont »

I'm still having problems with particle systems and v2-2. Is there known issues?

This is the example code, similar code works on 2.1:

Code: Select all

    //------------------------------------------------------------------------------------------------
    void createParticleSystem(void)
    {
        // create our unlit datablock
        Ogre::HlmsManager* hlmsManager = Ogre::Root::getSingletonPtr()->getHlmsManager();
        Ogre::HlmsUnlit* hlmsUnlit = static_cast<Ogre::HlmsUnlit*>(hlmsManager->getHlms(Ogre::HLMS_UNLIT));
        {
            // set up material/datablock
            Ogre::HlmsBlendblock blendBlock;
            blendBlock.mSourceBlendFactor = Ogre::SBF_SOURCE_ALPHA;
            blendBlock.mDestBlendFactorAlpha = Ogre::SBF_ONE_MINUS_SOURCE_ALPHA;
            blendBlock.setBlendType( Ogre::SBT_TRANSPARENT_ALPHA );
            blendBlock.mBlendOperation = Ogre::SBO_ADD;
            blendBlock.mSeparateBlend=false;
            blendBlock.mBlendChannelMask = Ogre::HlmsBlendblock::BlendChannelRed | Ogre::HlmsBlendblock::BlendChannelGreen \
                                                 | Ogre::HlmsBlendblock::BlendChannelBlue | Ogre::HlmsBlendblock::BlendChannelAlpha;

            Ogre::HlmsMacroblock macroBlock;
            macroBlock.mDepthCheck=true;
            macroBlock.mDepthWrite=false;
            macroBlock.mDepthFunc=Ogre::CMPF_LESS;

            Ogre::HlmsSamplerblock samplerBlock;
            samplerBlock.mU=Ogre::TAM_CLAMP;
            samplerBlock.mV=Ogre::TAM_CLAMP;
            samplerBlock.mW=Ogre::TAM_CLAMP;
            samplerBlock.mCompareFunction = Ogre::CMPF_LESS;
            //samplerBlock.mBorderColour = Ogre::ColourValue( 0.0, 1.0, 1.0, 0.5 );


            Ogre::HlmsUnlit* hlmsUnlit = static_cast<Ogre::HlmsUnlit*>(hlmsManager->getHlms(Ogre::HLMS_UNLIT));
            Ogre::String datablockName = "ParticleSmoke";
            Ogre::HlmsUnlitDatablock* datablock = static_cast<Ogre::HlmsUnlitDatablock*>( hlmsUnlit->createDatablock( 
                        Ogre::IdString(datablockName),
                        datablockName,
                        macroBlock,
                        blendBlock,
                        Ogre::HlmsParamVec()));
            datablock->setTexture( 0 , "smoke.png" );
            datablock->setTextureUvSource( 0 , 0 );


            // create particle system
            Ogre::ParticleSystem* particleSystem = mSceneManager->createParticleSystem( 500 );
            particleSystem->setName("Smoke");
            particleSystem->setDefaultDimensions(1,1);
            particleSystem->setIterationInterval(0.033);
            particleSystem->setKeepParticlesInLocalSpace(false);
            particleSystem->setParameter("sorted", "true" );
            particleSystem->setParameter("particle_width", "1" );
            particleSystem->setParameter("particle_height", "1" );
            particleSystem->setParameter("cull_each", "true" );
            particleSystem->setParameter("quota", "500" );
            particleSystem->setParameter("billboard_type", "billboard" );

            // create point emitter
            Ogre::ParticleEmitter* emitterPoint = particleSystem->addEmitter("Point");
            emitterPoint->setParameter("direction", "0 1 0" );
            emitterPoint->setParameter("position", "0 15 -15" );
            emitterPoint->setParameter("angle", "35" );
            emitterPoint->setParameter("emission_rate", "15");
            emitterPoint->setParameter("time_to_live", "4");
            emitterPoint->setParameter("velocity_min", "50");
            emitterPoint->setParameter("velocity_max", "80"); 
            emitterPoint->setParameter("time_to_live", "4"); 


            // create scaler affector
            Ogre::ParticleAffector* affectorScalar = particleSystem->addAffector("Scaler");
            affectorScalar->setParameter("rate", "50");

            // create colour image affector -- THIS WILL CRASH, uses image codec 1
            //Ogre::ParticleAffector* affectorImage = particleSystem->addAffector("ColourImage");
            //affectorImage->setParameter("image", "smokecolors.png");

            // create rotator affector
            Ogre::ParticleAffector* affectorRotator = particleSystem->addAffector("Rotator");
            affectorRotator->setParameter("rotation_range_start", "0");
            affectorRotator->setParameter("rotation_range_end", "360");
            affectorRotator->setParameter("rotation_speed_range_start", "-60");
            affectorRotator->setParameter("rotation_speed_range_end", "200");

            particleSystem->setMaterialName("ParticleSmoke");

            // add particle system to fast quue
            mSceneManager->getRenderQueue()->setRenderQueueMode( 5, Ogre::RenderQueue::V1_FAST );
            particleSystem->setRenderQueueGroup( 5 );

            particleSceneNode = mSceneManager->getRootSceneNode( Ogre::SCENE_DYNAMIC )->
                        createChildSceneNode( Ogre::SCENE_DYNAMIC );
            particleSceneNode->attachObject( particleSystem );
            particleSceneNode->setPosition(0.0f, 0.0f, 0.0f);
            particleSceneNode->_getDerivedOrientationUpdated();

        }
      }  
This is link to to apitrace output (1.1mb):
https://drive.google.com/file/d/1sY4I1n ... sp=sharing

Running a number of times, stall occurs in different places. I have to Ctr+C at terminal, debug only shows details of the point at which I press Ctrl+C. Any advice on how to debug this.
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5299
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1280
Contact:

Re: v2-2 ParticleSystem stall

Post by dark_sylinc »

Sounds like the known issue caused by lack of metadata cache.

Basically, what you're seeing is the particle FX getting a shader for a version with dummy texture, and then a new shader for the version with the loaded texture. The stall is caused by shader recompilation.

It happens at different places because the texture is loaded in background, so sometimes it gets loaded sooner, sometimes later; and when that finishes the new shader gets compiled. The metadata cache will prevent this recompilation nonsense.
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5299
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1280
Contact:

Re: v2-2 ParticleSystem stall

Post by dark_sylinc »

Wait!
Are you talking about a small stutter stall, or a "full process freeze" that is unrecoverable (you have to kill the process)?

If the latter, and you're running on latest Mesa in Linux, it's possible you've run into this: https://bugs.freedesktop.org/show_bug.cgi?id=105339. Scratch that, you're using NVIDIA.


If it's a full process freeze, my next guess is that the background thread is throwing an exception, which is currently wreaking havoc in 2.2 (it will silently kill the background thread).

You may find more information by defining OGRE_FORCE_TEXTURE_STREAMING_ON_MAIN_THREAD in OgreMain/src/OgreTextureGpuManager.cpp to troubleshoot (see the doxygen's markdown manual section about 2.2).
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: v2-2 ParticleSystem stall

Post by dermont »

dark_sylinc wrote: Tue Mar 06, 2018 2:51 am If the latter, and you're running on latest Mesa in Linux, it's possible you've run into this: https://bugs.freedesktop.org/show_bug.cgi?id=105339. Scratch that, you're using NVIDIA.
Nvidia 390.25 (glvnd), tried with various driver versions.
dark_sylinc wrote: Tue Mar 06, 2018 2:51 am Wait!
Are you talking about a small stutter stall, or a "full process freeze" that is unrecoverable (you have to kill the process)?
The render window becomes unresponsive (freezes) and only part of the particle system is rendered. This can happen after running for a few frames or 500 hundred frames.
I have to press Ctrl+C from the terminal/ running gdb/apitrace or valgrind.
dark_sylinc wrote: Tue Mar 06, 2018 2:51 am If it's a full process freeze, my next guess is that the background thread is throwing an exception, which is currently wreaking havoc in 2.2 (it will silently kill the background thread).

You may find more information by defining OGRE_FORCE_TEXTURE_STREAMING_ON_MAIN_THREAD in OgreMain/src/OgreTextureGpuManager.cpp to troubleshoot (see the doxygen's markdown manual section about 2.2).
Already tried defining OGRE_FORCE_TEXTURE_STREAMING_ON_MAIN_THREAD, didn't help much, gdb/backtrace reports different info each run.

valgrind memcheck:

Code: Select all

==15955== Memcheck, a memory error detector
==15955== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==15955== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==15955== Command: ./Particle
==15955== Parent PID: 15692
==15955== 
==15955== 
==15955== Process terminating with default action of signal 2 (SIGINT)
==15955==    at 0x7CC5760: futex_wait (futex-internal.h:61)
==15955==    by 0x7CC5760: futex_wait_simple (futex-internal.h:135)
==15955==    by 0x7CC5760: pthread_barrier_wait (pthread_barrier_wait.c:184)
==15955==    by 0x58FA3CB: Ogre::Barrier::sync() (OgreBarrierPThreads.cpp:110)
==15955==    by 0x56BED8E: Ogre::SceneManager::_updateWorkerThread(Ogre::ThreadHandle*) (OgreSceneManager.cpp:5036)
==15955==    by 0x56BEB48: Ogre::updateWorkerThread(Ogre::ThreadHandle*) (OgreSceneManager.cpp:4999)
==15955==    by 0x56BEB73: Ogre::updateWorkerThread_internal(void*) (OgreSceneManager.cpp:5001)
==15955==    by 0x7CBD7FB: start_thread (pthread_create.c:465)
==15955==    by 0x6D16B5E: clone (clone.S:95)
==15955== 
==15955== HEAP SUMMARY:
==15955==     in use at exit: 442,764,834 bytes in 17,268 blocks
==15955==   total heap usage: 183,765 allocs, 166,497 frees, 962,471,355 bytes allocated
==15955== 
==15955== LEAK SUMMARY:
==15955==    definitely lost: 0 bytes in 0 blocks
==15955==    indirectly lost: 0 bytes in 0 blocks
==15955==      possibly lost: 434,059,294 bytes in 4,426 blocks
==15955==    still reachable: 8,705,540 bytes in 12,842 blocks
==15955==                       of which reachable via heuristic:
==15955==                         newarray           : 16 bytes in 1 blocks
==15955==                         multipleinheritance: 6,600 bytes in 7 blocks
==15955==         suppressed: 0 bytes in 0 blocks
==15955== Rerun with --leak-check=full to see details of leaked memory
==15955== 
==15955== For counts of detected and suppressed errors, rerun with: -v
==15955== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
gdb

Code: Select all

^C
Thread 1 "Particle" received signal SIGINT, Interrupt.
0x00007ffff73138ae in Ogre::Particle::setDimensions (this=0x55555600b490, 
    width=113.200066, height=113.200066)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticle.cpp:49
49            mParentSystem->_notifyParticleResized();
===================
(gdb) bt
===================
#0  0x00007ffff73138ae in Ogre::Particle::setDimensions (this=0x55555600b490, 
    width=113.200066, height=113.200066)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticle.cpp:49
#1  0x00007fffed28aa05 in Ogre::ScaleAffector::_affectParticles (
    this=0x555555cac880, pSystem=0x555555fd6030, timeElapsed=0.0329999998)
    at /media/sdb5/Libraries/OGRE/src/v2-2/PlugIns/ParticleFX/src/OgreScaleAffector.cpp:83
#2  0x00007ffff731bf7f in Ogre::ParticleSystem::_triggerAffectors (
    this=0x555555fd6030, timeElapsed=0.0329999998)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticleSystem.cpp:637
#3  0x00007ffff731ae7b in Ogre::ParticleSystem::_update (this=0x555555fd6030, 
    timeElapsed=1.8446744e+13)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticleSystem.cpp:385
#4  0x00007ffff73207aa in Ogre::ParticleSystemUpdateValue::setValue (
    this=0x555555cadbb0, value=1.8446744e+13)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticleSystem.cpp:76
#5  0x00007ffff70e24cf in Ogre::Controller<float>::update (this=0x555555fdd720)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/include/OgreController.h:223
#6  0x00007ffff70e0da0 in Ogre::ControllerManager::updateAllControllers (
---Type <return> to continue, or q <return> to quit---
    this=0x55555589cb60)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreControllerManager.cpp:84
#7  0x00007ffff73fef85 in Ogre::SceneManager::updateSceneGraph (
    this=0x555555caf300)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreSceneManager.cpp:2688
#8  0x00007ffff73e1257 in Ogre::Root::renderOneFrame (this=0x5555557a3e50)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreRoot.cpp:1085
#9  0x0000555555564c82 in SampleApplication::loop (this=0x5555557a3de0)
    at /media/sdb11/OGREDEMOS2.2/Particle/SampleApplication.h:381
#10 0x0000555555562439 in main (argc=1, argv=0x7fffffffda18)
    at /media/sdb11/OGREDEMOS2.2/Particle/ParticleDemo.cpp:558

===================
(gdb) info threads
===================
  Id   Target Id         Frame 
* 1    Thread 0x7ffff7f91040 (LWP 15872) "Particle" 0x00007ffff73138ae in Ogre::Particle::setDimensions (this=0x55555600b490, width=113.200066, 
    height=113.200066)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticle.cpp:49
  2    Thread 0x7fffd1fcb700 (LWP 15876) "Particle" 0x00007ffff4d4b760 in futex_wait (private=0, expected=7788, futex_word=0x555555c9fd74)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:61


==============================
(gdb) thread apply all bt
==============================

Thread 2 (Thread 0x7fffd1fcb700 (LWP 15876)):
#0  0x00007ffff4d4b760 in futex_wait (private=0, expected=7788, 
    futex_word=0x555555c9fd74)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:61
#1  futex_wait_simple (private=0, expected=7788, futex_word=0x555555c9fd74)
    at ../sysdeps/nptl/futex-internal.h:135
#2  __pthread_barrier_wait (barrier=0x555555c9fd70)
    at pthread_barrier_wait.c:184
#3  0x00007ffff76433cc in Ogre::Barrier::sync (this=0x555555c9fd70)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/Threading/OgreBarrierPThreads.cpp:110
#4  0x00007ffff7407d8f in Ogre::SceneManager::_updateWorkerThread (
    this=0x555555caf300, threadHandle=0x555555c86b60)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreSceneManager.cpp:5036
#5  0x00007ffff7407b49 in Ogre::updateWorkerThread (
    threadHandle=0x555555c86b60)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreSceneManager.cpp:4999
#6  0x00007ffff7407b74 in Ogre::updateWorkerThread_internal (
    argName=0x555555c86b60)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreSceneManager.cpp:500---Type <return> to continue, or q <return> to quit---
1
#7  0x00007ffff4d437fc in start_thread (arg=0x7fffd1fcb700)
    at pthread_create.c:465
#8  0x00007ffff5d43b5f in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Thread 1 (Thread 0x7ffff7f91040 (LWP 15872)):
#0  0x00007ffff73138ae in Ogre::Particle::setDimensions (this=0x55555600b490, 
    width=113.200066, height=113.200066)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticle.cpp:49
#1  0x00007fffed28aa05 in Ogre::ScaleAffector::_affectParticles (
    this=0x555555cac880, pSystem=0x555555fd6030, timeElapsed=0.0329999998)
    at /media/sdb5/Libraries/OGRE/src/v2-2/PlugIns/ParticleFX/src/OgreScaleAffector.cpp:83
#2  0x00007ffff731bf7f in Ogre::ParticleSystem::_triggerAffectors (
    this=0x555555fd6030, timeElapsed=0.0329999998)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticleSystem.cpp:637
#3  0x00007ffff731ae7b in Ogre::ParticleSystem::_update (this=0x555555fd6030, 
    timeElapsed=1.8446744e+13)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticleSystem.cpp:385
#4  0x00007ffff73207aa in Ogre::ParticleSystemUpdateValue::setValue (
---Type <return> to continue, or q <return> to quit---
    this=0x555555cadbb0, value=1.8446744e+13)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticleSystem.cpp:76
#5  0x00007ffff70e24cf in Ogre::Controller<float>::update (this=0x555555fdd720)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/include/OgreController.h:223
#6  0x00007ffff70e0da0 in Ogre::ControllerManager::updateAllControllers (
    this=0x55555589cb60)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreControllerManager.cpp:84
#7  0x00007ffff73fef85 in Ogre::SceneManager::updateSceneGraph (
    this=0x555555caf300)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreSceneManager.cpp:2688
#8  0x00007ffff73e1257 in Ogre::Root::renderOneFrame (this=0x5555557a3e50)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreRoot.cpp:1085
#9  0x0000555555564c82 in SampleApplication::loop (this=0x5555557a3de0)
    at /media/sdb11/OGREDEMOS2.2/Particle/SampleApplication.h:381
#10 0x0000555555562439 in main (argc=1, argv=0x7fffffffda18)
    at /media/sdb11/OGREDEMOS2.2/Particle/ParticleDemo.cpp:558



Run gdb again
===============

^C
Thread 1 "Particle" received signal SIGINT, Interrupt.
0x00007fffed28a36a in Ogre::operator* (a=0.0329999998, b=...)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/include/OgreMath.h:795
795            return Radian ( a * b.valueRadians() );
(gdb) bt
#0  0x00007fffed28a36a in Ogre::operator* (a=0.0329999998, b=...)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/include/OgreMath.h:795
#1  0x00007fffed289bf1 in Ogre::RotationAffector::_affectParticles (
    this=0x555555fd5fd0, pSystem=0x555555fd6040, timeElapsed=0.0329999998)
    at /media/sdb5/Libraries/OGRE/src/v2-2/PlugIns/ParticleFX/src/OgreRotationAffector.cpp:104
#2  0x00007ffff731bf7f in Ogre::ParticleSystem::_triggerAffectors (
    this=0x555555fd6040, timeElapsed=0.0329999998)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticleSystem.cpp:637
#3  0x00007ffff731ae7b in Ogre::ParticleSystem::_update (this=0x555555fd6040, 
    timeElapsed=1.8446744e+13)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticleSystem.cpp:385
#4  0x00007ffff73207aa in Ogre::ParticleSystemUpdateValue::setValue (
    this=0x555555cadbc0, value=1.8446744e+13)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreParticleSystem.cpp:76
#5  0x00007ffff70e24cf in Ogre::Controller<float>::update (this=0x555555fdd730)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/include/OgreController.h:223
#6  0x00007ffff70e0da0 in Ogre::ControllerManager::updateAllControllers (
    this=0x55555589cb60)
---Type <return> to continue, or q <return> to quit---
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreControllerManager.cpp:84
#7  0x00007ffff73fef85 in Ogre::SceneManager::updateSceneGraph (
    this=0x555555caf310)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreSceneManager.cpp:2688
#8  0x00007ffff73e1257 in Ogre::Root::renderOneFrame (this=0x5555557a3e50)
    at /media/sdb5/Libraries/OGRE/src/v2-2/OgreMain/src/OgreRoot.cpp:1085
#9  0x0000555555564c82 in SampleApplication::loop (this=0x5555557a3de0)
    at /media/sdb11/OGREDEMOS2.2/Particle/SampleApplication.h:381
#10 0x0000555555562439 in main (argc=1, argv=0x7fffffffda18)
    at /media/sdb11/OGREDEMOS2.2/Particle/ParticleDemo.cpp:558
helgrind

Code: Select all

==16080== Helgrind, a thread error detector
==16080== Copyright (C) 2007-2017, and GNU GPL'd, by OpenWorks LLP et al.
==16080== Using Valgrind-3.13.0 and LibVEX; rerun with -h for copyright info
==16080== Command: ./Particle
==16080== Parent PID: 15692
==16080== 
--16080-- 
--16080-- Valgrind options:
--16080--    --tool=helgrind
--16080--    -v
--16080--    --log-file=matias/helgrind.log
--16080-- Contents of /proc/version:
--16080--   Linux version 4.13.0-36-generic (buildd@lcy01-amd64-017) (gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3.2)) #40-Ubuntu SMP Fri Feb 16 20:07:48 UTC 2018
--16080-- 
--16080-- Arch and hwcaps: AMD64, LittleEndian, amd64-cx16-lzcnt-rdtscp-sse3-avx-avx2-bmi
--16080-- Page sizes: currently 4096, max supported 4096
--16080-- Valgrind library directory: /usr/lib/valgrind
--16080-- Reading syms from /media/sdb11/OGREDEMOS2.2/Particle/Particle
--16080-- Reading syms from /lib/x86_64-linux-gnu/ld-2.26.so
--16080--   Considering /lib/x86_64-linux-gnu/ld-2.26.so ..
--16080--   .. CRC mismatch (computed 89c8df08 wanted 47b839f9)
--16080--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/ld-2.26.so ..
--16080--   .. CRC is valid
--16080-- Reading syms from /usr/lib/valgrind/helgrind-amd64-linux
--16080--   Considering /usr/lib/valgrind/helgrind-amd64-linux ..
--16080--   .. CRC mismatch (computed 0631eea3 wanted 932b67e7)
--16080--    object doesn't have a symbol table
--16080--    object doesn't have a dynamic symbol table
--16080-- Scheduler: using generic scheduler lock implementation.
--16080-- Reading suppressions file: /usr/lib/valgrind/default.supp
==16080== embedded gdbserver: reading from /tmp/vgdb-pipe-from-vgdb-to-16080-by-dermont-on-???
==16080== embedded gdbserver: writing to   /tmp/vgdb-pipe-to-vgdb-from-16080-by-dermont-on-???
==16080== embedded gdbserver: shared mem   /tmp/vgdb-pipe-shared-mem-vgdb-16080-by-dermont-on-???
==16080== 
==16080== TO CONTROL THIS PROCESS USING vgdb (which you probably
==16080== don't want to do, unless you know exactly what you're doing,
==16080== or are doing some strange experiment):
==16080==   /usr/lib/valgrind/../../bin/vgdb --pid=16080 ...command...
==16080== 
==16080== TO DEBUG THIS PROCESS USING GDB: start GDB like this
==16080==   /path/to/gdb ./Particle
==16080== and then give GDB the following command
==16080==   target remote | /usr/lib/valgrind/../../bin/vgdb --pid=16080
==16080== --pid is optional if only one valgrind process is running
==16080== 
--16080-- Reading syms from /usr/lib/valgrind/vgpreload_core-amd64-linux.so
--16080--   Considering /usr/lib/valgrind/vgpreload_core-amd64-linux.so ..
--16080--   .. CRC mismatch (computed f3fb86a7 wanted 0b99f9ab)
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so
--16080--   Considering /usr/lib/valgrind/vgpreload_helgrind-amd64-linux.so ..
--16080--   .. CRC mismatch (computed a121a7da wanted b6b0f214)
--16080--    object doesn't have a symbol table
--16080-- REDIR: 0x401d8d0 (ld-linux-x86-64.so.2:strcmp) redirected to 0x4c39c00 (strcmp)
--16080-- REDIR: 0x401f860 (ld-linux-x86-64.so.2:strlen) redirected to 0x4c38e90 (strlen)
--16080-- REDIR: 0x401fda0 (ld-linux-x86-64.so.2:mempcpy) redirected to 0x4c3c6a0 (mempcpy)
--16080-- Reading syms from /media/sdb5/Libraries/OGRE/sdk/v2-2/lib/libOgreOverlay_d.so.2.2.0
--16080-- Reading syms from /media/sdb5/Libraries/OGRE/sdk/v2-2/lib/libOgreMain_d.so.2.2.0
--16080-- Reading syms from /media/sdb5/Libraries/OGRE/sdk/v2-2/lib/libOgreHlmsPbs_d.so.2.2.0
--16080-- Reading syms from /media/sdb5/Libraries/OGRE/sdk/v2-2/lib/libOgreHlmsUnlit_d.so.2.2.0
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.24
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /lib/x86_64-linux-gnu/libm-2.26.so
--16080--   Considering /lib/x86_64-linux-gnu/libm-2.26.so ..
--16080--   .. CRC mismatch (computed b616e9a5 wanted 56d31e5b)
--16080--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libm-2.26.so ..
--16080--   .. CRC is valid
--16080-- Reading syms from /lib/x86_64-linux-gnu/libgcc_s.so.1
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /lib/x86_64-linux-gnu/libc-2.26.so
--16080--   Considering /lib/x86_64-linux-gnu/libc-2.26.so ..
--16080--   .. CRC mismatch (computed b6c34c34 wanted f79829d1)
--16080--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libc-2.26.so ..
--16080--   .. CRC is valid
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libfreetype.so.6.14.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libX11.so.6.3.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXt.so.6.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXaw7.so.7.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXrandr.so.2.2.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /lib/x86_64-linux-gnu/libpthread-2.26.so
--16080--   Considering /usr/lib/debug/.build-id/b9/5ecb6ece407081730183e686ff6cf2e0bce4f6.debug ..
--16080--   .. build-id is valid
==16080== WARNING: new redirection conflicts with existing -- ignoring it
--16080--     old: 0x07ccb4a0 (pthread_spin_init   ) W-> (0000.0) 0x04c38450 pthread_spin_init
--16080--     new: 0x07ccb4a0 (pthread_spin_init   ) W-> (0000.0) 0x04c38460 pthread_spin_unlock
==16080== WARNING: new redirection conflicts with existing -- ignoring it
--16080--     old: 0x07ccd0e0 (sem_wait@@GLIBC_2.2.) W-> (0000.0) 0x04c38540 sem_wait@*
--16080--     new: 0x07ccd0e0 (sem_wait@@GLIBC_2.2.) W-> (0000.0) 0x04c38530 sem_wait
==16080== WARNING: new redirection conflicts with existing -- ignoring it
--16080--     old: 0x07ccd440 (sem_post@@GLIBC_2.2.) W-> (0000.0) 0x04c38560 sem_post@*
--16080--     new: 0x07ccd440 (sem_post@@GLIBC_2.2.) W-> (0000.0) 0x04c38550 sem_post
--16080-- Reading syms from /lib/x86_64-linux-gnu/libdl-2.26.so
--16080--   Considering /lib/x86_64-linux-gnu/libdl-2.26.so ..
--16080--   .. CRC mismatch (computed 4752ccc3 wanted 4a46c849)
--16080--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/libdl-2.26.so ..
--16080--   .. CRC is valid
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libfreeimage-3.17.0.so
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libzzip-0.so.13.0.62
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /lib/x86_64-linux-gnu/libz.so.1.2.11
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libpng16.so.16.34.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libxcb.so.1.1.0
--16080--   Considering /usr/lib/debug/.build-id/f7/c5206adedb40fa168f9ee4122a32679931b957.debug ..
--16080--   .. build-id is valid
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libSM.so.6.0.1
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libICE.so.6.3.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0
--16080--   Considering /usr/lib/x86_64-linux-gnu/libXext.so.6.4.0 ..
--16080--   .. CRC mismatch (computed b483887a wanted 38c83e44)
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXmu.so.6.2.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXpm.so.4.11.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXrender.so.1.3.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libjxrglue.so.1.1
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libjpeg.so.8.1.2
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libopenjp2.so.2.2.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libraw.so.16.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libtiff.so.5.2.6
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libwebpmux.so.3.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libwebp.so.6.0.1
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libIlmImf-2_2.so.22.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libHalf.so.12.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libIex-2_2.so.12.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0
--16080--   Considering /usr/lib/x86_64-linux-gnu/libXau.so.6.0.0 ..
--16080--   .. CRC mismatch (computed 256f5df8 wanted 5d40ac88)
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXdmcp.so.6.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /lib/x86_64-linux-gnu/libuuid.so.1.3.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /lib/x86_64-linux-gnu/libbsd.so.0.8.6
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libjpegxr.so.1.1
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/liblcms2.so.2.0.7
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libgomp.so.1.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /lib/x86_64-linux-gnu/liblzma.so.5.2.2
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libjbig.so.0
--16080--   Considering /usr/lib/x86_64-linux-gnu/libjbig.so.0 ..
--16080--   .. CRC mismatch (computed 62ceb709 wanted f6cb0ad8)
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libIlmThread-2_2.so.12.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /lib/x86_64-linux-gnu/librt-2.26.so
--16080--   Considering /lib/x86_64-linux-gnu/librt-2.26.so ..
--16080--   .. CRC mismatch (computed f039fd36 wanted 94d93c2a)
--16080--   Considering /usr/lib/debug/lib/x86_64-linux-gnu/librt-2.26.so ..
--16080--   .. CRC is valid
--16080-- REDIR: 0x6c9cf50 (libc.so.6:memmove) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9c010 (libc.so.6:strncpy) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9d230 (libc.so.6:strcasecmp) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9ba60 (libc.so.6:strcat) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9c040 (libc.so.6:rindex) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9ebb0 (libc.so.6:rawmemchr) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9d0c0 (libc.so.6:mempcpy) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9cee0 (libc.so.6:bcmp) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9bfd0 (libc.so.6:strncmp) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9bad0 (libc.so.6:strcmp) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9d020 (libc.so.6:memset) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6cbaf10 (libc.so.6:wcschr) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9bf70 (libc.so.6:strnlen) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9bb40 (libc.so.6:strcspn) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9d280 (libc.so.6:strncasecmp) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9bb10 (libc.so.6:strcpy) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9d3c0 (libc.so.6:memcpy@@GLIBC_2.14) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9c070 (libc.so.6:strpbrk) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9ba90 (libc.so.6:index) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9bf40 (libc.so.6:strlen) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6ca7510 (libc.so.6:memrchr) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9d2d0 (libc.so.6:strcasecmp_l) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9ceb0 (libc.so.6:memchr) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6cbbcc0 (libc.so.6:wcslen) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9c350 (libc.so.6:strspn) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9d200 (libc.so.6:stpncpy) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9d1d0 (libc.so.6:stpcpy) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9ebe0 (libc.so.6:strchrnul) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6c9d320 (libc.so.6:strncasecmp_l) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6d2c490 (libc.so.6:__memmove_chk) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6d2c3c0 (libc.so.6:__memcpy_chk) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
==16080== WARNING: new redirection conflicts with existing -- ignoring it
--16080--     old: 0x06d86df0 (__memcpy_chk_avx_una) R-> (2024.0) 0x04c3c390 __memmove_chk
--16080--     new: 0x06d86df0 (__memcpy_chk_avx_una) R-> (2030.0) 0x04c3c700 __memcpy_chk
==16080== WARNING: new redirection conflicts with existing -- ignoring it
--16080--     old: 0x06d86df0 (__memcpy_chk_avx_una) R-> (2024.0) 0x04c3c390 __memmove_chk
--16080--     new: 0x06d86df0 (__memcpy_chk_avx_una) R-> (2030.0) 0x04c3c700 __memcpy_chk
--16080-- REDIR: 0x6c9cdf0 (libc.so.6:strstr) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
==16080== WARNING: new redirection conflicts with existing -- ignoring it
--16080--     old: 0x06d86df0 (__memcpy_chk_avx_una) R-> (2024.0) 0x04c3c390 __memmove_chk
--16080--     new: 0x06d86df0 (__memcpy_chk_avx_una) R-> (2030.0) 0x04c3c700 __memcpy_chk
--16080-- REDIR: 0x6d866f0 (libc.so.6:__strrchr_avx2) redirected to 0x4c38a40 (rindex)
--16080-- REDIR: 0x6c96eb0 (libc.so.6:malloc) redirected to 0x4c30ec0 (malloc)
--16080-- REDIR: 0x6d868c0 (libc.so.6:__strlen_avx2) redirected to 0x4c38dd0 (strlen)
--16080-- REDIR: 0x6d86e00 (libc.so.6:__memcpy_avx_unaligned_erms) redirected to 0x4c3bad0 (memmove)
--16080-- REDIR: 0x6c973e0 (libc.so.6:free) redirected to 0x4c320f0 (free)
--16080-- REDIR: 0x6d87280 (libc.so.6:__memset_avx2_unaligned_erms) redirected to 0x4c3b9c0 (memset)
--16080-- REDIR: 0x6d82ed0 (libc.so.6:__memcmp_avx2_movbe) redirected to 0x4c3b6c0 (bcmp)
--16080-- REDIR: 0x6d620b0 (libc.so.6:__strcmp_ssse3) redirected to 0x4c39ac0 (strcmp)
--16080-- REDIR: 0x6c98540 (libc.so.6:calloc) redirected to 0x4c32e90 (calloc)
--16080-- REDIR: 0x63a54a0 (libstdc++.so.6:operator new(unsigned long, std::nothrow_t const&)) redirected to 0x4c317c0 (operator new(unsigned long, std::nothrow_t const&))
--16080-- REDIR: 0x63a5440 (libstdc++.so.6:operator new(unsigned long)) redirected to 0x4c31530 (operator new(unsigned long))
--16080-- REDIR: 0x7cc5850 (libpthread.so.0:pthread_mutex_init) redirected to 0x4c37d80 (pthread_mutex_init)
--16080-- REDIR: 0x7cc6120 (libpthread.so.0:pthread_mutex_lock) redirected to 0x4c37f50 (pthread_mutex_lock)
--16080-- REDIR: 0x7cc7970 (libpthread.so.0:pthread_mutex_unlock) redirected to 0x4c37f80 (pthread_mutex_unlock)
--16080-- REDIR: 0x63a3380 (libstdc++.so.6:operator delete(void*)) redirected to 0x4c325f0 (operator delete(void*))
--16080-- REDIR: 0x6d75450 (libc.so.6:__strncpy_ssse3) redirected to 0x4c38f10 (strncpy)
--16080-- REDIR: 0x6d82750 (libc.so.6:__memchr_avx2) redirected to 0x4c39ca0 (memchr)
--16080-- REDIR: 0x63a5500 (libstdc++.so.6:operator new[](unsigned long)) redirected to 0x4c31c50 (operator new[](unsigned long))
--16080-- REDIR: 0x6c9c850 (libc.so.6:__GI_strstr) redirected to 0x4c3c800 (__strstr_sse2)
--16080-- REDIR: 0x6d86de0 (libc.so.6:__mempcpy_avx_unaligned_erms) redirected to 0x4c3c520 (mempcpy)
--16080-- REDIR: 0x6d86500 (libc.so.6:__strchrnul_avx2) redirected to 0x4c3c410 (strchrnul)
--16080-- REDIR: 0x63a33b0 (libstdc++.so.6:operator delete[](void*)) redirected to 0x4c32af0 (operator delete[](void*))
--16080-- REDIR: 0x6d862d0 (libc.so.6:__strchr_avx2) redirected to 0x4c38c60 (index)
--16080-- Reading syms from /media/sdb5/Libraries/OGRE/sdk/v2-2/lib/OGRE/RenderSystem_GL3Plus_d.so.2.2.0
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libGL.so.1.0.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libGLX.so.0
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0
--16080--    object doesn't have a symbol table
--16080-- REDIR: 0x6c97a00 (libc.so.6:realloc) redirected to 0x4c330d0 (realloc)
--16080-- REDIR: 0x6cba290 (libc.so.6:memcpy@GLIBC_2.2.5) redirected to 0x4c39d80 (memcpy@GLIBC_2.2.5)
--16080-- REDIR: 0x6d7d860 (libc.so.6:__strncmp_sse42) redirected to 0x4c39290 (__strncmp_sse42)
--16080-- REDIR: 0x6d2c790 (libc.so.6:__strcpy_chk) redirected to 0x4c3c480 (__strcpy_chk)
--16080-- REDIR: 0x7cc9aa0 (libpthread.so.0:pthread_cond_init@@GLIBC_2.3.2) redirected to 0x4c37fd0 (pthread_cond_init@*)
--16080-- REDIR: 0x7ccae00 (libpthread.so.0:pthread_cond_broadcast@@GLIBC_2.3.2) redirected to 0x4c37fc0 (pthread_cond_broadcast@*)
--16080-- REDIR: 0x7ccaa70 (libpthread.so.0:pthread_cond_signal@@GLIBC_2.3.2) redirected to 0x4c37fb0 (pthread_cond_signal@*)
--16080-- REDIR: 0x7cc9af0 (libpthread.so.0:pthread_cond_destroy@@GLIBC_2.3.2) redirected to 0x4c37fe0 (pthread_cond_destroy@*)
--16080-- REDIR: 0x6d73ca0 (libc.so.6:__strcpy_ssse3) redirected to 0x4c38eb0 (strcpy)
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libGLX_nvidia.so.390.25
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/tls/libnvidia-tls.so.390.25
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libnvidia-glcore.so.390.25
--16080--    object doesn't have a symbol table
--16080-- REDIR: 0x6c99260 (libc.so.6:posix_memalign) redirected to 0x4c33380 (posix_memalign)
--16080-- REDIR: 0x6d832b0 (libc.so.6:__strcasecmp_avx) redirected to 0x4c39310 (strcasecmp)
--16080-- REDIR: 0x6cb0810 (libc.so.6:__strcat_ssse3) redirected to 0x4c38ca0 (strcat)
--16080-- REDIR: 0x6d86a50 (libc.so.6:__strnlen_avx2) redirected to 0x4c38d70 (strnlen)
--16080-- REDIR: 0x401fc20 (ld-linux-x86-64.so.2:stpcpy) redirected to 0x4c3b910 (stpcpy)
--16080-- REDIR: 0x6d82a20 (libc.so.6:__rawmemchr_avx2) redirected to 0x4c3c440 (rawmemchr)
--16080-- REDIR: 0x6d82630 (libc.so.6:__strspn_sse42) redirected to 0x4c3ca30 (strspn)
--16080-- REDIR: 0x6d823c0 (libc.so.6:__strcspn_sse42) redirected to 0x4c3c970 (strcspn)
--16080-- Reading syms from /media/sdb5/Libraries/OGRE/sdk/v2-2/lib/OGRE/Plugin_ParticleFX_d.so.2.2.0
--16080-- REDIR: 0x6d77fd0 (libc.so.6:__stpcpy_ssse3) redirected to 0x4c3b820 (stpcpy)
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXcursor.so.1.0.2
--16080--    object doesn't have a symbol table
--16080-- Reading syms from /usr/lib/x86_64-linux-gnu/libXfixes.so.3.1.0
--16080--    object doesn't have a symbol table
--16080-- REDIR: 0x6d86df0 (libc.so.6:__memcpy_chk_avx_unaligned_erms) redirected to 0x4c3c390 (__memmove_chk)
--16080-- REDIR: 0x7cc5a30 (libpthread.so.0:pthread_mutex_destroy) redirected to 0x4c37f40 (pthread_mutex_destroy)
--16080-- REDIR: 0x6c9bfa0 (libc.so.6:strncat) redirected to 0x4a2a6e0 (_vgnU_ifunc_wrapper)
--16080-- REDIR: 0x6cb2430 (libc.so.6:__strncat_ssse3) redirected to 0x4c38d20 (strncat)
--16080-- WARNING: Serious error when reading debug info
--16080-- When reading debug info from /tmp/.glUvOxNK (deleted):
--16080-- failed to stat64/stat this file
--16080-- WARNING: Serious error when reading debug info
--16080-- When reading debug info from /tmp/.glUvOxNK (deleted):
--16080-- failed to stat64/stat this file
--16080-- WARNING: Serious error when reading debug info
--16080-- When reading debug info from /home/dermont/.glvndObXqWv (deleted):
--16080-- failed to stat64/stat this file
--16080-- WARNING: Serious error when reading debug info
--16080-- When reading debug info from /home/dermont/.glvndObXqWv (deleted):
--16080-- failed to stat64/stat this file
--16080-- WARNING: Serious error when reading debug info
--16080-- When reading debug info from /home/dermont/.glvndtZ6wVh (deleted):
--16080-- failed to stat64/stat this file
--16080-- WARNING: Serious error when reading debug info
--16080-- When reading debug info from /home/dermont/.glvndtZ6wVh (deleted):
--16080-- failed to stat64/stat this file
--16080-- REDIR: 0x7ccb4b0 (libpthread.so.0:pthread_barrier_init) redirected to 0x4c37ff0 (pthread_barrier_init)
--16080-- REDIR: 0x7cc3ae0 (libpthread.so.0:pthread_create@@GLIBC_2.2.5) redirected to 0x4c37b30 (pthread_create@*)
--16080-- REDIR: 0x7ccb5a0 (libpthread.so.0:pthread_barrier_wait) redirected to 0x4c38170 (pthread_barrier_wait)
--16080-- REDIR: 0x7cc63c0 (libpthread.so.0:pthread_mutex_trylock) redirected to 0x4c37f60 (pthread_mutex_trylock)
==16080== 
==16080== Process terminating with default action of signal 2 (SIGINT)
==16080==    at 0x55D8E05: Ogre::ParticleSystem::_applyMotion(float) (OgreParticleSystem.cpp:614)
==16080==    by 0x55D7E91: Ogre::ParticleSystem::_update(float) (OgreParticleSystem.cpp:386)
==16080==    by 0x55DD7A9: Ogre::ParticleSystemUpdateValue::setValue(float) (OgreParticleSystem.cpp:76)
==16080==    by 0x539F4CE: Ogre::Controller<float>::update() (OgreController.h:223)
==16080==    by 0x539DD9F: Ogre::ControllerManager::updateAllControllers() (OgreControllerManager.cpp:84)
==16080==    by 0x56BBF84: Ogre::SceneManager::updateSceneGraph() (OgreSceneManager.cpp:2688)
==16080==    by 0x569E256: Ogre::Root::renderOneFrame() (OgreRoot.cpp:1085)
==16080==    by 0x118C81: SampleApplication::loop() (SampleApplication.h:381)
==16080==    by 0x116438: main (ParticleDemo.cpp:558)
==16080== 
==16080== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
==16080== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0)
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5299
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1280
Contact:

Re: v2-2 ParticleSystem stall

Post by dark_sylinc »

Tried your code. I can see mUpdateRemainTime is a *very* large number, hence tuck in a near-infinite loop. I'm now looking into why is that happening.
User avatar
dark_sylinc
OGRE Team Member
OGRE Team Member
Posts: 5299
Joined: Sat Jul 21, 2007 4:55 pm
Location: Buenos Aires, Argentina
x 1280
Contact:

Re: v2-2 ParticleSystem stall

Post by dark_sylinc »

Fixed. Thanks for the report.

I basically just fixed my own screw up.
dermont
Bugbear
Posts: 812
Joined: Thu Dec 09, 2004 2:51 am
x 42

Re: v2-2 ParticleSystem stall

Post by dermont »

Thanks, fix resolves the problem.
Post Reply