Closed devraymondsh closed 4 months ago
Thread deadlock in the NodeJS loader
ctest -VV -R metacall-node-multithread-deadlock-test
UpdateCTestConfiguration from :/home/raymond/projects/core/build/DartConfiguration.tcl Parse Config file:/home/raymond/projects/core/build/DartConfiguration.tcl UpdateCTestConfiguration from :/home/raymond/projects/core/build/DartConfiguration.tcl Parse Config file:/home/raymond/projects/core/build/DartConfiguration.tcl Test project /home/raymond/projects/core/build Constructing a list of tests Done constructing a list of tests Updating test list for fixtures Added 0 tests to meet fixture requirements Checking test dependency graph... Checking test dependency graph end test 27 Start 27: metacall-node-multithread-deadlock-test 27: Test command: /home/raymond/projects/core/build/metacall-node-multithread-deadlock-testd 27: Working Directory: /home/raymond/projects/core/build/source/tests/metacall_node_multithread_deadlock_test 27: Environment variables: 27: LOADER_LIBRARY_PATH=/home/raymond/projects/core/build 27: LOADER_SCRIPT_PATH=/home/raymond/projects/core/build/scripts 27: CONFIGURATION_PATH=/home/raymond/projects/core/build/configurations/global.json 27: SERIAL_LIBRARY_PATH=/home/raymond/projects/core/build 27: DETOUR_LIBRARY_PATH=/home/raymond/projects/core/build 27: PORT_LIBRARY_PATH=/home/raymond/projects/core/build 27: Test timeout computed to be: 1500 27: [==========] Running 1 test from 1 test suite. 27: [----------] Global test environment set-up. 27: [----------] 1 test from metacall_node_multithread_deadlock_test 27: [ RUN ] metacall_node_multithread_deadlock_test.DefaultConstructor 27: Debug: MetaCall default logger to stdout initialized 27: Debug: Initializing MetaCall 27: Debug: Global configuration loaded from /home/raymond/projects/core/build/configurations/global.json 27: Debug: Loading plugin: rapid_json_seriald 27: Debug: Loading plugin symbol: dynlink_symbol_rapid_json_serial_impl_interface_singleton 27: Debug: Set MetaCall log level to Debug 27: Debug: Loader script path: /home/raymond/projects/core/build/scripts/ 27: Debug: Loading plugin: ext_loaderd 27: Debug: Loading plugin symbol: dynlink_symbol_ext_loader_impl_interface_singleton 27: Debug: Loading plugin: /home/raymond/projects/core/build/plugins/backtrace_plugin/metacall.json 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:53: Failure 27: Expected: ((void *)__null) != ((void *)future), actual: NULL vs NULL 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:55: Failure 27: Expected equality of these values: 27: (enum metacall_value_id)metacall_value_id(future) 27: Which is: 20 27: (enum metacall_value_id)METACALL_FUTURE 27: Which is: 12 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:53: Failure 27: Expected: ((void *)__null) != ((void *)future), actual: NULL vs NULL 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:55: Failure 27: Expected equality of these values: 27: (enum metacall_value_id)metacall_value_id(future) 27: Which is: 20 27: (enum metacall_value_id)METACALL_FUTURE 27: Which is: 12 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:53: Failure 27: Expected: ((void *)__null) != ((void *)future), actual: NULL vs NULL 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:53: Failure 27: Expected: ((void *)__null) != ((void *)future), actual: NULL vs NULL 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:53: Failure 27: Expected: ((void *)__null) != ((void *)future), actual: NULL vs NULL 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:55: Failure 27: Expected equality of these values: 27: (enum metacall_value_id)metacall_value_id(future) 27: Which is: 20 27: (enum metacall_value_id)METACALL_FUTURE 27: Which is: 12 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:55: Failure 27: Expected equality of these values: 27: (enum metacall_value_id)metacall_value_id(future) 27: Which is: 20 27: (enum metacall_value_id)METACALL_FUTURE 27: Which is: 12 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:55: Failure 27: Expected equality of these values: 27: (enum metacall_value_id)metacall_value_id(future) 27: Which is: 20 27: (enum metacall_value_id)METACALL_FUTURE 27: Which is: 12 27: 27: metacall-node-multithread-deadlock-testd: /home/raymond/projects/core/source/metacall/source/metacall_value.c:317: metacall_value_to_future: Assertion `value_type_id(v) == TYPE_FUTURE' failed. 27: metacall-node-multithread-deadlock-testd: /home/raymond/projects/core/source/metacall/source/metacall_value.c:317: metacall_value_to_future: Assertion `value_type_id(v) == TYPE_FUTURE' failed. 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:53: Failure 27: Expected: ((void *)__null) != ((void *)future), actual: NULL vs NULL 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:53: Failure 27: Expected: ((void *)__null) != ((void *)future), actual: NULL vs NULL 27: 27: /home/raymond/projects/core/source/tests/metacall_node_multithread_deadlock_test/source/metacall_node_multithread_deadlock_test.cpp:55: Failure 27: Expected equality of these values: 27: (enum metacall_value_id)metacall_value_id(future) 27: Which is: 20 27: (enum metacall_value_id)METACALL_FUTURE 27: Which is: 12 27: 1/1 Test #27: metacall-node-multithread-deadlock-test ...Subprocess aborted***Exception: 0.19 sec 0% tests passed, 1 tests failed out of 1 Label Time Summary: metacall-node-multithread-deadlock-test = 0.19 sec*proc (1 test) Total Test time (real) = 0.19 sec The following tests FAILED: 27 - metacall-node-multithread-deadlock-test (Subprocess aborted) Errors while running CTest Output from these tests are in: /home/raymond/projects/core/build/Testing/Temporary/LastTest.log Use "--rerun-failed --output-on-failure" to re-run the failed cases verbosely.
This is partially solved, it needs to be properly refactored and extended to all the loader implementation.. but the workaround is done: https://github.com/metacall/core/pull/502
🐛 Bug Report
Thread deadlock in the NodeJS loader
Run the test to replicate the issue:
Output: