Summary: 838 instances, 739 unique Text Count // TODO currently this is experimental enough that we don't show it publicly. 1 // TODO FIX NOW remove m_worker.Interrupt(); // kill any work in process; 1 1 1 // TODO review. 2 // TODO we don't get the stack for the inner exception. 1 // TODO add a capability to return a enumerator of output lines. (and/or maybe a delegate callback) 1 // TODO I need some way of handling string with , in them. 1 // TODO discriminate between the GUI and Non_GUI case. 1 private Dictionary m_moduleMap; // TODO FIX NOW not needed after PdbScope is fixed. 1 // TODO add module name to type name 1 // TODO remove once .NET Core has been fixed to not emit stacks on CLR method events which are just for bookkeeping. 1 // TODO: optimize this!!! 1 1 // else if (NotesTab.IsSelected) // TODO FIX NOW implement find. 1 // TODO allow substrings or other patterns. 1 // TODO Add an unregister API. 1 // TODO we may be doing an unnecessary merge. 1 // TODO this is inefficient. Also think about very large files. 1 if (moduleName.Length == 0) // TODO should we have this convention? 1 // TODO need count of all active children 2 // TODO 1 // TODO FIX NOW Major hacks. 1 return ret; // TODO FIX NOW Do I want to simply return nothing or give a more explicit error? 1 // TODO FIX NOW, should not need to do this hand-unmangling. 1 // TODO compute the average weighted by time. 1 // TODO FIX NOW. there are races associated with this. 1 /// TODO document 2 // TODO need safe handles 1 // TODO we simply give up for now. This is OK because we only use GetRefs in places were we are AUGMENTING 1 // TODO AttachConsole is not reliable (GetStdHandle returns an invalid handle about half the time) 1 // TODO allow users to specify the launch directory 1 // TODO FIX NOW. WE need reference counting 1 // TODO see if taking the lock in the read case is expensive or not. 1 /// (TODO: always for the event that preceded it on the same thread)? 1 // TODO should not have to be linear 3 #if false // TODO decide if we want to ignore the .NI.DLL and if so do it uniformly. 1 // TODO this is a bit of a hack. I really want the 'current' StackWindow 1 // TODO: currently most uses the source aligned so 2 // TODO logic for getting out of ConfigSettings. 1 /// TODO keep track if the nodeId is of variable Size 1 // TODO review this carefully. 3 // TODO FIX NOW NOT DONE 2 #if false // TODO enable 1 TODO NOT DONE 1 #if false // TODO FIX NOW remove 1 // TODO in the case where the object already exist, we just created an object just to throw it 1 // TODO the extra || operator is a hack because the runtime actually tries to emit events that 1 // TODO FIX NOW 3 // TODO FIX NOW retrieve the process name, ID etc. 2 // TODO implement 1 // TODO remove? Not clear it is useful. Can be useful for CMD.EXE alias (which provide a default) but later user may override. 1 // TODO I would like get the columnHeader text not from the column name but from what is displayed in the hyperlink 2 // TODO this is a bit of a hack. remove the context menu from the textBox so that you get 2 // TODO I am not actually that certain of this parsing. Which Version ByteOffset got put in, and what the layout is on 32 bit. 1 // TODO FIX NOW remove the jittedMethods ones. 1 // TODO is this one worth resolving? 1 // TODO FIX so that it works with things with commas and colons and equals 1 // TODO FIX NOW maek the call to GetProcessesWithGCHeaps async. 1 // TODO FIX NOW decide where to put these. 1 // TODO Added by hand without proper body decode. 1 // TODO this could be more efficient. 1 // TODO what is this for? 1 // TODO FIX NOW think about the timers case. 1 currentID = currentID + 1; // TODO overflow. 1 // TODO FIX NOW make this a utility function 1 // TODO FIX NOW currently we have a hack where we know we are not correct 1 // TODO This is for robustness, it should not exist, but if it does remove it. 1 // TODO FIX NOW HACK 2 // TODO painfully slow, fragile, trickly 1 currentID = currentID + 1; // TODO overflow. 1 // TODO FIX NOW. reenable this assert (we get 24 on a 32 bit process) 1 Debug.Assert(!(Version == 1 && EventDataLength < 568)); // TODO changed by hand 1 Debug.Assert(!(Version == 0 && EventDataLength < 108)); // TODO fixed by hand 1 // TODO we need to figure out a convention show we know that we have fallen back to no-lines 1 // TODO FIX NOW what should we be doing here? I do want pass along channel information 1 Debug.Assert(!(Version == 1 && EventDataLength < 20)); // TODO fixed by hand 1 #region TaskCCWQueryRuntimeClassNameArgs commented for a while. TODO: get type info from pdb 1 // TODO: Multiple version support not available yet for struct fields 1 // TODO: Arrays contained inside structs not supported 1 #if false // TODO FIX NOW remove 4 // TODO FIX NOW would really like to find the window with focus, and not always use the main window... 1 // so we can simply cast. TODO FIX NOW decide how to not break the abstraction. 1 // TODO we could do a timestamp match too. 1 // TODO : HACK we see to have a race in the async process stuff 1 #if false // TODO FIX NOW remove 1 DWORD classFlags = 0; // TODO FIX NOW, set class flags properly. 1 // TODO FIX NOW: there is a and ugly problem with persistence of suboptimal PDB files 1 m_gcHeapDump.MemoryGraph = new MemoryGraph(10000); // TODO Can we be more accurate? 1 // TODO can we simpify? 1 // TODO this code assumes that process launch is within 1 second and process IDs are not aggressively reused. 1 // TODO read in a chunk if it is out of order fail, when complete close the file. 1 var pat = new Regex(ToDotNetRegEx(patStr), RegexOptions.IgnoreCase); // TODO perf bad if you compile! 1 const int maxLengthInViewer = 50000; // TODO make this a parameter 1 // TODO FIX NOW this does not handle the case where the thread was ready from the start (preempted). 1 // TODO really should simply update Diff Menu lazily 1 // TODO there seem to be unmatched unloads in many traces. This has make this diagnostic too noisy. 1 ret = m_outputStackSource.GetCallStack(data.CallStackIndex(), top, null); // TODO use the cache... 1 // TODO What are these? 1 // TODO FIX NOW dump state to CommandLineArgs 1 // TODO: Gross that the caller has to pass this in. 1 /// TODO: we can achieve perfect synchronization by exposing the QPC tick sync point so we could read the sync point 1 m_log.WriteLine("Updating NGEN createPdb output file to {0}", outputPdbPath); // TODO FIX NOW REMOVE (for debugging) 1 /** TODO FIX NOW 1 1 #if 0 // TODO FIX NOW, implement filtering. 1 // TODO: Sort things in blocked time analyzer 1 // TODO this logic is cloned. We need it in only one place. 1 break; // TODO FIX NOW allow multiple providers in a manifest. 1 // TODO FIX NOW: this should call a routine that does the opening of the stack view 1 // TODO FIX NOW ACTIVITIES: if this is only used during translation, we should not allocate it in the ctor 1 // TODO should use SaveFileDialog sometimes. 1 // TODO FIX NOW hack for CLRProfiler comparison 1 // TODO confirm this is true 1 // TODO This is probably a hack that it is here. 1 if (defValue.Length < 40) // TODO is this reasonable? 3 // TODO: Support SxS? 1 /// TODO this can be removed when we don't update PerfView commonly and are willing 1 /// TODO: eliminate and use ToString()? 1 /// TODO FIX NOW harmonize with List.BinarySearch 1 // TODO this seems inefficient, can we get a list of RCWs? 1 // TODO we are protecting ourselves against a task being scheduled twice (we ignore the second one). 1 // TODO FIX NOW remove priority 1 1 #if false // TODO FIX NOW remove or fix 1 // TODO is this too misleading? 1 // TODO make an enum for SourceID these are the values. 1 // TODO Kind of a hack. 1 Environment.Exit(0); // TODO can we do this another way? 1 // TODO do we need this? 1 // TODO Currently even the internal Wiki is now a broken link, so simply give up for now. 1 // TODO FIX NOW worry about module collision 1 set { } // TODO See if there is a better way of getting the GUI working. 1 // TODO: we track the enabled providers but it is better to get it from the 1 return unchecked(((long)high << 32) + low); // TODO find the most efficient way of doing this. 1 // TODO FIX NOW, these are arc counts, they should be node counts. (need interning). 1 // TODO this does not work in the circular case 1 // TODO resolve the redundancy with DataSource. 1 return offset + 4; // TODO confirm 1 // TODO: Currently we read all of metadata and then parse it. We could do better by 1 // TODO FIX NOW use or remove 1 // TODO This is a hack. We try to determine the full path of a module name by 1 // TODO is this a good idea? 1 Debug.Assert(!(Version == 0 && EventDataLength < 584)); // TODO changed by hand 1 #if false // TODO FIX NOW use or remove 4/2014 1 public bool IsModuleEntry; // TODO IsModuleEntry is an experimental thing. Remove after gathering data. 1 #if false // TODO FIX NOW 2 #if PERFVIEW // TODO FIX NOW turn this on and test. 1 // TODO FIX NOW better name. 1 // TODO FIX NOW use or remove 2 // TODO expose the ability to change this? 1 // TODO: Complete member initialization 1 //TODO do we care about things in the GAC? it expands the search quite a bit. 1 // TODO add a capability to return a enumerator of output lines. (and/or maybe a delegate callback) 2 // TODO do we need module info? 1 // TODO copy the additional data from a ETLX file if the source is ETLX 1 // TODO FIX NOW hack because unloadMethod not present 1 // We set the FilterGui state earlier so we don't set it here. TODO can we avoid this and keep it simpler? 1 // TODO inefficient 1 clrPrivate.GCPinObjectAtGCTime += objectAtGCTime; // TODO FIX NOW REMOVE AFTER PRIVATE IS GONE 1 // TODO: define the xxxTaskGuid based on eventGUID attribute of elements of the .man file 1 // TODO currently there are times when a CCWs IUnknown pointer is not set (it is set lazily). 1 // TODO alias information. 1 1 // TODO confirm no ambiguities (same alias used again). 1 // TODO this does not work for very long traces. 1 // TODO When people sort the list, you 'jump around' if you do it this way. 1 // TODO this is very inefficient for blitable types. Optimize that. 1 // TODO FIX NOW review 1 // TODO FIX NOW deal with too small of a buffer. 1 // TODO there is a race here. In theory you could be aborting the wrong work. 1 // TODO would like some redundancy, so that failure happen close to the cause. 1 if (ret > 1000) // Trivial loop prevention. TODO do better. 1 // TODO please remove these Demo commands and replace them with your own. They are here as templates. 1 // TODO why do we need this? 1 // TODO FIX NOW very inefficient. Use ReadValueChunk and FastStream to make more efficient. 1 #if false // TODO FIX NOW enable fails on eventSourceDemo.etl file 1 // TODO FIX NOW, this code here is for debugging only turn if off when we are happy. 1 // TODO: I have given up for now. IN addition to the events with LogCodeAddress, you also need any event with FixupData() 1 // TODO test this for correctness 4 // TODO response files. 3 // TODO should not be needed if we use CAPTURE_STATE when collecting. 1
  • TODO NOT DONE
  • 2 // TODO handle cases outside standard levels 1 return (((Address)highBits) << 32) + nativeOverlapped; // TODO this is NOT absolutely guaranteed not to collide. 1 // TODO FIX NOW remove ASAP (10/14) THIS IS A HACK imports with large sizes are wrong, fix PdbScope and remove 1 // TODO FIX NOW remove after experimentation (actually make it so that it is configurable). 1 if (payloadNames[index] == "objectId") // TODO this is a hack. 1 m_gcHeapDump.MemoryGraph = new MemoryGraph(10000); // TODO Can we be more accurate? 1 // TODO FIX NOW NOT DONE 3 // TODO this is a hack. The .NET Core Runtime < V2.1 do not emit an EndObject tag 1 // TODO this has a side effect... 1 /// Logs process performance counters (TODO When?) (Vista+ only) 1 // TODO does this need FixupData? 1 // TODO should we bother? 1 // We turn on stacks for the project N provider to get allocation tick events (TODO use event options to limit) 1 // TODO currently we just ignore messages without a valid string name. Is that OK? 1 // TODO: Need to cleanly separate clocks, but in practice there's only the one clock. 1 return StackSourceModuleIndex.Invalid; // TODO FIX NOW this is a poor approximation 1 // TODO FIX NOW REMOVE after V4.5 is out a while 1 #if false // TODO FIX NOW remove (it is not used and is not following conventions on array fields. 1 if (methodIds[(int)stackIds[(int)stackId].methodId] != null) // TODO 2 // TODO can stall if the path is a remote path. 1 lazyMethods.FinishRead(); // TODO REMOVE 1 // by excluding it here. TODO: this makes negative numbers harder... 1 // TODO USE or remove. See http://msdn.microsoft.com/en-us/library/windows/desktop/aa363689(v=vs.85).aspx 1 // TODO get rid of ugly 4 column restriction 1 // TODO REMOVE var dpd = DependencyPropertyDescriptor.FromProperty(TextProperty, typeof(ComboBox)); 1 // TODO this is relatively inefficient. 1 // TODO FIX NOW don't allocate every time 1 //TODO: Fill in 3 // TODO this is a bit of a hack, as it might replace other instances of the string. 1 // TODO be lazy about reading in the blobs. 1 // TODO FIX NOW make these private 1 // TODO get item under cursor, not selected item 1 // TODO this is kind of backwards. The super class should not know about the subclasses. 1 // TODO FIX NOW remove 1 // TODO: Is this size appropriate? 1 // TODO FIX NOW REMOVE 1 // TODO warn the user... 1 // TODO use message for opcode if it is available so it is localized. 1 // TODO Ugly, morph two cells on different rows into one line for the correct cut/paste experience 3 if (categoryName.StartsWith(".NET")) // TODO FIX NOW, remove this condition after we are confident of it. 1 #if false // TODO FIX NOW remove 2 // TODO this is lame no feedback on errors. 1 // TODO decide what the correct heuristic for deciding what start-stop events are interesting. 1 throw new Exception("Unsupported type " + type.Name); // TODO 1 // Turn on the new V4.5.1 ASP.Net EventSource (TODO Not clear we should do this, and how much to turn on). 1 // TODO review invarient here. 1 // TODO FIX NOW. We don't actually register any templates here because we know we are out of date (this file needs to be refreshed) 1 // TODO I think we can remove this, because we no longer pin the async handle. 1 /* The top 16 bits are reserved for system use (TODO define them) */ 1 // Convert to an application exception TODO is this a good idea? 2 /// TODO this is probably not worht the complexity... 1 #if true // TODO Decide if we want to expose these or not, ConnenctEventSource may be enough. These are a bit clunky especially but do allow the 1 Debug.Assert(!(Version == 0 && EventDataLength < 568)); // TODO changed by hand 1 public bool IsMoveNext; // As a special case MoveNext we ensure 'perfect' recursion removal (TODO: make this work for any method) 1 // TODO: Set these properties based on Ctf context 1 // TODO cache this when you parse the value so that you don't need to do it twice. Right now it is pretty inefficient. 1 // TODO we can use the nodes type to see if this is an RCW before doing this lookup which may be a bit more efficient. 1 // TODO we do paging, but this is not what we want when it is redirected. 1 // TODO: This is not IFastSerializable 1 if (classInfo == 0) // TODO FIX NOW, we should log something. 1 new InputGestureCollection() { new KeyGesture(Key.W, ModifierKeys.Alt) }); // TODO need multi-key shortcuts. 1 /* TODO FIX NOW: How do we get the thread ID of who did the awakening? 1 #if false // TODO decide if we want this. 1 Debug.Assert(0 <= eventData.TotalNonHeaderSize && eventData.TotalNonHeaderSize < 0x20000); // TODO really should be 64K but BulkSurvivingObjectRanges needs fixing. 1 // TODO FIX NOW this is sort ugly fix is so that commands are an enum 1 // TODO HACK. We have seen IIS Start and stop events that only have a 2 //TODO: Check that the file found has the correct timestamp and size. 1 /* TODO this one fails. decide what to do about it. 1 // TODO: do we want to expose useWholeTraceMetric = false too? 1 // TODO FIX NOW Implement. 1 // TODO add a fixed size string parser routine. 1 // TODO breaking abstraction to know about StackWindow. 1 // TODO determine why this happens! 1 // TODO this is not really correct, it assumes process IDs < 64K and images bases don't use lower bits 1 // TODO Debug.Assert(fileStackId <= 1 || methodIds[(int)stackIds[(int)ret].methodId].name != null); 1 // TODO REVIEW: This is moderately expensive. 1 // TODO deal with nulling out. 1 // TODO do we care that we left CPU samples abandoned? Probably not.... 1 /// TODO FIX NOW put in its own file. 1 m_findPat = new Regex(pat, RegexOptions.IgnoreCase); // TODO perf bad if you compile! 1 // TODO This is a clone of the logic below, factor it. 1 // TODO We give up if the chains are larger than 10K long (because we stack overflow otherwise) 1 // TODO FIX NOW 2 return; // TODO WARN 1 // Try to reuse the slot. Give up an allocate if necessary (TODO we can recycle if it happens frequently) 1 // TODO Using the source name here is a bit of hack. Heap Allocations, however are already filtered to a process. 1 // TODO FIX NOW REMOVE GCHeap.DumpHeapFromProcessDump(inputSpec, outputFile, Console.Out); 1 // TODO should we be doing this here? This feels like a presentation transformation 1 // TODO assert that the samples are associated with this source. 1 return (long)((((ulong)high) << 32) + low); // TODO find the most efficient way of doing this. 1 // TODO confirm this works right when parentStackInfo == null 1 // TODO FIX NOW Actually keep track of open windows, also does not track open event windows. 1 //TODO Currently, people may have recursive tasks that are not marked (because they can't if they want it to work before V4.6) 1 // TODO add logging that gets to the user. 1 // TODO: ideally we just call OnCreated, and OnStarted. 1 // TODO: predicate not used 1 // TODO we can do a better job here. If we have mulitple processe specs we simply don't focus right now. 1 // TODO FIX NOW the || condition is a hack because PerfVIew.ClrEnableParameters fails. 1 // TODO FIX NOW 1

    TODO NOT DONE

    1 // Debug.Assert(!(Version == 0 && EventDataLength != HostOffset(12, 1))); TODO FIX NOW disabled why wrong? 1 // TODO deal with this. 1 // TODO FIX NOW This is probably a hack 1 // TODO I need some way of handling string with , in them. 3 // TODO see if we can get the buffer size out of the ETL file to give a good number in the message. 1 block.m_refCount++; // TODO deal with overflow. 1 // TODO FIX NOW. no longer a dialog, ensure that it is unique? 1 parent = stack[depth - 1].FirstCallStackIndex; // TODO handle out of range 1 // TODO this is all a hack. 2 // TODO find out why this happens? I think this is because we try to do a ReadRVA 1 // TODO review this 1 // TODO FIX NOW ACTIVITIES: review 1 /// Good default kernel flags. (TODO more detail) 1 #if false // TODO FIX NOW remove 1 // TODO should it be summed over processes? 1 // by excluding it here. TODO: this makes negative numbers harder... 3 // TODO we actually end up with too large of dictionary because we also store the private methods too. 1 // TODO FIX NOW is this a hack? 2 // TODO not really a EVENT_RECORD on input, but it is a pain to be type-correct. 1 // TODO response files. 1 //TODO do we care about things in the GAC? it expands the search quite a bit. 1 // TODO we are not symetric, we use digits on the positive side but not negative. 1 // TODO remove and depend on framework for these instead. 1 #if false // TODO FIX NOW use or remove 1 // TODO FIX NOW, need to add ContainsPointer 1 // TODO the +1 is a bit of a hack. In treeviews we seem to loose a space 2 #if false // TODO Ideally you don't need Linux Specific versions, and it should be based 1 // TODO review this carefully. 1 // TODO can rip this out when we don't package ready-to-run images 1 // TODO hack, search for FileVersion string ... 1 1 m_args.DumpData = false; // TODO FIX NOW actually use 1 // TODO expose the ability to change this? 3 // TODO FIX NOW ACTIVITIES: review 1 // TODO Debug.Assert(ccwInfo.IUnknown != 0); 1 // TODO FIX NOW worry about error codes. 1 // TODO confirm the statement above is true. 1 // TODO incomplete, but this is all I need. 1 // TODO the samples are no longer in time order, do we care? 1 // TODO more sizes? 1 1 if (childNode != null) // TODO FIX NOW: I would not think this check would be needed. 1 // TODO can we get rid of this? 1 Debug.Assert(!(Version == 1 && EventDataLength < 8)); // TODO fixed by hand (can be better) 1 // TODO you can get service time (what XPERF gives) by taking the minimum of 1 // TODO should probably just reserve node index 0 to be an undefined object? 1 else if (typeStr.StartsWith("Enum(")) // TODO more support for enums 1 // TODO remove (including threadToLastAspNetGuid) after 9/2016 1 // TODO FIX NOW, investigate the missing events. All we know is that incs and dec are not 1 // TODO decide if we should keep this..., or maybe it should be true by default. 1 // TODO: We don't support reading floats. 1 // TODO we get different prefixes. skip it 1 // TODO too strong. 1 // TODO confirm no ambiguities (same alias used again). 3 // TODO FIX NOW this is probably a hack? 1 // TODO error conditions. 1 // !TODO captures state for all processes! This is not so bad because the others are probably 1 // TODO the defaults are wrong if you switch from run to collect and back 1 // TODO review this. IT is too subtle. 1 // TODO use an array instead of a dictionary. 1 // TODO use or delete 1 // TODO FIX NOW use re remove. 1 // TODO give better feedback about what happens when conflicts happen. 1 // TODO use callback model rather than enumerator 1 Debug.Assert(!(Version == 0 && EventDataLength < HostOffset(20, 1))); // TODO fixed by hand 1 // TODO assert that aliases are defined before the Definition. 3 // TODO FIX NOW use or remove 1 // TODO FIX NOW fix if you don't have symbols 2 // TODO is this error handling OK? 1 // TODO: in the sampling case, when you miss we only increment by the pointer size, which is pretty inefficient. 1 // TODO FIX NOW: Project N and the Desktop should not have two GUIDs 1 public override string[] FileExtensions { get { return new string[] { ".imageSize.xml", ".pdb.xml" }; } } // TODO remove pdb.xml after 1/2015 1 // TODO see can be more concurrent than this. 1 m_findPat = new Regex(pat, RegexOptions.IgnoreCase); // TODO perf bad if you compile! 2 // TODO is unsafe code worth it? 1 Debug.Assert(!(Version == 1 && EventDataLength < SkipUTF8String(SkipSID((Version >= 3) ? HostOffset(24, 2) : HostOffset(20, 1))))); // TODO fixed by hand 1 // Is it a generic type TODO better way of detecting? 1 // TODO fix 1 byID = null; // TODO right now we might get duplicates that have the same name but different ID. Give up. 1 // TODO Debug.Assert(task.id == 0); 1 // TODO decide how to fix this. 1 /// TODO FIX NOW Can rip out and make a constant 44 after 6/2014 1 m_collectionRunning = true; // TODO this is hack 1 /// TODO this really does not belong here. 1 // TODO as of 2/2015 there was a bug where the ActivityPath logic was getting this ID wrong, so we get to from the thread. 2 #if 0 // TODO FIX NOW implement 1 /// TODO: Currently this is only correct for the 32 bit version. 1 // TODO not quite right for strings with combinations of \ and "s 2 // TODO FIX NOW Currently I include the prototype link. is this a good idea? 1 // TODO this is probably inefficient, should only call back on classes that are variable sized 1 // TODO FIX NOW parser.DefineOptionalQualifier("DumpData", ref DumpData, "Dump the data as well as the connectivity information."); 1 // TODO FIX NOW use or remove. 1 // TODO do we want the RefCnt Info? 1 // TODO decide what the correct heuristic is. 2 // TODO should have an UnRegisterParser(TraceEventParser parser) API. 1 // TODO alias information. 3 // TODO FIX NOW, put this in the XAML instead 1 // Write out the dump (TODO we should do this incrementally). 1 // TODO does not work with the unmerged files 1 // TODO can remove after pdbScope gets a proper outputFileName parameter 1 // TODO implement 2 // TODO this can probably be made more efficient. 1 if (m_pdbLookupFailures != null && m_pdbLookupFailures.ContainsKey(module.PdbGuid)) // TODO we are assuming unique PDB names (at least for failures). 1 // TODO FIX NOW: decide what to do here, we originally did a recursive IsFolable but that causes very little folding. 1 // to do the lookup. TODO: is there a better way? 1 // TODO not clear I want this method (client could do it). 1 // We allow things that end in ntdll to be considered unbroken (TODO is this too strong?) 1 // TODO put in GUID, ID? 1 // TODO opcode wrong. 1 #if false // TODO this is a hack for VS traces that only did DCStarts but no DCStops. 1 // TODO this has a side effect... 3 #if false // TODO FIX NOW this causes undesirable side effects of closing any opened tree nodes. Remove permanently. 1 /// TODO FIX NOW document 1 // TODO FIX NOW don't throw exceptions, 1 // TODO FIX NOW, I have never run these! Get some data to test against. 1 // TODO 50000000 arbitrary. Fix underlying problem with merged ETL files. 1 // TODO pay attention to indent; 1 // TODO IsModuleEntry is an experiemental thing. Remove after gathering data. 2 str = AddSet(str, FilterParams.EscapeRegEx(cellStr)); // TODO need a good anchor 1 Debug.Assert(!(Version == 0 && EventDataLength < HostOffset(800, 1))); // TODO hand changed 1 // TODO All of this logic is suspect. it could use a careful review. 1 // TODO FIX NOW, log this! 1 // TODO FIX NOW. This is an ugly hack. 2 // because it confuses the upper level logic TODO: this is kind of a hack. 1 // Is it specially known. TODO should we remove some of these? 1 #if false // TODO FIX NOW: support post collection filtering? 1 // TODO FIX NOW, decide how I want this done. Do I select or do I use GetDataFielName 1 Debug.Assert(!(Version == 1 && EventDataLength < 584)); // TODO changed by hand 1 // TODO: provide a way of getting at all the loaded images. 1 // TODO turned on stacks for debugging probably should turn off in the long run. 1 // TODO use SafeHandles. 1 // TODO should we have stacks on for everything? 1 // TODO change casing? This is the PROFILER_HEAP_OBJECT_FLAGS enum 1 // TODO this is not right for corner cases (e.g. file paths with " or , } in them) 1 // TODO FIX NOW, try clause is a hack because ccwInfo.* methods sometime throw. 1 // TODO avoid search 2 // TODO we can do a better job here. If we have multiple processes specs we simply don't focus right now. 1 // TODO add an option that allows users to add their own here. 1 // And initialize the mapping from old nodes to new nodes. (TODO: this can be a hash table to save size? ) 1 // TODO I am leaking the file (but it is in the children directory) 1 // TODO This is for debugging. Can remove after we are happy with the algorithm. 1 // TODO decide if this is worth it 1 // TODO could be more efficient about process filtering by getting all the processes that match. 1 else if (archivePath == "PerfViewLogFile.txt" || archivePath == "LogFile.txt") // TODO we can remove the PerfViewLogFile.txt eventually (say in 2019) 1 // TODO this needs to be a runtime error, not an assert. 1 // TODO Debug.Assert(stackRecord->MatchId == 0); 1 // TODO FIX NOW also have to unregister the project N templates. 2 // TODO FIX NOW USE THE ONE IN TraceEvent 1 // TODO FIX NOW these are kind of hacks 1 /// TODO FIX NOW: these have not been validated yet. 1 // TODO FIX NOW this can be in kernel32 too 1 // TODO FIX NOW worry about duplicates between the public and private CLR providers. 1 // TODO cache the buffer?, handle more types, handle structs... 1 // TODO FIX NOW, time out faster if we seek to be stuck 2 // TODO should we keep track of the ref count and remove the entry when it drops past zero? 1 // TODO this logic is cloned. We need it in only one place. If you update it do the other location as well 1 1 // TODO This probably does not belong here, but I only want to this if the IL deltas are going up. 1 // TODO support eventSources 1 /// TODO FIX NOW used this instead of the weird if node index grows technique. 1 Debug.Assert(!(Version == 1 && EventDataLength < HostOffset(800, 1))); // TODO hand changed 1 // TODO optimize for sequential access. 3 return ip >= 0xFFFF000000000000; // TODO I don't know what the true cutoff is. 1 lazyCswitchBlockingEventsToStacks.FinishRead(); // TODO REMOVE 1 // TODO Fold this into the existing blob. Currently this dominates the Size cost of the graph! 1 new InputGestureCollection() { new KeyGesture(Key.Delete) }); // TODO is this shortcut a good idea? 1 // TODO we could make this smaller if we care since BaseFrame and ModuleIndex are never used together. 1 // TODO: we add 16 just to keep compatibility with the size we used before. This is a complete 1 // TODO see if we can use this in as many places as possible. 1 // TODO FIX NOW should be abstract, get CSV and ETW subclasses to implement 2 // TODO FIX NOW. Probably not right since it is only valid for PageKind==File 1 // TODO complete: MemInfo, TimeDateStamp, FreePages, Standby7, Standby6, Standby5, Standby4, Standby3, Standby2, Standby1, Standby0, TotalStandby, ModifiedPages, InUsePages, RepurposedPages 1 // TODO FIX NOW should not be virtual. 1 // TODO overflow 1 // If we have exceeded MaxRet, then mark that fact TODO inefficient as we parse all other fields too! 1 // TODO can be optimized to never allocate the incomplete stack. 2 // TODO FIX NOW for debugging. 1 // TODO add all the other columns. 1 // TODO not clear I want this method 1 // TODO version 5 seesm to have put 8 bytes after it (on 32 bit, maybe more on 64 bit. 1 // TODO FIX NOW do a better job keeping track of open windows 1 // TODO FIX NOW clean up symbols 1 // TODO FIX NOW gives 19 on win8 Debug.Assert(!(Version == 0 && EventDataLength != 22)); 1 //TODO: implement symbol server lookups, other options. 1 EnableProviderTimeoutMSec = 0; // Currently by default it is async (TODO change to 10000? by default) 2 // TODO Figure out if there is a marker that is used in the WOW for the classic providers 1 // TODO FIX NOW work for any assembly, not just he corresponding IL assembly. 1 // TODO - Currently nothing uses sampling. USE OR REMOVE 1 //TODO: Attempted file load order is NOT guaranteed, so the uncertainty will make output order non-deterministic. 1 // TODO FIX NOW, decide what to do about normalizing type names 1 // TODO FIX NOW. Find a way of determing which architecture a dump is 1 // TODO confirm this works with nested predicates 2 Console.WriteLine("Error during static Enumeration ignoring: {0}", e.Message); // TODO FIX NOW 1 // TODO: Handle objects that are pinned multiple times (?) 1 // TODO: Looking for better ways to inform the users when this happens. 1 // TODO: Fix (we'll need the last CPU stack as well). 1 Console.WriteLine("Error enumerating thread, continuing: {0}", e.Message); // TODO FIX NOW 1 // sort them. TODO can we get away without this? 1 /* Master TODO list */ 1 // TODO does this need FixupData? 1 // TODO we should null out data structures we no longer need, to save space. 1 // TODO FIX NOW issue with nested generic types 1 // TODO number of args is getting messy. 1 region.PrivateWorkingSet += 4; // TODO FIX NOW 1 // TODO FIX NOW dropping the last symbol. 1 // TODO check the sig blob and filter non-ref types. 1 /// TODO remove? we have not tested this with AllowLazyDeserialzation==false. 1 // TODO this can be reasonably expensive. If it is a problem do something about it (e.g. sampling) 1 // TODO this does now work for DCStarts. Do DCStarts event exist? 1 // TODO FIX NOW should this be a separate sub-type? 1 // TODO confirm that you are on the local machine before initializing in this way. 1 // TODO support some sort of escape sequence 1 // TODO use or delete 1 if (0 < delta && delta < 5) // TODO hack, give up after 5 msec 1 /// TODO FIX NOW cloned code (also in FilterStackSource) 1 // TODO move these to GraphUtils. 1 /// TODO Need a DEBUG mode where we detect if others besides the owner reference the object. 1 // TODO Is this really a good idea? 2 // TODO not quite right for V0 TcpIP (does anyone care?) 2 // TODO allow stacks only on open and close; 1 // TODO is this is at best heuristic. 1 if (Name == "BROKEN") // TODO use ID instead 1 // TODO this is not complete. See the ToStream for more. Does not include interop etc. 1 /// TODO: what does this do for Real time sessions? 1 long compressedBlockPosition = 0; // TODO FIX NOW 1 // TODO use the callback model. We seem to have an issue getting the names however. 1 /// TODO This implementation is poor at idenitfying the ParentPID, 64bitness, and Start/End times 1 // TODO is this a good idea? It tries to undo the anonimization a bit. 1 // TODO worry about invalid historyInfo names 1 #if false // TODO FIX NOW REMOVE 1 lazyCodeAddresses.FinishRead(); // TODO REMOVE 1 // TODO this is a clone of the free code. 1 // TODO: Can enums just be an inline defined integer? 1 // TODO: we really need to combine PerfDataGrid and EventViewer so that all this ugly logic is in one place. 1 int buffSize = 84000; // TODO this is inefficient (and incorrect for very large enums). 1 //} // End TODO FIX NOW debugging code 1 // THis is present VMMAP behavior. TODO We should think about doing better. 1 // TODO make public? 2 // TODO FIX NOW add appDomain ID 1