Particle POP update loop crash

File to reproduce is: XOPs\Richard\scan\scantest.toe

I have a network with a particle POP and some noise POPs affecting it’s force. If you bypass noise1 in the chain it causes TouchDesigner to crash out or hang. It’s a fairly heavy particle system in this example but it seems that even simple examples crash too.

The DMP file is there too from an example using the pointgenerator POP into the particle POP.
TouchDesignerCrash.2023.31710_1.dmp

Hello @Ennui
I was not able to replicate the bug with the exact same steps. Does the Particle POP report an error for you at that point? I can get a hang by bypassing the Particle2, though. I noticed that the input on the Particle POP contains almost 6 million points. When the Particle POP is bypassed, this input is sent to the Trail POP, which allocates 60 times this number of points. At this point, we can run out of memory.
I would like to confirm if the same thing is happening in your case. Could you double-check if the dump file is shared? I could not find it.

Hi Guillaume,

I don’t think so no as even if I use a point generator and put that through it was crashing too.

Interestingly I restarted the file just now and it’s now erroring the other POPs until I re-initialize the particle POP rather than crashing. I also am going on a hunch here but it feels like if the particle POP gets quite heavy (to the point of dropping a lot of frames) and I then re-initialize with less input data touchdesigner will continue to be slow until I delete the particle POP and re-create it. I’m wondering if something memory-wise is getting hung up but it’s really difficult to re-create it in a simple form for you.

I’m going to be dabbling with this more over the next couple of days so I’ll post back if I can make a simpler example.

Indeed the buffers required by the Particle POP are not recreated when the input data or the maximum number of particles is reduced. That can be problematic in some cases. In the next build, hitting Init will free up some memory and recreate every buffer.