vvvv-troubleshooting
Original:🇺🇸 English
Translated
Diagnoses and fixes common vvvv gamma errors in C# nodes, SDSL shaders, and runtime behavior. Use when encountering errors, exceptions, crashes, red nodes, shader compilation failures, missing nodes in the browser, performance issues, or unexpected behavior.
6installs
Sourcetebjan/vvvv-skills
Added on
NPX Install
npx skill4agent add tebjan/vvvv-skills vvvv-troubleshootingTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →vvvv gamma Troubleshooting
C# / ProcessNode Issues
"Node" Suffix in Class Name
Symptom: Node works but has ugly name in vvvv.
Fix: Remove "Node" suffix — vvvv convention forbids it.
csharp
// WRONG
[ProcessNode]
public class SteeringBehaviorNode { }
// CORRECT
[ProcessNode]
public class SteeringBehavior { }Out Parameters After Inputs
Symptom: Pins appear in wrong order or node doesn't compile correctly.
Fix: parameters must come FIRST in Update signature.
outcsharp
// WRONG
public void Update(float input = 0f, out float result) { ... }
// CORRECT
public void Update(out float result, float input = 0f) { ... }Node Not Appearing in Node Browser
Symptom: Your C# class exists but doesn't show up in vvvv.
Fix: Check these in order:
- attribute exists in your project
[assembly: ImportAsIs] - attribute on the class
[ProcessNode] - Project targets
net8.0 - DLL is in the correct path relative to
lib/net8.0/document.vl - Project builds without errors
Allocations Causing Frame Drops
Symptom: GC spikes, stuttering, frame drops.
Diagnosis: Allocations in the Update loop.
Common culprits:
- keyword in Update method
new - LINQ operators (,
.Where(),.Select()).ToList() - String concatenation (operator on strings)
+ - Boxing value types (passing where
intexpected)object
Fix: Cache everything, pre-allocate buffers, eliminate LINQ from hot paths.
Missing Change Detection
Symptom: CPU usage high even when nothing changes.
Fix: Compare inputs to cached values, only recompute on change.
csharp
if (param != _lastParam)
{
_cached = Compute(param);
_lastParam = param;
}
result = _cached; // Always output cachedDownstream Nodes See null/default
Symptom: Connected nodes get no data, even though the node "works".
Fix: Always output cached result, even when no computation happens.
csharp
// WRONG — output is only set inside the if block
public void Update(out float result, float input = 0f)
{
if (input != _last)
{
result = Compute(input);
_last = input;
}
// result is unassigned when input hasn't changed!
}
// CORRECT — always assign output
public void Update(out float result, float input = 0f)
{
if (input != _last)
{
_cached = Compute(input);
_last = input;
}
result = _cached;
}SDSL Shader Issues
For SDSL syntax rules, common mistakes, and correct/wrong examples, see vvvv-shaders/syntax-rules.md. Key issues: scope, missing semicolons, missing , enum binding format.
static constoverrideRuntime Issues
Memory Leaks
Symptom: Memory usage grows over time.
Causes:
- Missing on nodes with native resources
IDisposable - COM objects () not disposed
ComPtr<T> - Event handler subscriptions not unsubscribed
Thread Safety
Symptom: Intermittent crashes, data corruption.
Fix: runs on the main thread. Capture in the constructor, then marshal background results back:
Update()SynchronizationContextcsharp
private SynchronizationContext _vlSyncContext;
public MyNode()
{
_vlSyncContext = SynchronizationContext.Current!;
}
// From background thread:
_vlSyncContext.Post(_ => { /* runs on VL thread */ }, null);Circular Dependencies
Symptom: vvvv warns about circular dependency, patch won't compile.
Fix: Insert a node to break the cycle.
FrameDelayBuild Issues
Target Framework Mismatch
Symptom: DLL loads but types aren't found.
Fix: Ensure targets (matching vvvv gamma's runtime).
.csprojnet8.0Assembly Version Conflicts
Symptom: or at runtime.
Fix: Align package versions with vvvv's bundled versions. Check vvvv's folder for reference.
FileLoadExceptionTypeLoadExceptionlib/For detailed error-to-solution mapping, see error-catalog.md.