Page MenuHome

Crash when Brush Collection in the same Collection as Ocean+DynamicPaintCanvas
Open, ConfirmedPublic

Description

System Information
Windows , GTX 1080

Blender Version
Broken: 2.8 Hash: 1844ccd5210

Short description of error
I like to make things float on Oceans in Blender by brushing a weight group on the ocean and constraining an object to this group. It works when the Brushgroup is not in the same collection as the ocean, but Blender 2.8 crashes when the Brush collection is in the same collection.

Here is file I prepared to show you: https://www.dropbox.com/s/j4s9aoqtddkxqtx/Crashreport.blend?dl=0

Initially it should work fine, but when you move the "Wave" collection (Brush collection for the Wave Surface on the Ocean's Dynamic Paint) into the Ocean Collection and change values like "scale" in the ocean modifier Blender Crashes.

Exact steps for others to reproduce the error
Here is how I prepared the Example blend:
I tried to minimize steps as much as possible

Steps:

  1. Make 3 Collections: I'll name them Ocean, Wave and Weight (not nested to have it running without crash at first; Wave and Weight will be Brushcollections)
  2. Add plane;

+ ocean modifier,
+ dynamic paint

		+set to canvas and 
			+add 2 surfaces:
				+1. Name Wave, set surface type to Wave, set brush collection group to Wave 
				+2. Name Weight, set surface type to Weight,  brush collection to Weight, generate Output/Vertex Group  "dp_weight"

[animate ocean by Time if you like to see the result of ]

  1. Add Sphere

move sphere to Weight collection
+ add dynamic paint

		set to brush 
		add brush
		generate

probably set to viewport Display to Wire to see the result

  1. Add Cube:

move or copy to Wave collection
+ add dynamic Paint

		set to Brush 
		add Brush

add Copy location constraint

		Target: Ocean 
		Vertex Group: dp_weight

Now the cube should float and make waves. System Console complains a bit about Cycle Dependencies but it still works (as it did in 2.7x)
It's crashing when Collection Wave is in the same Collection like Ocean and you change a change Values e.g. scale in the Ocean Modifier.

Details

Type
Bug

Event Timeline

Bastien Montagne (mont29) triaged this task as Confirmed priority.Thu, Nov 29, 11:18 AM

Crash confirmed, @Sergey Sharybin (sergey) assigning to you for now, this seems to be related to depsgraph… Here is a backtrace:

=================================================================
==910==ERROR: AddressSanitizer: heap-use-after-free on address 0x61a0000a4530 at pc 0x5555e8e4b463 bp 0x7f61dbbf1b00 sp 0x7f61dbbf1af8
READ of size 4 at 0x61a0000a4530 thread T19
    #0 0x5555e8e4b462 in doOcean /home/i74700deb64/blender/__work__/2.8/source/blender/modifiers/intern/MOD_ocean.c:406
    #1 0x5555e8e4c3eb in applyModifier /home/i74700deb64/blender/__work__/2.8/source/blender/modifiers/intern/MOD_ocean.c:504
    #2 0x5555e9e2e46f in modwrap_applyModifier /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/modifier.c:839
    #3 0x5555e9a8dc13 in mesh_calc_modifiers /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/DerivedMesh.c:1446
    #4 0x5555e9a9315b in mesh_build_data /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/DerivedMesh.c:2010
    #5 0x5555e9a93a94 in makeDerivedMesh /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/DerivedMesh.c:2120
    #6 0x5555e9ec5171 in BKE_object_handle_data_update /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/object_update.c:205
    #7 0x5555e9ec61f9 in BKE_object_eval_uber_data /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/object_update.c:348
    #8 0x5555ea9abd3d in void std::__invoke_impl<void, void (*&)(Depsgraph*, Scene*, Object*), Depsgraph*, Scene*&, Object*&>(std::__invoke_other, void (*&)(Depsgraph*, Scene*, Object*), Depsgraph*&&, Scene*&, Object*&) /usr/include/c++/8/bits/invoke.h:60
    #9 0x5555ea9a9b6d in std::__invoke_result<void (*&)(Depsgraph*, Scene*, Object*), Depsgraph*, Scene*&, Object*&>::type std::__invoke<void (*&)(Depsgraph*, Scene*, Object*), Depsgraph*, Scene*&, Object*&>(void (*&)(Depsgraph*, Scene*, Object*), Depsgraph*&&, Scene*&, Object*&) /usr/include/c++/8/bits/invoke.h:95
    #10 0x5555ea9a73c4 in void std::_Bind<void (*(std::_Placeholder<1>, Scene*, Object*))(Depsgraph*, Scene*, Object*)>::__call<void, Depsgraph*&&, 0ul, 1ul, 2ul>(std::tuple<Depsgraph*&&>&&, std::_Index_tuple<0ul, 1ul, 2ul>) /usr/include/c++/8/functional:400
    #11 0x5555ea9a32b5 in void std::_Bind<void (*(std::_Placeholder<1>, Scene*, Object*))(Depsgraph*, Scene*, Object*)>::operator()<Depsgraph*, void>(Depsgraph*&&) /usr/include/c++/8/functional:484
    #12 0x5555ea99ddb7 in std::_Function_handler<void (Depsgraph*), std::_Bind<void (*(std::_Placeholder<1>, Scene*, Object*))(Depsgraph*, Scene*, Object*)> >::_M_invoke(std::_Any_data const&, Depsgraph*&&) /usr/include/c++/8/bits/std_function.h:297
    #13 0x5555ea9d569d in std::function<void (Depsgraph*)>::operator()(Depsgraph*) const /usr/include/c++/8/bits/std_function.h:687
    #14 0x5555ea9d3caa in deg_task_run_func /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval.cc:94
    #15 0x5555ea93c4b8 in task_scheduler_thread_run /home/i74700deb64/blender/__work__/2.8/source/blender/blenlib/intern/task.c:441
    #16 0x7f62127cdf29 in start_thread /build/glibc-aYuVJl/glibc-2.27/nptl/pthread_create.c:463
    #17 0x7f62083e5ede in __clone (/lib/x86_64-linux-gnu/libc.so.6+0xf7ede)

0x61a0000a4530 is located 176 bytes inside of 1296-byte region [0x61a0000a4480,0x61a0000a4990)
freed by thread T0 here:
    #0 0x7f6214914b50 in __interceptor_free (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xe8b50)
    #1 0x5555eaf780cc in MEM_lockfree_freeN /home/i74700deb64/blender/__work__/2.8/intern/guardedalloc/intern/mallocn_lockfree_impl.c:164
    #2 0x5555e9e2a14d in modifier_free_ex /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/modifier.c:173
    #3 0x5555e9e8faa6 in BKE_object_free_modifiers /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/object.c:197
    #4 0x5555e9e91922 in BKE_object_free /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/object.c:564
    #5 0x5555e9d5fcf0 in BKE_libblock_free_datablock /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/library_remap.c:705
    #6 0x5555ea9daa1d in DEG::deg_free_copy_on_write_datablock(ID*) /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc:1076
    #7 0x5555ea9da288 in DEG::deg_update_copy_on_write_datablock(DEG::Depsgraph const*, DEG::IDDepsNode const*) /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc:940
    #8 0x5555ea9dab6f in DEG::deg_evaluate_copy_on_write(Depsgraph*, DEG::IDDepsNode const*) /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc:1093
    #9 0x5555ea9ab45d in void std::__invoke_impl<void, void (*&)(Depsgraph*, DEG::IDDepsNode const*), Depsgraph*, DEG::IDDepsNode*&>(std::__invoke_other, void (*&)(Depsgraph*, DEG::IDDepsNode const*), Depsgraph*&&, DEG::IDDepsNode*&) /usr/include/c++/8/bits/invoke.h:60
    #10 0x5555ea9a9094 in std::__invoke_result<void (*&)(Depsgraph*, DEG::IDDepsNode const*), Depsgraph*, DEG::IDDepsNode*&>::type std::__invoke<void (*&)(Depsgraph*, DEG::IDDepsNode const*), Depsgraph*, DEG::IDDepsNode*&>(void (*&)(Depsgraph*, DEG::IDDepsNode const*), Depsgraph*&&, DEG::IDDepsNode*&) /usr/include/c++/8/bits/invoke.h:95
    #11 0x5555ea9a65be in void std::_Bind<void (*(std::_Placeholder<1>, DEG::IDDepsNode*))(Depsgraph*, DEG::IDDepsNode const*)>::__call<void, Depsgraph*&&, 0ul, 1ul>(std::tuple<Depsgraph*&&>&&, std::_Index_tuple<0ul, 1ul>) /usr/include/c++/8/functional:400
    #12 0x5555ea9a1e75 in void std::_Bind<void (*(std::_Placeholder<1>, DEG::IDDepsNode*))(Depsgraph*, DEG::IDDepsNode const*)>::operator()<Depsgraph*, void>(Depsgraph*&&) /usr/include/c++/8/functional:484
    #13 0x5555ea99c0a1 in std::_Function_handler<void (Depsgraph*), std::_Bind<void (*(std::_Placeholder<1>, DEG::IDDepsNode*))(Depsgraph*, DEG::IDDepsNode const*)> >::_M_invoke(std::_Any_data const&, Depsgraph*&&) /usr/include/c++/8/bits/std_function.h:297
    #14 0x5555ea9d569d in std::function<void (Depsgraph*)>::operator()(Depsgraph*) const /usr/include/c++/8/bits/std_function.h:687
    #15 0x5555ea9d3caa in deg_task_run_func /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval.cc:94
    #16 0x5555ea9402a3 in handle_local_queue /home/i74700deb64/blender/__work__/2.8/source/blender/blenlib/intern/task.c:419
    #17 0x5555ea9402a3 in BLI_task_pool_work_and_wait /home/i74700deb64/blender/__work__/2.8/source/blender/blenlib/intern/task.c:900
    #18 0x5555ea9d5452 in DEG::deg_evaluate_on_refresh(DEG::Depsgraph*) /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval.cc:315
    #19 0x5555ea977238 in DEG_evaluate_on_refresh /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/depsgraph_eval.cc:70
    #20 0x5555e9fcfe50 in BKE_scene_graph_update_tagged /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/scene.c:1436
    #21 0x5555e76fc1a5 in wm_event_do_depsgraph /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_event_system.c:336
    #22 0x5555e76fc37a in wm_event_do_refresh_wm_and_depsgraph /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_event_system.c:361
    #23 0x5555e76fd419 in wm_event_do_notifiers /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_event_system.c:519
    #24 0x5555e76f25bc in WM_main /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm.c:430
    #25 0x5555e76e7d80 in main /home/i74700deb64/blender/__work__/2.8/source/creator/creator.c:522
    #26 0x7f6208310b16 in __libc_start_main ../csu/libc-start.c:310

previously allocated by thread T0 here:
    #0 0x7f62149150b8 in calloc (/usr/lib/x86_64-linux-gnu/libasan.so.5+0xe90b8)
    #1 0x5555eaf78551 in MEM_lockfree_callocN /home/i74700deb64/blender/__work__/2.8/intern/guardedalloc/intern/mallocn_lockfree_impl.c:282
    #2 0x5555e9e29d46 in modifier_new /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/modifier.c:132
    #3 0x5555e9e96f66 in BKE_object_copy_data /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/object.c:1350
    #4 0x5555e9d2551a in BKE_id_copy_ex /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/library.c:573
    #5 0x5555ea9d72bc in id_copy_inplace_no_main /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc:280
    #6 0x5555ea9d8efa in DEG::deg_expand_copy_on_write_datablock(DEG::Depsgraph const*, DEG::IDDepsNode const*, DEG::DepsgraphNodeBuilder*, bool) /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc:729
    #7 0x5555ea9da2a8 in DEG::deg_update_copy_on_write_datablock(DEG::Depsgraph const*, DEG::IDDepsNode const*) /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc:941
    #8 0x5555ea9dab6f in DEG::deg_evaluate_copy_on_write(Depsgraph*, DEG::IDDepsNode const*) /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval_copy_on_write.cc:1093
    #9 0x5555ea9ab45d in void std::__invoke_impl<void, void (*&)(Depsgraph*, DEG::IDDepsNode const*), Depsgraph*, DEG::IDDepsNode*&>(std::__invoke_other, void (*&)(Depsgraph*, DEG::IDDepsNode const*), Depsgraph*&&, DEG::IDDepsNode*&) /usr/include/c++/8/bits/invoke.h:60
    #10 0x5555ea9a9094 in std::__invoke_result<void (*&)(Depsgraph*, DEG::IDDepsNode const*), Depsgraph*, DEG::IDDepsNode*&>::type std::__invoke<void (*&)(Depsgraph*, DEG::IDDepsNode const*), Depsgraph*, DEG::IDDepsNode*&>(void (*&)(Depsgraph*, DEG::IDDepsNode const*), Depsgraph*&&, DEG::IDDepsNode*&) /usr/include/c++/8/bits/invoke.h:95
    #11 0x5555ea9a65be in void std::_Bind<void (*(std::_Placeholder<1>, DEG::IDDepsNode*))(Depsgraph*, DEG::IDDepsNode const*)>::__call<void, Depsgraph*&&, 0ul, 1ul>(std::tuple<Depsgraph*&&>&&, std::_Index_tuple<0ul, 1ul>) /usr/include/c++/8/functional:400
    #12 0x5555ea9a1e75 in void std::_Bind<void (*(std::_Placeholder<1>, DEG::IDDepsNode*))(Depsgraph*, DEG::IDDepsNode const*)>::operator()<Depsgraph*, void>(Depsgraph*&&) /usr/include/c++/8/functional:484
    #13 0x5555ea99c0a1 in std::_Function_handler<void (Depsgraph*), std::_Bind<void (*(std::_Placeholder<1>, DEG::IDDepsNode*))(Depsgraph*, DEG::IDDepsNode const*)> >::_M_invoke(std::_Any_data const&, Depsgraph*&&) /usr/include/c++/8/bits/std_function.h:297
    #14 0x5555ea9d569d in std::function<void (Depsgraph*)>::operator()(Depsgraph*) const /usr/include/c++/8/bits/std_function.h:687
    #15 0x5555ea9d3caa in deg_task_run_func /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval.cc:94
    #16 0x5555ea9402a3 in handle_local_queue /home/i74700deb64/blender/__work__/2.8/source/blender/blenlib/intern/task.c:419
    #17 0x5555ea9402a3 in BLI_task_pool_work_and_wait /home/i74700deb64/blender/__work__/2.8/source/blender/blenlib/intern/task.c:900
    #18 0x5555ea9d5452 in DEG::deg_evaluate_on_refresh(DEG::Depsgraph*) /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval.cc:315
    #19 0x5555ea977238 in DEG_evaluate_on_refresh /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/depsgraph_eval.cc:70
    #20 0x5555e9fcfe50 in BKE_scene_graph_update_tagged /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/scene.c:1436
    #21 0x5555e76fc1a5 in wm_event_do_depsgraph /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_event_system.c:336
    #22 0x5555e771c93e in wm_file_read_post /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_files.c:492
    #23 0x5555e771d2f7 in WM_file_read /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_files.c:636
    #24 0x5555e7723443 in wm_file_read_opwrap /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_files.c:1848
    #25 0x5555e77239bd in wm_open_mainfile_exec /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_files.c:1908
    #26 0x5555e77034d8 in wm_operator_invoke /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_event_system.c:1337
    #27 0x5555e7704627 in wm_operator_call_internal /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_event_system.c:1570
    #28 0x5555e7704750 in WM_operator_name_call_ptr /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_event_system.c:1582
    #29 0x5555e7f0fb3d in ui_apply_but_funcs_after /home/i74700deb64/blender/__work__/2.8/source/blender/editors/interface/interface_handlers.c:767
    #30 0x5555e7f59c21 in ui_popup_handler /home/i74700deb64/blender/__work__/2.8/source/blender/editors/interface/interface_handlers.c:9910

Thread T19 created by T0 here:
    #0 0x7f6214875ef0 in pthread_create (/usr/lib/x86_64-linux-gnu/libasan.so.5+0x49ef0)
    #1 0x5555ea93ce20 in BLI_task_scheduler_create /home/i74700deb64/blender/__work__/2.8/source/blender/blenlib/intern/task.c:504
    #2 0x5555ea94429d in BLI_task_scheduler_get /home/i74700deb64/blender/__work__/2.8/source/blender/blenlib/intern/threads.c:182
    #3 0x5555ea942b7a in BLI_task_parallel_range /home/i74700deb64/blender/__work__/2.8/source/blender/blenlib/intern/task.c:1099
    #4 0x5555ea9dc344 in flush_prepare /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval_flush.cc:122
    #5 0x5555ea9dc344 in DEG::deg_graph_flush_updates(Main*, DEG::Depsgraph*) /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/eval/deg_eval_flush.cc:380
    #6 0x5555ea987033 in DEG_graph_flush_update /home/i74700deb64/blender/__work__/2.8/source/blender/depsgraph/intern/depsgraph_tag.cc:670
    #7 0x5555e9fcfe44 in BKE_scene_graph_update_tagged /home/i74700deb64/blender/__work__/2.8/source/blender/blenkernel/intern/scene.c:1432
    #8 0x5555e76fc1a5 in wm_event_do_depsgraph /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_event_system.c:336
    #9 0x5555e771c93e in wm_file_read_post /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_files.c:492
    #10 0x5555e771eb14 in wm_homefile_read /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_files.c:990
    #11 0x5555e77309eb in WM_init /home/i74700deb64/blender/__work__/2.8/source/blender/windowmanager/intern/wm_init_exit.c:258
    #12 0x5555e76e7ac9 in main /home/i74700deb64/blender/__work__/2.8/source/creator/creator.c:440
    #13 0x7f6208310b16 in __libc_start_main ../csu/libc-start.c:310

SUMMARY: AddressSanitizer: heap-use-after-free /home/i74700deb64/blender/__work__/2.8/source/blender/modifiers/intern/MOD_ocean.c:406 in doOcean
Shadow bytes around the buggy address:
  0x0c348000c850: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c348000c860: fd fd fd fd fd fd fd fd fd fd fd fd fd fa fa fa
  0x0c348000c870: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c348000c880: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
  0x0c348000c890: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
=>0x0c348000c8a0: fd fd fd fd fd fd[fd]fd fd fd fd fd fd fd fd fd
  0x0c348000c8b0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c348000c8c0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c348000c8d0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c348000c8e0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
  0x0c348000c8f0: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
  Addressable:           00
  Partially addressable: 01 02 03 04 05 06 07 
  Heap left redzone:       fa
  Freed heap region:       fd
  Stack left redzone:      f1
  Stack mid redzone:       f2
  Stack right redzone:     f3
  Stack after return:      f5
  Stack use after scope:   f8
  Global redzone:          f9
  Global init order:       f6
  Poisoned by user:        f7
  Container overflow:      fc
  Array cookie:            ac
  Intra object redzone:    bb
  ASan internal:           fe
  Left alloca redzone:     ca
  Right alloca redzone:    cb
==910==ABORTING

Note that this files generate some dependency cycles, not sure how much they are related to the issue:

Dependency cycle detected:
  'OBOcean.GEOMETRY_UBEREVAL()' depends on 'OBCube.TRANSFORM_FINAL()' through 'Dynamic Paint Brush'
  'OBCube.TRANSFORM_FINAL()' depends on 'OBCube.TRANSFORM_CONSTRAINTS()' through 'ObConstraints -> Done'
  'OBCube.TRANSFORM_CONSTRAINTS()' depends on 'OBOcean.GEOMETRY_UBEREVAL()' through 'Copy Location'
Dependency cycle detected:
  'OBOcean.PLACEHOLDER(Eval Init)' depends on 'OBOcean.POINT_CACHE_RESET()' through 'Point Cache -> Geometry'
  'OBOcean.POINT_CACHE_RESET()' depends on 'OBCube.TRANSFORM_FINAL()' through 'Point Cache'
  'OBCube.TRANSFORM_FINAL()' depends on 'OBCube.TRANSFORM_CONSTRAINTS()' through 'ObConstraints -> Done'
  'OBCube.TRANSFORM_CONSTRAINTS()' depends on 'OBOcean.GEOMETRY_UBEREVAL()' through 'Copy Location'
  'OBOcean.GEOMETRY_UBEREVAL()' depends on 'OBOcean.PLACEHOLDER(Eval Init)' through 'Object Geometry UberEval'
Dependency cycle detected:
  'OBOcean.PLACEHOLDER(Eval Init)' depends on 'OBOcean.POINT_CACHE_RESET()' through 'Point Cache -> Geometry'
  'OBOcean.POINT_CACHE_RESET()' depends on 'OBCube.TRANSFORM_FINAL()' through 'Point Cache'
  'OBCube.TRANSFORM_FINAL()' depends on 'OBCube.TRANSFORM_CONSTRAINTS()' through 'ObConstraints -> Done'
  'OBCube.TRANSFORM_CONSTRAINTS()' depends on 'OBOcean.GEOMETRY_UBEREVAL()' through 'Copy Location'
  'OBOcean.GEOMETRY_UBEREVAL()' depends on 'OBOcean.PLACEHOLDER(Eval Init)' through 'Object Geometry UberEval'
Detected 3 dependency cycles
Dependency cycle detected:
  'OBOcean.GEOMETRY_UBEREVAL()' depends on 'OBCube.TRANSFORM_FINAL()' through 'Dynamic Paint Brush'
  'OBCube.TRANSFORM_FINAL()' depends on 'OBCube.TRANSFORM_CONSTRAINTS()' through 'ObConstraints -> Done'
  'OBCube.TRANSFORM_CONSTRAINTS()' depends on 'OBOcean.GEOMETRY_UBEREVAL()' through 'Copy Location'
Dependency cycle detected:
  'OBOcean.GEOMETRY_UBEREVAL()' depends on 'OBOcean.PLACEHOLDER(Eval Init)' through 'Object Geometry UberEval'
  'OBOcean.PLACEHOLDER(Eval Init)' depends on 'OBOcean.POINT_CACHE_RESET()' through 'Point Cache -> Geometry'
  'OBOcean.POINT_CACHE_RESET()' depends on 'OBCube.TRANSFORM_FINAL()' through 'Point Cache'
  'OBCube.TRANSFORM_FINAL()' depends on 'OBCube.TRANSFORM_CONSTRAINTS()' through 'ObConstraints -> Done'
  'OBCube.TRANSFORM_CONSTRAINTS()' depends on 'OBOcean.GEOMETRY_UBEREVAL()' through 'Copy Location'
Detected 2 dependency cycles