Comment 2 for bug 1764424

Revision history for this message
Jérôme Duriez (jduriez) wrote :

Hi,

Thank you very much Bruno for the links and hints, I understand there probably is some bad practice here (see 3.).

1.
However, I'm quite sure the crash is just caused by the following line
"boost::python::tuple extrema = Shop::aabbExtrema();" [1]

I thus suspect incorrect Python/C++ extraction or items access are not the reason of the present crash ?

2.
Actually, I would like to point out the following "funny" fact:

2.1. Asking
**********
O.run(100,True) # => crash
********** at the end of the above MWE triggers (in one call to MeasureCapStress) the crash. (same with O.run())

2.2. Asking
**********
for i in range(0,100):
    O.step() # => no crash
**********
instead of O.run does not trigger any crash. The ~100 calls to MeasureCapStress pass like a charm..

3.
The syntax I used in this MeasureCapStress code was directly inspired from what is done in getPorosity() [2], getStress() [3], or fabricTensor() [4] utils functions (which work, I guess).
It's true none of those was probably intended to be used "within" the simulation loop, though..

Thanks,

Jérôme

[1] if you would just add this line in NewtonIntegrator::action() (with the correct "include<pkg/dem/Shop.hpp>"), same kind of segfaults would occur
[2] https://github.com/yade/trunk/blob/d504abfec35f13e8b7e58ba3f59e5014c6196531/pkg/dem/Shop_01.cpp#L304
[3] https://github.com/yade/trunk/blob/c8be93791ffbc99b0e63275c1b866414391b27c0/pkg/dem/Shop_02.cpp#L352
[4] https://github.com/yade/trunk/blob/c8be93791ffbc99b0e63275c1b866414391b27c0/pkg/dem/Shop_02.cpp#L266