From 32540e7712ea6a78153ee28b3a787e83de03e2aa Mon Sep 17 00:00:00 2001 From: Laurent Clouet Date: Sun, 3 Apr 2016 20:49:24 +0200 Subject: [PATCH] Detect if renderer ran out of memory --- src/com/sheepit/client/Error.java | 1 + src/com/sheepit/client/Job.java | 11 +++++++++++ 2 files changed, 12 insertions(+) diff --git a/src/com/sheepit/client/Error.java b/src/com/sheepit/client/Error.java index 2822dca..474711d 100755 --- a/src/com/sheepit/client/Error.java +++ b/src/com/sheepit/client/Error.java @@ -37,6 +37,7 @@ public class Error { NETWORK_ISSUE(11), RENDERER_CRASHED(12), RENDERER_OUT_OF_VIDEO_MEMORY(13), + RENDERER_OUT_OF_MEMORY(21), RENDERER_KILLED(14), RENDERER_KILLED_BY_USER(20), RENDERER_MISSING_LIBRARIES(15), diff --git a/src/com/sheepit/client/Job.java b/src/com/sheepit/client/Job.java index 59466fe..408a720 100644 --- a/src/com/sheepit/client/Job.java +++ b/src/com/sheepit/client/Job.java @@ -592,6 +592,17 @@ public class Job { // what(): boost::filesystem::create_directory: Permission denied: "/var/local/cache" return Error.Type.NOOUTPUTFILE; } + else if (line.indexOf("terminate called after throwing an instance of 'std::bad_alloc'") != -1) { + // Fra:80 Mem:1333.02M (0.00M, Peak 1651.23M) | Mem:780.37M, Peak:780.37M | Scene, RenderLayer | Updating Mesh BVH Plane.083 171/2 | Building BVH + // Fra:80 Mem:1333.02M (0.00M, Peak 1651.23M) | Mem:780.37M, Peak:780.37M | Scene, RenderLayer | Updating Mesh BVH Mesh 172/2 | Building BVH + // Fra:80 Mem:1333.02M (0.00M, Peak 1651.23M) | Mem:780.37M, Peak:780.37M | Scene, RenderLayer | Updating Mesh BVH Mesh 172/2 | Packing BVH triangles and strands + // Fra:80 Mem:1333.02M (0.00M, Peak 1651.23M) | Mem:780.37M, Peak:780.37M | Scene, RenderLayer | Updating Mesh BVH Mesh 172/2 | Packing BVH nodes + // Fra:80 Mem:1333.02M (0.00M, Peak 1651.23M) | Mem:780.37M, Peak:780.37M | Scene, RenderLayer | Updating Scene BVH | Building + // Fra:80 Mem:1333.02M (0.00M, Peak 1651.23M) | Mem:780.37M, Peak:780.37M | Scene, RenderLayer | Updating Scene BVH | Building BVH + // terminate called after throwing an instance of 'std::bad_alloc' + // what(): std::bad_alloc + return Error.Type.RENDERER_OUT_OF_MEMORY; + } return Type.OK; }