optunity
optunity copied to clipboard
Spurious crashes and segmentation faults when calling from Julia wrapper
When calling Optunity from julia we sometimes get strange exceptions like:
ERROR: LoadError: PyError (:PyObject_Call) <type 'exceptions.AttributeError'>
AttributeError("'CallLog' object has no attribute '_lock'",)
File "/users/stadius/vjumutc/Research/Repositories/optunity/optunity/api.py", line 212, in minimize
pmap=pmap)
File "/users/stadius/vjumutc/Research/Repositories/optunity/optunity/api.py", line 245, in optimize
solution, report = solver.optimize(f, maximize, pmap=pmap)
File "/users/stadius/vjumutc/Research/Repositories/optunity/optunity/solvers/Sobol.py", line 144, in optimize
scores = pmap(fwrap, scaled)
File "/users/stadius/vjumutc/Research/Repositories/optunity/optunity/solvers/Sobol.py", line 137, in fwrap
return f(**kwargs)
File "/users/stadius/vjumutc/Research/Repositories/optunity/optunity/functions.py", line 299, in wrapped_f
value = wrapped_f.call_log.get(*args, **kwargs)
File "/users/stadius/vjumutc/Research/Repositories/optunity/optunity/functions.py", line 138, in get
return self.data.get(Args(*args, **kwargs), None)
File "/users/stadius/vjumutc/Research/Repositories/optunity/optunity/functions.py", line 130, in data
with self.lock:
File "/users/stadius/vjumutc/Research/Repositories/optunity/optunity/functions.py", line 125, in lock
return self._lock
or even segmentation faults. This is definitely a problem related to GC and how many times callbacks in julia are evaluated from Optunity.
Please refer to the recent pull request #56.
As this appears to be a bug in the Julia-Python interface, we can't fix this ourselves.
Probably we should wait for some updates in PyCall.jl package. I will try to figure out a nice example to report this issue in https://github.com/stevengj/PyCall.jl