Hello! I am using swig to parse some code that I have wrote, and this code 
uses dealii. When I run the code with python, I get an error raised by 
Subscriptor as follows

--------------------------------------------------------
An error occurred in line <114> of file </home/segonpin/lib/dealii/source/
base/subscriptor.cc> in function
    virtual dealii::Subscriptor::~Subscriptor()
The violated condition was: 
    counter == 0
The name and call sequence of the exception was:
    ExcInUse (counter, object_info->name(), infostring)
Additional Information: 
Object of class N6dealii13TriangulationILi1ELi1EEE is still used by 1 other 
objects.


(Additional information: <none>)


See the entry in the Frequently Asked Questions of deal.II (linked to from 
http://www.dealii.org/) for a lot more information on what this error means 
and how to fix programs in which it happens.


Stacktrace:
-----------
#0  /home/segonpin/lib/dealii-8.4.bin/lib/libdeal_II.g.so.8.4.2: 
dealii::Subscriptor::~Subscriptor()
#1  /home/segonpin/lib/dealii-8.4.bin/lib/libdeal_II.g.so.8.4.2: 
dealii::Triangulation<1, 1>::~Triangulation()
#2  /home/segonpin/codessebas/dealii-neutron-transport/python/_pygeom.so: 
Forest::ProbGeom<1>::~ProbGeom()
#3  /home/segonpin/codessebas/dealii-neutron-transport/python/_pygeom.so: 
#4  python: PyObject_Call
#5  python: PyObject_CallFunctionObjArgs
#6  /home/segonpin/codessebas/dealii-neutron-transport/python/_pygeom.so: 
#7  python: ) [0x4fd4e6]
#8  python: PyDict_SetItem
#9  python: _PyModule_Clear
#10  python: PyImport_Cleanup
#11  python: Py_Finalize
#12  python: Py_Main
#13  /lib/x86_64-linux-gnu/libc.so.6: __libc_start_main
#14  python: _start
--------------------------------------------------------

I know that this problem is because I am destroying an instance of an 
object that is still owned by someone else. My question is, how can I get 
the information of who is owning?

Extra info: The same code runs well when calling things in the same order 
in python. I think that something is going wrong when using wrappers with 
std::shared_ptr, but swig is prepared for this and then I do not think this 
should be a problem. I was thinking that identifying who increased the 
counter in Subscriptor without decreasing it later can give me extra hints 
for fixing the problem. For extra information, the python file is

#!/usr/bin/python
import pyinput
import pygeom
import pystate
import pyeqfactory
import pyeigenprobfactory

inp = pyinput.Input("heter1d/1d1g_heter")
geo = pygeom.ProbGeom1D(inp) # This is the element that will raise the 
exception later
state = pystate.State1D(inp, geo);
equation = pyeqfactory.EqFactory1D.New(state)
# commenting the following line there is no exception raised.
eigenprob = pyeigenprobfactory.EigenProbFactory1D.New(state, equation) 


-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to