e6254f8ad3cfeba60c7d09513ed6d560af47a5e0
angie
  Tue May 14 11:29:09 2019 -0700
When saving a session, if hgPcrResult trash files are lost and removed from the cart var value, remove the cart var to prevent hgTracks from errAborting about bad cart var format.  refs #22440

diff --git src/hg/hgSession/sessionData.c src/hg/hgSession/sessionData.c
index 8e8acc0..126e411 100644
--- src/hg/hgSession/sessionData.c
+++ src/hg/hgSession/sessionData.c
@@ -465,22 +465,25 @@
             // replace with new file containing references to saved files and tables.
             char *oldTrackFile = cloneString(var->val);
             char *newTrackFile = saveTrackFile(cart, var->name, var->val,
                                                sessionDataDbPrefix, dbSuffix, sessionDir);
             if (newTrackFile && cartVarIsCustomComposite(var->name))
                 cartReplaceHubVars(cart, var->name, oldTrackFile, newTrackFile);
             freeMem(oldTrackFile);
             freeMem(newTrackFile);
             }
         else
             {
             // Regular cart var; save trash paths (possibly encoded) in value, if any are found.
             char *newVal = cloneString(var->val);
             saveTrashPaths(&newVal, sessionDir, FALSE);
             saveTrashPaths(&newVal, sessionDir, TRUE);
-            if (newVal != var->val && differentString(newVal, var->val))
+            // Special case for lost hgPcr result trash files: prevent errAbort in hgTracks
+            if (startsWith("hgPcrResult_", var->name) && sameString(newVal, " "))
+                cartRemove(cart, var->name);
+            else if (newVal != var->val && differentString(newVal, var->val))
                 cartSetString(cart, var->name, newVal);
             freeMem(newVal);
             }
         }
     }
 }