Skip to content

Commit a935b40

Browse files
committed
fix: fix crash on stop for Node.js engine
1 parent b274544 commit a935b40

File tree

3 files changed

+16
-35
lines changed

3 files changed

+16
-35
lines changed

CHANGELOG.md

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.17.3] - 2026-02-24
11+
12+
### Fixed
13+
14+
- Fixed crash on stop for Node.js engine
15+
1016
## [0.17.2] - 2026-02-04
1117

1218
### Fixed
@@ -1145,7 +1151,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
11451151
[#339]: https://github.com/LiteLDev/LegacyScriptEngine/issues/339
11461152
[#348]: https://github.com/LiteLDev/LegacyScriptEngine/issues/348
11471153

1148-
[Unreleased]: https://github.com/LiteLDev/LegacyScriptEngine/compare/v0.17.2...HEAD
1154+
[Unreleased]: https://github.com/LiteLDev/LegacyScriptEngine/compare/v0.17.3...HEAD
1155+
[0.17.3]: https://github.com/LiteLDev/LegacyScriptEngine/compare/v0.17.2...v0.17.3
11491156
[0.17.2]: https://github.com/LiteLDev/LegacyScriptEngine/compare/v0.17.1...v0.17.2
11501157
[0.17.1]: https://github.com/LiteLDev/LegacyScriptEngine/compare/v0.17.0...v0.17.1
11511158
[0.17.0]: https://github.com/LiteLDev/LegacyScriptEngine/compare/v0.17.0-rc.2...v0.17.0

src/legacy/main/NodeJsHelper.cpp

Lines changed: 7 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -130,11 +130,8 @@ bool initNodeJs() {
130130
node::ProcessInitializationFlags::kNoInitializeNodeV8Platform}
131131
);
132132
if (result->exit_code() != 0) {
133-
lse::LegacyScriptEngine::getLogger().error(
134-
"Failed to initialize node! NodeJs plugins won't be loaded"
135-
);
136-
for (const std::string& error : result->errors())
137-
lse::LegacyScriptEngine::getLogger().error(error);
133+
lse::LegacyScriptEngine::getLogger().error("Failed to initialize node! NodeJs plugins won't be loaded");
134+
for (const std::string& error : result->errors()) lse::LegacyScriptEngine::getLogger().error(error);
138135
return false;
139136
}
140137
args = result->args();
@@ -173,10 +170,7 @@ std::shared_ptr<ScriptEngine> newEngine() {
173170

174171
if (!setup) {
175172
for (const std::string& err : errors)
176-
lse::LegacyScriptEngine::getLogger().error(
177-
"CommonEnvironmentSetup Error: {}",
178-
err.c_str()
179-
);
173+
lse::LegacyScriptEngine::getLogger().error("CommonEnvironmentSetup Error: {}", err.c_str());
180174
return nullptr;
181175
}
182176
v8::Isolate* isolate = setup->isolate();
@@ -187,31 +181,16 @@ std::shared_ptr<ScriptEngine> newEngine() {
187181
v8::HandleScope handle_scope(isolate);
188182
v8::Context::Scope context_scope(setup->context());
189183

190-
std::shared_ptr<ScriptEngine> engine = std::shared_ptr<ScriptEngine>(
184+
std::shared_ptr<ScriptEngine> engine(
191185
new ScriptEngineImpl({}, isolate, setup->context(), false),
192186
ScriptEngine::Deleter()
193187
);
194188

195-
lse::LegacyScriptEngine::getLogger().debug(
196-
"Initialize ScriptEngine for node.js [{}]",
197-
(void*)engine.get()
198-
);
189+
lse::LegacyScriptEngine::getLogger().debug("Initialize ScriptEngine for node.js [{}]", (void*)engine.get());
199190
environments[engine] = env;
200191
setups[engine] = std::move(setup);
201192
isRunning[env] = true;
202193

203-
node::AddEnvironmentCleanupHook(
204-
isolate,
205-
[](void* arg) {
206-
static_cast<ScriptEngine*>(arg)->destroy();
207-
lse::LegacyScriptEngine::getLogger().debug(
208-
"Destroy ScriptEngine for node.js [{}]",
209-
arg
210-
);
211-
lse::LegacyScriptEngine::getLogger().debug("Destroy EnvironmentCleanupHook");
212-
},
213-
engine.get()
214-
);
215194
return engine;
216195
}
217196

@@ -551,10 +530,7 @@ int executeNpmCommand(std::vector<std::string> npmArgs, std::string workingDir)
551530

552531
if (!setup) {
553532
for (const std::string& err : errors)
554-
lse::LegacyScriptEngine::getLogger().error(
555-
"CommonEnvironmentSetup Error: {}",
556-
err.c_str()
557-
);
533+
lse::LegacyScriptEngine::getLogger().error("CommonEnvironmentSetup Error: {}", err.c_str());
558534
return -1;
559535
}
560536
v8::Isolate* isolate = setup->isolate();
@@ -609,9 +585,7 @@ int executeNpmCommand(std::vector<std::string> npmArgs, std::string workingDir)
609585
throw std::runtime_error("Failed at LoadEnvironment");
610586
exit_code = node::SpinEventLoop(env).FromMaybe(exit_code);
611587
} catch (...) {
612-
lse::LegacyScriptEngine::getLogger().error(
613-
"Fail to execute NPM command. Error occurs"
614-
);
588+
lse::LegacyScriptEngine::getLogger().error("Fail to execute NPM command. Error occurs");
615589
ll::error_utils::printCurrentException(lse::LegacyScriptEngine::getLogger());
616590
}
617591
node::Stop(env);

tooth.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"format_version": 3,
33
"format_uuid": "289f771f-2c9a-4d73-9f3f-8492495a924d",
44
"tooth": "github.com/LiteLDev/LegacyScriptEngine",
5-
"version": "0.17.2",
5+
"version": "0.17.3",
66
"info": {
77
"name": "LegacyScriptEngine",
88
"description": "A plugin engine for running LLSE plugins on LeviLamina",

0 commit comments

Comments
 (0)