annoviko / annoviko/pyclustering
[pyclustering.core.metric_wrapper] Callback failure for user-defined function
- Dominant language
- Python
- Stars
- 1.2k
- Forks
- 262
- PR merge metrics
- No merged PRs in 30d
Description
**Introduction**
In case of user-defined metric, algorithms doesn't use core to avoid crash on some platforms.
**Description**
Investigation is required. See test: 'testUserDefinedMetric'.
Test location: **pyclustering/utils/tests/integration/it_metric.py**
```
Ran 6 tests in 0.016s
FAILED (errors=1)
Error
Traceback (most recent call last):
File "D:\Miniconda3\envs\test-environment\lib\unittest\case.py", line 58, in testPartExecutor
yield
File "D:\Miniconda3\envs\test-environment\lib\unittest\case.py", line 580, in run
testMethod()
File "D:\workspace\pyclustering\pyclustering\utils\tests\integration\it_metric.py", line 71, in testUserDefinedMetric
assertion.eq(2.0, metric_instance([0.0, 0.0], [2.0, 0.0]));
File "D:\workspace\pyclustering\pyclustering\core\metric_wrapper.py", line 65, in __call__
return ccore.metric_calculate(self.__pointer, point_package1, point_package2);
OSError: [WinError -1073741795] Windows Error 0xc000001d
```
**Technical details**
Crash occurs in pyclustering core, interface file: **pyclustering/ccore/src/interface/metric_interface.cpp**.
```c++
auto functor_wrapper = [p_solver](const point & p1, const point & p2) {
pyclustering_package * point1 = create_package(&p1);
pyclustering_package * point2 = create_package(&p2);
const double distance = p_solver(point1, point2); <--- crash here.
delete point1;
delete point2;
return distance;
};
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.