diff -r e82940a7c9f0 south/management/commands/startmigration.py
--- a/south/management/commands/startmigration.py	Wed Jul 01 22:28:15 2009 +0100
+++ b/south/management/commands/startmigration.py	Sat Jul 04 16:27:27 2009 -0500
@@ -669,11 +669,20 @@
     return depends
 
 
-def field_dependencies(field, last_models=None):
-    depends = {}
-    if isinstance(field, (models.OneToOneField, models.ForeignKey, models.ManyToManyField)):
+def field_dependencies(field, last_models=None, processed=set()):
+
+    depends={}
+
+    if isinstance(field, (models.OneToOneField, models.ForeignKey, models.ManyToManyField, GenericRelation)):
+
+        if str(field.rel.to) in processed:
+            return depends
+        else:
+            processed.add(str(field.rel.to))
+    
         depends[field.rel.to] = last_models
-        depends.update(field_dependencies(field.rel.to._meta.pk, last_models))
+        depends.update(field_dependencies(field.rel.to._meta.pk, last_models,processed))
+        
     return depends
     
 
@@ -972,4 +981,4 @@
         # Deleting unique_together for [%s] on %s.
         db.delete_unique(%r, %r)
         '''
-FIELD_NEEDS_DEF_SNIPPET = "<< PUT FIELD DEFINITION HERE >>"
\ No newline at end of file
+FIELD_NEEDS_DEF_SNIPPET = "<< PUT FIELD DEFINITION HERE >>"
