Hey there, i know it’s a bit late, but i had the same problem. So i just write here how i solved it (i already had a text for asking if somebody know how to solve that, then i solved it on my own in just that minute - lol!) so that in future maybe other people can solve the problem faster. By the way, i had the problem in Blender 2.56, so it is still there.
Well, i had the same cyclic problem with armatures. I created a human model, appending a matching armature as modifier to it. Then i changed something of the model, deleted the armature and the mesh and recreated everything expect of the object of the model.
So as i recreated the armature, i got that cyclic message two times, first while creating the armature, then during linking it as a modifier.
Now the strange thing:
The first time of changing, deleting and recreating, everything worked fine, so i though ok, it’s just a message, but everything is running. But well, after i’ve done that a second time, blender crashed just at the point the first cyclic message occured.
Now the way i solved it:
I think the problem was the deleting. I’ve deleted the object, not the armature itself, and cleared the user before deleting. So as it really deleted the object on a further point, it had (User == -1), well that’s one problem! So no user_clear.
Another problem: I’ve changed the way of deleting. First, i just used the data.objects.remove() function. Later i used the bpy.ops.object.delete() function. I’m no friend of the ops functions, but sometimes it is more simple (mostly i prefer the clean way…). Also i deleted the armature data.
Well, in the end no more cyclic and no crashing blender.
Here’s my final deleting way, which is used before recreating the armature for the same object:
# get armature and data - object means the mesh object
armt = object.modifiers['Skeleton'].object
armt_data = armt.data
# remove armature modifier
object.modifiers.remove(object.modifiers['Skeleton'])
# delete armature
for ob in bpy.data.objects:
ob.select = 0
armt.select = 1
bpy.context.scene.objects.active = armt
bpy.ops.object.delete()
# delete armature.data - user_clear for armature.data is fine, for the object it might cause problems
armt_data.user_clear()
bpy.data.armatures.remove(armt_data)
So that’s it, no errors or warnings with that.