diff --git a/convex-cli/GENESIS.md b/convex-cli/GENESIS.md index d0aa6aaee..0462319ef 100644 --- a/convex-cli/GENESIS.md +++ b/convex-cli/GENESIS.md @@ -40,3 +40,26 @@ alias convex="java -jar ~/convex.jar" ### Upload keystore + + +### Managing with screen + +Start screen session + +``` +screen +``` + +Run peer + +``` +convex peer start +``` + +Detach with Ctrl-a + Ctrl-d + +Back to screen with: + +``` +screen -r +``` \ No newline at end of file diff --git a/convex-core/src/main/java/convex/core/cvm/ops/Invoke.java b/convex-core/src/main/java/convex/core/cvm/ops/Invoke.java index 2f707cb65..5869895b9 100644 --- a/convex-core/src/main/java/convex/core/cvm/ops/Invoke.java +++ b/convex-core/src/main/java/convex/core/cvm/ops/Invoke.java @@ -102,8 +102,11 @@ public Context execute(Context context) { // Specific check for an error so we can add stack trace info if (ctx.isError()) { // getError()must be non-null at this point - - ctx.getError().addTrace("In expression: "+RT.print(this)); + try { + ctx.getError().addTrace("In expression: "+RT.print(this)); + } catch (Exception e) { + ctx.getError().addTrace("TRACE FAILED"); + } } return ctx; diff --git a/convex-core/src/main/java/convex/core/lang/impl/MultiFn.java b/convex-core/src/main/java/convex/core/lang/impl/MultiFn.java index 0491f47ee..d520a86f8 100644 --- a/convex-core/src/main/java/convex/core/lang/impl/MultiFn.java +++ b/convex-core/src/main/java/convex/core/lang/impl/MultiFn.java @@ -53,10 +53,15 @@ public boolean printInternal(BlobBuilder bb, long limit) { AVector> fns=getFunctions(); for (long i=0; i0) bb.append(' '); - bb.append('('); AClosure fn=Fn.ensureFunction(fns.get(i)); - if (!fn.printInternal(bb,limit)) return false;; - bb.append(')'); + if (fn==null) { + bb.append("nil"); + if (!bb.check(limit)) return false; + } else { + bb.append('('); + if (!fn.printInternal(bb,limit)) return false; + bb.append(')'); + } } return bb.check(limit); }