mathutils.bvhtree.BVHTree.FromPolygons Huge Memory Leak #50029

Closed
opened 2016-11-15 01:33:09 +01:00 by Suryavarman · 8 comments

System Information
Operating system: Win7
Video card: geforce GT 650M

Blender Version
Broken: 2.78 Date: 2016-09-26 12:42 Hash: 4bb1e22

Short description of error
A memory leak appear with FromPolygons inside a loop

Exact steps for others to reproduce the error
Create some cube and a torus with a big resolution.
And call this code:


import bpy
import mathutils

bvh_trees = []


def update_bvh_tree():
    bvh_trees.clear()

    scene = bpy.data.scenes['Scene']
    types = ['MESH', 'SURFACE']

    for obj in bpy.data.objects:
        if obj.type in types:

            mesh = None
            need_remove = False

            if obj.is_deform_modified(scene, 'RENDER'):
                mesh = obj.to_mesh(scene, True, 'RENDER')
                need_remove = True
            else:
                mesh = obj.data

            vertices = []
            for v in mesh.vertices:
                vertex = obj.matrix_world * v.co
                vertices.append(vertex.xyz)

            indices = []
            for poly in mesh.polygons:
                poly_indices = []
                for loop_index in range(poly.loop_start, poly.loop_start + poly.loop_total):
                    poly_indices.append(mesh.loops[loop_index].vertex_index)

                indices.append(poly_indices)

            if need_remove and (mesh is not None):
                bpy.data.meshes.remove(mesh)

            # HUGE MEMORY LEAK
            bhtree = mathutils.bvhtree.BVHTree.FromPolygons(vertices, indices,  all_triangles=False, epsilon=0.0)

            bvh_trees.append(bhtree)


n = 1000
for i in range(n):
    update_bvh_tree()



**System Information** Operating system: Win7 Video card: geforce GT 650M **Blender Version** Broken: 2.78 Date: 2016-09-26 12:42 Hash: 4bb1e22 **Short description of error** A memory leak appear with FromPolygons inside a loop **Exact steps for others to reproduce the error** Create some cube and a torus with a big resolution. And call this code: ``` import bpy import mathutils bvh_trees = [] def update_bvh_tree(): bvh_trees.clear() scene = bpy.data.scenes['Scene'] types = ['MESH', 'SURFACE'] for obj in bpy.data.objects: if obj.type in types: mesh = None need_remove = False if obj.is_deform_modified(scene, 'RENDER'): mesh = obj.to_mesh(scene, True, 'RENDER') need_remove = True else: mesh = obj.data vertices = [] for v in mesh.vertices: vertex = obj.matrix_world * v.co vertices.append(vertex.xyz) indices = [] for poly in mesh.polygons: poly_indices = [] for loop_index in range(poly.loop_start, poly.loop_start + poly.loop_total): poly_indices.append(mesh.loops[loop_index].vertex_index) indices.append(poly_indices) if need_remove and (mesh is not None): bpy.data.meshes.remove(mesh) # HUGE MEMORY LEAK bhtree = mathutils.bvhtree.BVHTree.FromPolygons(vertices, indices, all_triangles=False, epsilon=0.0) bvh_trees.append(bhtree) n = 1000 for i in range(n): update_bvh_tree() ```
Author

Changed status to: 'Open'

Changed status to: 'Open'
Author

Added subscriber: @Pierre-Pontier

Added subscriber: @Pierre-Pontier

Added subscriber: @karthik24iyer

Added subscriber: @karthik24iyer

Hello, I am new to Blender and I wanted to work on this issue. Can you explain how to "call a code" in blender what you have written above ?

Hello, I am new to Blender and I wanted to work on this issue. Can you explain how to "call a code" in blender what you have written above ?
Author

Oh great!

  1. Don't forget to create some cubes and a torus with a big resolution. It's easier to see the memory grown up.

  2. Open a Text Editor view in Blender.

  3. Click on Text > Create Text Block or press Ctrl + N

  4. Copy/Past the sript

  5. Then simply press Run script

Best!

Oh great! 1) Don't forget to create some cubes and a torus with a big resolution. It's easier to see the memory grown up. 2) Open a Text Editor view in Blender. 3) Click on Text > Create Text Block or press Ctrl + N 4) Copy/Past the sript 5) Then simply press Run script Best!

Changed status from 'Open' to: 'Resolved'

Changed status from 'Open' to: 'Resolved'
Author

Oh this is great.
Thank you

Oh this is great. Thank you

This issue was referenced by blender/blender@3b467b35a8

This issue was referenced by blender/blender@3b467b35a85153e9435a1fbcba2e9c1770c1192a
Sign in to join this conversation.
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender-addons#50029
No description provided.