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
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) | YesSì | Yes (Redzones & Quarantine)Sì (Canarini & Quarantena) |
| Optimization HeuristicsConsigli di Ottimizzazione | NoneNessuno | NoneNessuno | Integrated Diagnostic EngineMotore Diagnostico Integrato |
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.
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.
./vortex run ./bin/my_app
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.
./vortex run --heavy ./bin/my_app
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.
| 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 |
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.
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.
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.
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.
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%.
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.
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.
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).
git clone https://github.com/Gabry022003/vortex-mem.git && cd vortex-mem && make
./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.
./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.
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.
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.
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.
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.
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.
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.
sudo privileges?Vortex richiede privilegi di root o sudo?
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.
.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.
./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.