Armory: Blender crashes sometimes when opening files with custom logic nodes

Created on 26 Sep 2020  路  4Comments  路  Source: armory3d/armory

Issue to keep track of https://forums.armory3d.org/t/need-help-using-logic-nodes-pack/4231.

When opening a file that uses custom nodes from other packages, Blender randomly crashes sometimes with EXCEPTION_ACCESS_VIOLATION. When building Blender to get more insight about where the error occurs I get some linker errors, maybe someone else is able to build Blender and to reproduce this error and paste a stack trace from Visual Studio?

bug logic nodes

All 4 comments

yes i noticed that
but surprisingly its an LTS thingy am on alpha
and theres no crashing for me :P

image

I finally got Blender (2.83.7) to compile, here is the stacktrace:

blender.exe!node_free_node(bNodeTree * ntree, bNode * node) Zeile 2033
    unter C:\blender-git\blender\source\blender\blenkernel\intern\node.c (2033)
blender.exe!ntree_free_data(ID * id) Zeile 227
    unter C:\blender-git\blender\source\blender\blenkernel\intern\node.c (227)
blender.exe!BKE_libblock_free_datablock(ID * id, const int UNUSED_flag) Zeile 136
    unter C:\blender-git\blender\source\blender\blenkernel\intern\lib_id_delete.c (136)
blender.exe!DEG::deg_free_copy_on_write_datablock(ID * id_cow) Zeile 1073
    unter C:\blender-git\blender\source\blender\depsgraph\intern\eval\deg_eval_copy_on_write.cc (1073)
blender.exe!DEG::deg_update_copy_on_write_datablock(const DEG::Depsgraph * depsgraph, const DEG::IDNode * id_node) Zeile 952
    unter C:\blender-git\blender\source\blender\depsgraph\intern\eval\deg_eval_copy_on_write.cc (952)
blender.exe!DEG::deg_evaluate_copy_on_write(Depsgraph * graph, const DEG::IDNode * id_node) Zeile 1088
    unter C:\blender-git\blender\source\blender\depsgraph\intern\eval\deg_eval_copy_on_write.cc (1088)
blender.exe!std::invoke<void (__cdecl*&)(Depsgraph *,DEG::IDNode const *),Depsgraph *,DEG::IDNode * &>(void(*)(Depsgraph *, const DEG::IDNode *) & _Obj, Depsgraph * && _Arg1, DEG::IDNode * & <_Args2_0>) Zeile 1626
    unter A:\Programs\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\type_traits (1626)
blender.exe!std::_Invoker_ret<std::_Unforced,0>::_Call<void (__cdecl*&)(Depsgraph *,DEG::IDNode const *),Depsgraph *,DEG::IDNode * &>(void(*)(Depsgraph *, const DEG::IDNode *) & <_Vals_0>, Depsgraph * && <_Vals_1>, DEG::IDNode * & <_Vals_2>) Zeile 1658
    unter A:\Programs\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\type_traits (1658)
blender.exe!std::_Call_binder<std::_Unforced,0,1,void (__cdecl*)(Depsgraph *,DEG::IDNode const *),std::tuple<std::_Ph<1>,DEG::IDNode *>,std::tuple<Depsgraph * &&>>(std::_Invoker_ret<std::_Unforced,0> __formal, std::integer_sequence<unsigned __int64,0,1> __formal, void(*)(Depsgraph *, const DEG::IDNode *) & _Obj, std::tuple<std::_Ph<1>,DEG::IDNode *> & _Tpl, std::tuple<Depsgraph * &&> && _Ut) Zeile 1388
    unter A:\Programs\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\functional (1388)
blender.exe!std::_Binder<std::_Unforced,void (__cdecl&)(Depsgraph *,DEG::IDNode const *),std::_Ph<1> const &,DEG::IDNode * &>::operator()<Depsgraph *>(Depsgraph * && <_Unbargs_0>) Zeile 1427
    unter A:\Programs\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\functional (1427)
blender.exe!std::invoke<std::_Binder<std::_Unforced,void (__cdecl&)(Depsgraph *,DEG::IDNode const *),std::_Ph<1> const &,DEG::IDNode * &> &,Depsgraph *>(std::_Binder<std::_Unforced,void (__cdecl&)(Depsgraph *,DEG::IDNode const *),std::_Ph<1> const &,DEG::IDNode * &> & _Obj, Depsgraph * && _Arg1) Zeile 1626
    unter A:\Programs\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\type_traits (1626)
blender.exe!std::_Invoker_ret<void,1>::_Call<std::_Binder<std::_Unforced,void (__cdecl&)(Depsgraph *,DEG::IDNode const *),std::_Ph<1> const &,DEG::IDNode * &> &,Depsgraph *>(std::_Binder<std::_Unforced,void (__cdecl&)(Depsgraph *,DEG::IDNode const *),std::_Ph<1> const &,DEG::IDNode * &> & <_Vals_0>, Depsgraph * && <_Vals_1>) Zeile 1641
    unter A:\Programs\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\type_traits (1641)
blender.exe!std::_Func_impl_no_alloc<std::_Binder<std::_Unforced,void (__cdecl&)(Depsgraph *,DEG::IDNode const *),std::_Ph<1> const &,DEG::IDNode * &>,void,Depsgraph *>::_Do_call(Depsgraph * && <_Args_0>) Zeile 904
    unter A:\Programs\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\functional (904)
blender.exe!std::_Func_class<void,Depsgraph *>::operator()(Depsgraph * <_Args_0>) Zeile 952
    unter A:\Programs\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.27.29110\include\functional (952)
blender.exe!DEG::`anonymous namespace'::evaluate_node(const DEG::`anonymous-namespace'::DepsgraphEvalState * state, DEG::OperationNode * operation_node) Zeile 117
    unter C:\blender-git\blender\source\blender\depsgraph\intern\eval\deg_eval.cc (117)
blender.exe!DEG::`anonymous namespace'::deg_task_run_func(TaskPool * pool, void * taskdata, int thread_id) Zeile 129
    unter C:\blender-git\blender\source\blender\depsgraph\intern\eval\deg_eval.cc (129)
blender.exe!BLI_task_pool_work_and_wait(TaskPool * pool) Zeile 939
    unter C:\blender-git\blender\source\blender\blenlib\intern\task_pool.cc (939)
blender.exe!BLI_task_pool_work_wait_and_reset(TaskPool * pool) Zeile 970
    unter C:\blender-git\blender\source\blender\blenlib\intern\task_pool.cc (970)
blender.exe!DEG::deg_evaluate_on_refresh(DEG::Depsgraph * graph) Zeile 403
    unter C:\blender-git\blender\source\blender\depsgraph\intern\eval\deg_eval.cc (403)
blender.exe!DEG_evaluate_on_refresh(Main * bmain, Depsgraph * graph) Zeile 65
    unter C:\blender-git\blender\source\blender\depsgraph\intern\depsgraph_eval.cc (65)
blender.exe!scene_graph_update_tagged(Depsgraph * depsgraph, Main * bmain, bool only_if_tagged) Zeile 1329
    unter C:\blender-git\blender\source\blender\blenkernel\intern\scene.c (1329)
blender.exe!BKE_scene_graph_update_tagged(Depsgraph * depsgraph, Main * bmain) Zeile 1367
    unter C:\blender-git\blender\source\blender\blenkernel\intern\scene.c (1367)
blender.exe!wm_event_do_depsgraph(bContext * C, bool is_after_open_file) Zeile 360
    unter C:\blender-git\blender\source\blender\windowmanager\intern\wm_event_system.c (360)
blender.exe!wm_event_do_refresh_wm_and_depsgraph(bContext * C) Zeile 387
    unter C:\blender-git\blender\source\blender\windowmanager\intern\wm_event_system.c (387)
blender.exe!wm_event_do_notifiers(bContext * C) Zeile 552
    unter C:\blender-git\blender\source\blender\windowmanager\intern\wm_event_system.c (552)
blender.exe!WM_main(bContext * C) Zeile 456
    unter C:\blender-git\blender\source\blender\windowmanager\intern\wm.c (456)
blender.exe!main(int argc, const unsigned char * * UNUSED_argv_c) Zeile 530
    unter C:\blender-git\blender\source\creator\creator.c (530)
blender.exe!invoke_main() Zeile 79
    unter D:\agent\_work\9\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl (79)
blender.exe!__scrt_common_main_seh() Zeile 288
    unter D:\agent\_work\9\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl (288)
blender.exe!__scrt_common_main() Zeile 331
    unter D:\agent\_work\9\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl (331)
blender.exe!mainCRTStartup() Zeile 17
    unter D:\agent\_work\9\s\src\vctools\crt\vcstartup\src\startup\exe_main.cpp (17)
kernel32.dll!00007ffca1667bd4()
ntdll.dll!00007ffca1e0ce51()

("Zeile" means "Line", "unter" = "at")

... and the error message:

Ausnahme ausgel枚st bei 0x00007FF727AA9FF2 in blender.exe: 0xC0000005: Zugriffsverletzung beim Lesen an Position 0xFFFFFFFFFFFFFFFF.

which roughly translates to:

Exception at 0x00007FF727AA9FF2 in blender.exe: 0xC0000005: Access violation on reading position 0xFFFFFFFFFFFFFFFF.

My theory is that when Blender updates the depsgraph of the newly opened file the nodes aren't registered yet (the depsgraph update happens before handlers.on_load_post() is called) and thus it tries to access some memory block that doesn't exist. But when on_load_post() isn't executed the files no longer crash...

Unfortunately many of the functions in the stack trace aren't documented at all so it will be difficult to find the exact cause and to find a workaround...

Edit: T72833 might be related, it says that there might be a dangling pointer left when bNodeType is freed which might be the same problem we have here (all/most of the data in the node->typeinfo attribute is 0xddddd...).

I've opened a Blender bug report for this: https://developer.blender.org/T81419.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

HeadClot picture HeadClot  路  3Comments

donalffons picture donalffons  路  3Comments

knowledgenude picture knowledgenude  路  3Comments

BrahRah picture BrahRah  路  3Comments

SeleDreams picture SeleDreams  路  3Comments