mirror of
https://github.com/vee1e/naksheap.git
synced 2026-09-01 10:18:37 +00:00
Rust workspace that turns a core dump of a stripped, optimized C/C++ binary into a typed heap object graph: objects, sizes, allocator state, references, and probable struct layouts, all without debug info. - glibc ptmalloc carving (main + thread arenas, tcache/fastbin freed state, mmap allocations), ELF core + memory-list minidump parsing - pointer scan, layout clustering, vtable/string/vector detection, confidence + evidence on every node - ASCII/JSON/Graphviz/HTML output, synthetic fixtures with ground truth, and real-dump validation harness (aarch64 glibc 2.39) in scripts/ - web deployment reference stack in deploy/ MIT OR Apache-2.0
37 lines
1.1 KiB
YAML
37 lines
1.1 KiB
YAML
services:
|
|
naksheap:
|
|
build:
|
|
context: ..
|
|
dockerfile: deploy/Dockerfile
|
|
image: naksheap-server:latest
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
NAKSHEAP_ARTIFACTS: /data
|
|
NAKSHEAP_MAX_UPLOAD_BYTES: "10737418240" # 10 GiB
|
|
NAKSHEAP_MAX_REPORTS: "1000"
|
|
volumes:
|
|
- naksheap-data:/data
|
|
# The analyzer NEVER initiates outbound connections by design (dump
|
|
# parsing is fully offline; the only external request is the optional
|
|
# cytoscape.js CDN fetch, made by the BROWSER, not this process). For hard
|
|
# egress isolation use the Kubernetes Job pattern + a NetworkPolicy, or
|
|
# run this behind a proxy that blocks outbound. `network_mode: none` is
|
|
# not usable here because the server must accept inbound uploads.
|
|
read_only: true
|
|
tmpfs:
|
|
- /tmp
|
|
user: "10001:10001"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 4Gi
|
|
cpus: "2"
|
|
healthcheck:
|
|
test: ["CMD", "python3", "-c", "import urllib.request;urllib.request.urlopen('http://127.0.0.1:8080/reports/')"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
|
|
volumes:
|
|
naksheap-data:
|