Setting vertex color when executed twice == crash

Hereis simple script for using vertex color, as bevel value for new bevel shader- so that we can have different bevel sizes.
Thing is when setting color of selected vertices for second time with script , blender crashes. I’m not sure why.

def execute(self, context):
    activeObj = context.active_object
    mesh = activeObj.data
    wasVColCreated = False
    if not mesh.vertex_colors or "Bevel" not in mesh.vertex_colors.keys():
        mesh.vertex_colors.new("Bevel")
        wasVColCreated =True
    activeObj.data.update()
    bm = bmesh.from_edit_mesh(activeObj.data)  # load mesh
    # bm.verts.ensure_lookup_table()
    color_layer = bm.loops.layers.color["Bevel"]
    if wasVColCreated:
        for vert in bm.verts:  # island faces
            for loop in vert.link_loops:
                loop[color_layer] = [0,0,0,0]
    bevelCol = 4*[self.bevel]

    selVerts = [vert for vert in bm.verts if vert.select]
    for vert in selVerts:  # island faces
        for loop in vert.link_loops:
            loop[color_layer] = bevelCol
    bmesh.update_edit_mesh(mesh)
    bm.free()

I tried: mesh.update() but it didn’t help. Not sure what happens.

Problem was - do not use bm.free() if in edit mode. See this.