6739a16bc7e41e2316b6b015bf8f93ff4a2e3c5f
kent
  Fri Oct 8 08:33:46 2010 -0700
Adding a bunch of debugging stuff.
diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 9ad6800..f5cf9b9 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -2754,69 +2754,82 @@
 struct sqlConnection *remoteTrackConnection(struct track *tg)
 /* Get a connection to remote database as specified in remoteSql settings... */
 {
 if (!tg->isRemoteSql)
     {
     internalErr();
     return NULL;
     }
 else
     {
     return sqlConnectRemote(tg->remoteSqlHost, tg->remoteSqlUser, tg->remoteSqlPassword,
         tg->remoteSqlDatabase);
     }
 }
 
+boolean uglyOne = FALSE;
+
 void addTdbListToTrackList(struct trackDb *tdbList, char *trackNameFilter,
 	struct track **pTrackList)
 /* Convert a list of trackDb's to tracks, and append these to trackList. */
 {
 struct trackDb *tdb, *next;
 struct track *track;
 TrackHandler handler;
+if (uglyOne) uglyf("ok1<BR>\n");
 tdbSortPrioritiesFromCart(cart, &tdbList);
+if (uglyOne) uglyf("ok2<BR>\n");
 for (tdb = tdbList; tdb != NULL; tdb = next)
     {
+if (uglyOne) uglyf("ok3.1 %s<BR>\n", tdb->track);
     next = tdb->next;
     if(trackNameFilter != NULL && strcmp(trackNameFilter, tdb->track))
         // suppress loading & display of all tracks except for the one passed in via trackNameFilter
         continue;
+if (uglyOne) uglyf("ok3.2 %s<BR>\n", tdb->track);
     track = trackFromTrackDb(tdb);
+if (uglyOne) uglyf("ok3.3 %s, %d subtracks<BR>\n", tdb->track, slCount(tdb->subtracks));
     track->hasUi = TRUE;
     if (slCount(tdb->subtracks) != 0)
         {
         tdbSortPrioritiesFromCart(cart, &(tdb->subtracks));
 	if (trackDbLocalSetting(tdb, "compositeTrack"))
 	    makeCompositeTrack(track, tdb);
 	else if (trackDbLocalSetting(tdb, "container"))
 	    makeContainerTrack(track, tdb);
         }
     else
         {
+	if (uglyOne) uglyf("about to look up handler on %s<BR>\n", tdb->table);
         handler = lookupTrackHandler(tdb->table);
+	if (uglyOne) uglyf("handler=%p<BR>\n", handler);
         if (handler != NULL)
             handler(track);
         }
+if (uglyOne) uglyf("ok3.4 %s<BR>\n", tdb->track);
     if (cgiVarExists("hgGenomeClick"))
 	makeHgGenomeTrackVisible(track);
+if (uglyOne) uglyf("ok3.5 %s<BR>\n", tdb->track);
     if (track->loadItems == NULL)
         warn("No load handler for %s; possible missing trackDb `type' or `subTrack' attribute", tdb->track);
     else if (track->drawItems == NULL)
         warn("No draw handler for %s", tdb->track);
     else
         slAddHead(pTrackList, track);
+if (uglyOne) uglyf("ok3.6 %s<BR>\n", tdb->track);
     }
+if (uglyOne) uglyf("ok4<BR>\n");
 }
 
 void loadFromTrackDb(struct track **pTrackList)
 /* Load tracks from database, consulting handler list. */
 {
 char *trackNameFilter = cartOptionalString(cart, "hgt.trackNameFilter");
 struct trackDb *tdbList;
 if(trackNameFilter == NULL)
     tdbList = hTrackDb(database, chromName);
 else
     tdbList = hTrackDbForTrack(database, trackNameFilter);
 addTdbListToTrackList(tdbList, trackNameFilter, pTrackList);
 }
 
 static int getScoreFilter(char *trackName)
@@ -3412,53 +3425,61 @@
     tg = newCustomTrack(ct);
     slAddHead(pTrackList, tg);
     }
 }
 
 void addTracksFromDataHub(char *hubUrl, struct track **pTrackList)
 /* Load up stuff from data hub and append to list. The hubUrl points to
  * a trackDb.ra format file.  */
 {
 /* Squirrel away hub directory for later. */
 char hubDir[PATH_LEN];
 splitPath(hubUrl, hubDir, NULL, NULL);
 
 /* Load trackDb.ra file and make it into proper trackDb tree */
 struct trackDb *tdb, *tdbList = trackDbFromRa(hubUrl);
+uglyf("Got %d tracks from %s<BR>\n", slCount(tdbList), hubUrl);
 for (tdb = tdbList; tdb != NULL; tdb = tdb->next)
      {
      trackDbFieldsFromSettings(tdb);
      trackDbPolish(tdb);
      }
+uglyf("About to link up generations<BR>\n");
 trackDbLinkUpGenerations(tdbList);
+uglyf("About to addTdbListToTrackList<BR>\n");
+uglyOne = TRUE;
 addTdbListToTrackList(tdbList, NULL, pTrackList);
+uglyf("Used to crash by here<BR>\n");
 }
 
 void loadDataHubs(struct track **pTrackList)
 /* Load up stuff from data hubs and append to list. */
 {
 char *dataHubs = cloneString(cartUsualString(cart, "dataHubs", NULL));
+uglyf("<BR>dataHubs=%s\n<BR>\n", dataHubs);
 if (dataHubs == NULL)
     return;
 int hubCount = chopByWhite(dataHubs, NULL, 10);
 char *hubArrays[hubCount];
 chopByWhite(dataHubs, hubArrays, hubCount);
+uglyf("hubCount=%d, hubArrays[0]=%s\n<BR>\n", hubCount, hubArrays[0]);
 int i;
 for (i = 0; i<hubCount; ++i)
     {
     addTracksFromDataHub(hubArrays[i], pTrackList);
     }
+uglyf("addTracksFromDataHub loop done<BR>\n");
 }
 
 boolean restrictionEnzymesOk()
 /* Check to see if it's OK to do restriction enzymes. */
 {
 return (hTableExists("hgFixed", "cutters") &&
     hTableExists("hgFixed", "rebaseRefs") &&
     hTableExists("hgFixed", "rebaseCompanies"));
 }
 
 void fr2ScaffoldEnsemblLink(char *archive)
 /* print out Ensembl link to appropriate scaffold there */
 {
 struct sqlConnection *conn = hAllocConn(database);
 struct sqlResult *sr = NULL;
@@ -4114,32 +4135,32 @@
 struct track *track, *trackList = NULL;
 registerTrackHandlers();
 /* Load regular tracks, blatted tracks, and custom tracks.
  * Best to load custom last. */
 loadFromTrackDb(&trackList);
 if (pcrResultParseCart(database, cart, NULL, NULL, NULL))
     slSafeAddHead(&trackList, pcrResultTg());
 if (userSeqString != NULL) slSafeAddHead(&trackList, userPslTg());
 slSafeAddHead(&trackList, oligoMatchTg());
 if (restrictionEnzymesOk())
     {
     slSafeAddHead(&trackList, cuttersTg());
     }
 if (wikiTrackEnabled(database, NULL))
     addWikiTrack(&trackList);
-#ifdef SOON
 loadDataHubs(&trackList);
+#ifdef SOON
 #endif /* SOON */
 loadCustomTracks(&trackList);
 groupTracks(&trackList, pGroupList, vis);
 setSearchedTrackToPackOrFull(trackList);
 if (cgiOptionalString( "hideTracks"))
     changeTrackVis(groupList, NULL, tvHide);
 
 /* Get visibility values if any from ui. */
 for (track = trackList; track != NULL; track = track->next)
     {
     char *s = cartOptionalString(cart, track->track);
     if (cgiOptionalString("hideTracks"))
 	{
 	s = cgiOptionalString(track->track);
 	if (s != NULL && (hTvFromString(s) != track->tdb->visibility))