CLR internals, Rotor code explanation, CLR debugging tips, trivial debugging notes, .NET programming pitfalls, and blah, blah, blah...
Browse by Tags
All Tags »
CLR internal and Misc (RSS)
-
I got email asking me to explain !Threads output in details. I think this is a good question and a good topic for another installment to the series. Here is an example I'll use for this post: 0:055> !threads ThreadCount: 202 UnstartedThread: 95 BackgroundThread: Read More...
|
-
With knowledge in my previous blog , we could avoid some mistakes in .NET programming. A C++ Thread is very resource heavy. It is associated with a lot of dynamically allocated memory and some OS handles. So it had better to be cleaned up ASAP after its Read More...
|
-
If you use SOS’s !Threads command during debugging a lot, you should be familiar with such output: 0:003> !threads PDB symbol for mscorwks.dll not loaded Loaded Son of Strike data table version 5 from "C:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\mscorwks.dll" Read More...
|
-
Question: How many threads does a typical managed process have when it just starts to run? Answer: regardless how many threads the user creates, there are at least 3 threads for a common managed process after CLR starts up: a main thread which starts Read More...
|
-
I changed the program in previous post to use new Whidbey syntax. using namespace System; ref class RefT { public: RefT () {Console::WriteLine ("RefT::RefT");} ~RefT () {Console::WriteLine ("RefT::~RefT");} !RefT () {Console::WriteLine ("RefT::!RefT");} Read More...
|
-
As a C++ fan, I'm a long time admirer for deterministic finalization. I think introduction of garbage collection to C style language by Java and .Net is a huge improvement. However, I found lose of deterministic destructor is almost unacceptable when Read More...
|
-
There is a bug in this program below, try to see if you could catch it. Test.cs (compiled to DelegateExample.exe): using System; using System.Threading; using System.Runtime.InteropServices; class Test { delegate uint ThreadProc (IntPtr arg); private Read More...
|
-
I didn't realize I've stopped blogging for 1 year. What a shame! Fortunately I didn’t waste the time: we ship Whidbey Beta1 and Beta2 in the past year! Now with Beta2 out of door, I have more spare time for blogging. :) Today I want to talk about some Read More...
|
-
Objects in CLR are usually managed by the runtime in GC heap; user code does not have direct access to the objects. CLR's reliability and type safety heavily rely on this fact. But CLR also support InterOp features like COM InterOp, IJW and PInvoke to Read More...
|
-
An exsample of FCall My friend Joel Pobar had a great post to demo how to add new code to Rotor which exposes more EE(Execution Engine) internal information to managed world. This is a very good example covers both BCL and EE, and how the two parts interact Read More...
|
-
As you all know, in CLR memory management is done by Garbage collector (GC). When GC can't find memory in preallocated memory chunk (GC heap) for new objects and can't book enough memory from the OS to expand GC heap, it throws OutOfMemoryException (OOM). Read More...
|