Debugging a MongoDB Performance Regression with perf, Flamegraphs, and gdb (4.2.1 vs 4.0.13)

I recently chased down a write-heavy performance regression that showed up when running the same workload on MongoDB 4.2.1 versus MongoDB 4.0.13. The punchline: the “slow” version spent a surprising amount of CPU time rebuilding WiredTiger row-store keys during eviction-driven reconciliation. With a targeted fix to key handling, the regression disappeared. This post walks through the debugging approach end-to-end: how I reproduced the issue, what the flamegraphs revealed, how I used gdb to confirm the execution path, and why the root cause points to a specific key-buffer reset. ...

December 16, 2025

CyberSCI CTF Write-up: Water Treatment (Part 1)

I recently tackled the Water Treatment reverse engineering challenge from the CyberSCI Regionals 2025-26. The challenge involves a legacy 16-bit MS-DOS executable (wt.exe) and consists of three flags. I managed to solve the first flag during the hackathon and the second one afterwards. This post details how I cracked the password to get the “Access Granted” message. Here is how I went from raw assembly to a successful crack using Ghidra and Python. ...

November 30, 2025