Blog
Mert Özen's blog posts on software development, backend, frontend, and DevOps.
Real-World Bug Hunts 2: Frontend and Integration — Cache, CORS, Dates and Memory Leaks
Most frontend bugs are born not in the code but in the gap between browser and server. Five real cases: a white screen after deploy from a cached index.html and missing chunks, a CORS preflight failing only in production because of a trailing slash, a birth date shifting by a day across time zones, floating point money totals and memory growing from an observable never unsubscribed; with the decisive tool for each and the series' debugging checklist.
Analyzing Crash and Memory Dumps: dotnet-dump, SOS Commands and Taking Dumps in Containers
We take crash dumps automatically with DOTNET_DbgEnableMiniDump and use pe -lines, clrthreads, dumpheap -stat, gcroot, syncblk and dumpasync in dotnet-dump analyze to find the crashing thread, a growing static cache and a lock deadlock. Plus PID 1 versus --init in containers, getting the tool into an SDK-less image, the OOM risk of Heap/Full dumps and personal data inside dumps.
Events in C#: EventHandler, Safe Raising and Subscription Leaks
How the event keyword protects a delegate and CS0070, the private field and add/remove methods the compiler generates, the EventHandler convention and records as event data, safe raising with ?.Invoke, custom add/remove accessors and CS0079, a 50 MB subscription leak measured with WeakReference, and a Subscribe method that returns IDisposable.