vtkPointLocator.FindClosestPointWithinRadius causes access violation when using incremental point insertion
System: Windows 10 Pro
VTK version: 7.1.1
Problem
If you incrementally insert points to a vtkPointLocator
and then call FindClosestPointWithinRadius
, it crashes with a Windows fatal exception: access violation
Reproducing the problem
def testIterativeLocator():
import vtk
points = vtk.vtkPoints()
points.SetDataTypeToDouble()
bounds = [-1000, 1000, -1000, 1000, -1000, 1000]
locator = vtk.vtkPointLocator()
locator.DebugOn()
locator.InitPointInsertion(points, bounds)
locator.InsertNextPoint((100.0, 200.0, 300.0))
locator.InsertNextPoint((200.0, 200.0, 200.0))
locator.InsertNextPoint((300.0, 300.0, 300.0))
p_id = vtk.mutable(0)
already_inserted = locator.InsertUniquePoint((200, 200, 200), p_id) == 0
assert p_id == 1
# locator.BuildLocator() # this line makes no difference
distance = vtk.mutable(0.0)
closest_point_id = locator.FindClosestPointWithinRadius(100.0, (305.0, 300.0, 298.0), distance)
It crashes during the FindClosestPointWithinRadius
call and outputs:
Windows fatal exception: access violation
Current thread 0x000002c4 (most recent call first):
File "W:\SimBR-dev\Projects\simbr\simbr20calc\source\python\simbr20calc\mesh_generator_2d\_tests\test_mesh_generator_2d.py", line 147 in testIterativeLocator
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\python.py", line 179 in pytest_pyfunc_call
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\callers.py", line 187 in _multicall
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\hooks.py", line 289 in __call__
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\python.py", line 1467 in runtest
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\runner.py", line 122 in pytest_runtest_call
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\callers.py", line 187 in _multicall
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\hooks.py", line 289 in __call__
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\runner.py", line 197 in <lambda>
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\runner.py", line 225 in from_call
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\runner.py", line 197 in call_runtest_hook
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\runner.py", line 172 in call_and_report
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\runner.py", line 92 in runtestprotocol
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\runner.py", line 77 in pytest_runtest_protocol
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\callers.py", line 187 in _multicall
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\hooks.py", line 289 in __call__
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\main.py", line 270 in pytest_runtestloop
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\callers.py", line 187 in _multicall
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\hooks.py", line 289 in __call__
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\main.py", line 249 in _main
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\main.py", line 205 in wrap_session
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\main.py", line 242 in pytest_cmdline_main
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\callers.py", line 187 in _multicall
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\manager.py", line 62 in <lambda>
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\manager.py", line 68 in _hookexec
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\pluggy\hooks.py", line 289 in __call__
File "W:\SimBR-dev\envs\simbr20gui-dev-py36\lib\site-packages\_pytest\config\__init__.py", line 79 in main
File "C:\Users\gcardozo\AppData\Local\JetBrains\Toolbox\apps\PyCharm-P\ch-0\191.7479.30\helpers\pycharm\_jb_pytest_runner.py", line 45 in <module>
Process finished with exit code 0