🚀 2,000,000+ Ops/Sec Zero External Dependencies Linux & WSL Compatible C & C++17 Ready

Real-Time Memory Profiling & Corruption Detection for C and C++ Profilazione di Memoria e Rilevamento Corruzioni in Tempo Reale per C e C++

Vortex intercepts memory operations via dynamic linkage and streams granular live telemetry to an interactive web dashboard. Zero recompilation, zero heap interference, and instant detection of leaks, buffer overflows, and use-after-free. Vortex intercetta le operazioni di memoria a basso livello e trasmette telemetria in tempo reale su una dashboard web interattiva. Nessuna ricompilazione richiesta, zero interferenze sull'heap e rilevamento istantaneo di leak, buffer overflow e use-after-free.

$ git clone https://github.com/Gabry022003/vortex-mem.git && cd vortex-mem && make
bash — vortex run ./my_app
$ ./vortex run ./my_app
Starting Live Telemetry C-Server on port 8000...
Opening Dashboard at http://localhost:8000...
[Vortex] Interceptor attached to PID 4129. Profiling active.
Streaming allocations over UDP: 2,045,444 ops/sec
[!] Buffer Overflow detected: 10 bytes written beyond allocation at 0x7fff5a9b
Callsite: parse_packet() at src/network.c:142
Report saved to: vortex_report.json. Interactive UI refreshed via SSE.

Engineered Beyond Conventional Approaches Progettato Oltre gli Approcci Convenzionali

See how Vortex compares against traditional post-mortem profilers and compiler-bound sanitizers. Scopri come si confronta Vortex rispetto ai profiler tradizionali post-mortem e agli strumenti basati su ricompilazione.

Key CapabilityCaratteristica Chiave Traditional ProfilersProfiler Tradizionali Compiler-Bound SanitizersStrumenti con Ricompilazione Vortex Profiler
Runtime OverheadOverhead di Esecuzione Severe (20x - 50x slowdown)Severo (20x - 50x rallentamento) Moderate (~2x slowdown)Moderato (~2x rallentamento) Near-Native (2M+ ops/sec)Quasi-Nativo (2M+ ops/sec)
Source Code RequirementRequisito Codice Sorgente No recompilation neededNessuna ricompilazione Mandatory RecompilationRicompilazione Obbligatoria Zero Recompilation (LD_PRELOAD)Nessuna Ricompilazione
Observability ModelModello di Osservabilità Post-Mortem Text LogLog Testuale a Fine Programma Crash-Time Terminal DumpDump a Terminale al Crash Live Real-Time Web DashboardDashboard Web Live in Tempo Reale
Closed-Source & 3rd Party LibsBinari Closed-Source & Terze Parti SupportedSupportato Not SupportedNon Supportato Fully SupportedCompletamente Supportato
Corruption DetectionRilevamento Corruzioni Yes (Heavy latency)Sì (Molto lento) Yes Yes (Redzones & Quarantine)Sì (Canarini & Quarantena)
Optimization HeuristicsConsigli di Ottimizzazione NoneNessuno NoneNessuno Integrated Diagnostic EngineMotore Diagnostico Integrato

Tailored for Every Development Stage Adatto a Ogni Fase di Sviluppo

Choose between ultra-fast performance profiling or deep memory corruption auditing. Scegli tra profilazione ultra-veloce delle prestazioni o analisi profonda di sicurezza della memoria.

Default ModeModalità Predefinita

⚡ Performance Mode⚡ Modalità Performance

Engineered for throughput-critical benchmarks, production-like testbeds, and real-time interactive debugging. Delivers detailed call-site metrics and leak identification with virtually zero latency. Progettata per benchmark ad alte prestazioni, test realistici e debugging interattivo. Fornisce metriche dettagliate per call-site e identificazione dei leak con latenza quasi nulla.

  • 🔹 Zero-Interference Tracking via striped hash mapsTracciamento a zero interferenza via hash table a stripe
  • 🔹 Live UDP Telemetry streamed to the web dashboardTelemetria UDP Live trasmessa alla dashboard
  • 🔹 Flame Graph & Timelines with instant visual feedbackFlame Graph & Timeline con feedback visivo immediato
./vortex run ./bin/my_app
Safety & Corruption AuditSicurezza & Audit Corruzioni

🛡️ Heavy Mode🛡️ Modalità Heavy

Activates canary guards and deferred deallocation queues to immediately detect memory corruptions before they manifest as silent vulnerabilities or sporadic crashes. Attiva canarini di guardia e code di disallocazione differite per scovare le corruzioni di memoria prima che diventino vulnerabilità silenti o crash sporadici.

  • 🛡️ Canary Redzones: 16-byte signatures detect buffer overflows & underflowsRedzones (Canarini): pattern da 16 byte per rilevare overflow e underflow
  • 🛡️ Poisoned Quarantine: Replaces deallocation with a poisoned FIFO queue to catch Use-After-FreeQuarantena Avvelenata: coda FIFO che avvelena la memoria libera per catturare gli Use-After-Free
  • 🛡️ Automatic Pinpointing: Source file and exact line numbers via addr2lineIndividuazione Automatica: file sorgente e riga esatta con addr2line
./vortex run --heavy ./bin/my_app

Memory Allocation Trend (Timeline Profile) Andamento del Consumo di Memoria (Profilo Temporale)

Illustrative curve of heap usage and peak allocation spikes tracked over execution time. Curva d'esempio dell'uso della memoria heap e dei picchi di allocazione monitorati nel tempo di esecuzione.

http://localhost:8000 — Vortex Observability Suite
TIMELINE TELEMETRY PROFILE PROFILO TEMPORALE TELEMETRIA
Live Heap MemoryMemoria Heap Live
14.82 MB
+0.24 MB/s sampling
Active AllocationsAllocazioni Attive
28,412
0 Leaks Detected
Peak Heap FootprintPicco Massimo Heap
32.10 MB
Recorded at T+0.84s
Profiling ThroughputThroughput Profiler
2.05M ops/s
64 Cache Stripes
REAL-TIME HEAP ALLOCATION TIMELINE (60 SECONDS SAMPLING) 14.82 MB
Resolved Call-SitePunto di Chiamata Risolto API FunctionFunzione API Total CallsChiamate Totali Avg SizeDimensione Media Avg LifetimeVita Media StatusStato
src/network.c:142 (parse_packet) malloc 42,100 64 B 0.12 ms ● Active
src/protocol.c:78 (init_session) calloc 1,840 1,024 B 12.40 ms ● Active
src/buffer.c:210 (expand_queue) realloc 320 4,096 B Persistent ● Retained

Automated Diagnostic Suggestions Diagnostica e Suggerimenti Automatici

Vortex doesn't just list addresses; its analysis engine automatically categorizes behavioral memory patterns and suggests targeted architectural fixes. Vortex non si limita a elencare indirizzi; il suo motore analitico identifica pattern di memoria anomali e suggerisce fix architetturali precisi.

🔁

Loop Leak DetectorRilevatore di Leak in Loop

Identifies allocations repeated within loops or iterative tasks that fail to deallocate before the next cycle, pinpointing uncollected batches. Identifica allocazioni ripetute dentro cicli o task iterativi che non vengono deallocate prima del ciclo successivo, segnalando accumuli anomali.

📈

Growing ContainersContenitori in Crescita Illimitata

Detects collections, buffers, or queues whose allocation frequency steadily increases over time without draining or bounded caps. Rileva collezioni, buffer o code la cui frequenza di allocazione cresce continuamente senza svuotamento o limiti prestabiliti.

🧱

Stack Buffer CandidatesCandidati per lo Stack

Suggests replacing heap allocations with stack buffers (or Small Buffer Optimization) for temporary allocations with average lifetimes <5ms. Suggerisce di sostituire l'heap con buffer sullo stack (o Small Buffer Optimization) per blocchi temporanei con vita media inferiore a 5ms.

🏊

Memory Pool CandidatesCandidati per Memory Pool

Flags call-sites generating hundreds of identically-sized buffers, advising slab or pool allocation to cut malloc overhead by up to 90%. Segnala call-site che generano centinaia di buffer della stessa identica dimensione, consigliando un allocatore a slab/pool per tagliare l'overhead fino al 90%.

High Churn AnalysisAnalisi di Alto Churn

Pinpoints excessive allocate/free churn in hot inner loops, recommending buffer reuse or thread-local free lists. Individua frequenze eccessive di allocazione/deallocazione rapida nei loop critici, suggerendo il riutilizzo dei buffer.

🔥

Interactive Flame GraphsFlame Graph Interattivi

Hierarchically aggregates call-stack trees directly in the web UI, letting you zoom into high-consumption functions with a click. Aggrega gerarchicamente l'albero delle chiamate nella UI web, permettendo di zoomare con un click sulle funzioni che consumano più RAM.

Up and Running in 30 Seconds Operativo in 30 Secondi

Works out of the box on Linux distributions and Windows Subsystem for Linux (WSL). Funziona direttamente su distribuzioni Linux e Windows Subsystem for Linux (WSL).

1. Clone & Compile the Native Engine 1. Clona e Compila il Motore Nativo

git clone https://github.com/Gabry022003/vortex-mem.git && cd vortex-mem && make

2. Profile Any Application with Live Dashboard 2. Profila Qualsiasi Applicazione con Dashboard Live

./vortex run ./bin/your_executable

Automatically spins up the C-Server and opens http://localhost:8000 in your browser. Avvia automaticamente il C-Server e apre http://localhost:8000 nel browser.

3. Headless / Automated CI/CD Pipelines 3. Modalità Headless per Pipeline CI/CD

./vortex run --ci ./bin/your_executable

Executes silently without opening a browser and writes structured metrics to vortex_report.json. Esegue in silenzio senza aprire il browser e genera il file strutturato vortex_report.json.

Low-Level Technical Architecture Architettura Tecnica di Basso Livello

Designed around a strict zero-interference philosophy to ensure the profiler never disturbs the observed program. Progettato con una filosofia a zero interferenza per garantire che il profiler non alteri il programma osservato.

1

Zero-Interference Heap ManagementGestione Heap a Zero Interferenza

Internal tracking hash tables are allocated directly via mmap(MAP_PRIVATE | MAP_ANONYMOUS), while startup libc calls (like dlsym invoking calloc) are fulfilled by a static 4MB bump allocator. The application's heap remains pristine. Le hash table interne vengono allocate con mmap(MAP_PRIVATE | MAP_ANONYMOUS), mentre l'avvio della libc (come dlsym che invoca calloc) è gestito da un bump allocator statico da 4MB. L'heap dell'applicazione rimane incontaminato.

2

Striped Locking ArchitectureArchitettura a Striped Locking

Eliminates global mutex bottlenecks using 64 independent stripes aligned to CPU cache lines (64 bytes). Multiple concurrent threads allocate memory simultaneously without false sharing or contention spikes. Elimina i colli di bottiglia del mutex globale con 64 stripe indipendenti allineate alle linee di cache della CPU (64 byte). Thread multipli allocano memoria in parallelo senza contesa o rallentamenti.

3

Asynchronous Signal DecouplingDisaccoppiamento Asincrono dei Segnali

Fatal crashes (SIGSEGV, SIGBUS) immediately abort to prevent recursive deadlocks, while termination signals write to a non-blocking pipe that triggers report serialization on a dedicated telemetry thread. I crash fatali (SIGSEGV, SIGBUS) abortiscono immediatamente per evitare deadlock ricorsivi, mentre i segnali di terminazione scrivono su una pipe non-bloccante gestita dal thread di telemetria.

4

Multi-Process Fork HandlingGestione Multi-Processo (fork)

Integrated pthread_atfork handlers suspend locks and state during fork(), safely resuming in both parent and child processes with dynamically isolated report targets. Gli handler pthread_atfork sospendono lock e stato prima della fork(), riprendendo l'esecuzione in sicurezza nel genitore e nel figlio con file di report separati.

Technical FAQ FAQ Tecniche

Common engineering questions regarding runtime semantics, security, and low-level mechanics. Risposte immediate ai dubbi tecnici più comuni su sicurezza, semantica di runtime e meccaniche interne.

Does Vortex require root or sudo privileges?Vortex richiede privilegi di root o sudo? +
No. Vortex operates entirely within standard user-space via the POSIX dynamic linker (LD_PRELOAD). It requires zero elevated privileges and leaves your system configuration untouched. No. Vortex opera interamente nello spazio utente tramite il dynamic linker POSIX (LD_PRELOAD). Non richiede privilegi speciali di sistema e non modifica la configurazione dell'OS.
Does it support closed-source binaries and 3rd-party shared libraries?Supporta binari closed-source e librerie di terze parti precompilate? +
Yes. Because Vortex hooks dynamic allocation symbols at the libc boundary, any executable or dynamically linked third-party .so library is monitored seamlessly without needing the original source code. Sì. Poiché Vortex intercetta le funzioni di allocazione sui confini della libc, qualsiasi eseguibile o libreria condivisa .so di terze parti viene tracciata nativamente senza bisogno del codice sorgente originale.
How does Vortex prevent lock contention in heavily multi-threaded programs?Come evita la contesa dei lock nei programmi multi-thread intensivi? +
Vortex splits its internal pointer tracking into 64 distinct hash stripes, each protected by an independent, CPU cache-line aligned spinlock. Threads allocating concurrently hash to different stripes with virtually zero contention. Vortex suddivide il tracciamento dei puntatori in 64 stripe hash indipendenti, ciascuna protetta da uno spinlock allineato alla cache CPU. I thread che allocano simultaneamente finiscono su stripe diverse con contesa praticamente nulla.
Can Vortex be integrated into CI/CD automated test pipelines?Come si integra Vortex nelle pipeline CI/CD di testing automatico? +
Yes. Using ./vortex run --ci ./bin/app, the web server is suppressed. Vortex runs the binary headlessly, emits a machine-readable vortex_report.json, and exits with code 1 if any leaks or corruptions are found. Sì. Usando ./vortex run --ci ./bin/app, il server web non viene avviato. Vortex esegue il test in modalità headless, genera il report JSON strutturato vortex_report.json e termina con codice di errore 1 se rileva anomalie.