quit[] calls exit(0) inside the library (Command.cpp:2967), so it kills any host process, including Python:
f = pyforefire.ForeFire()
try:
f.execute("quit[]") # process ends here
finally:
print("never printed")
The host gets no exception, finally and atexit never run, buffered output is lost, and the exit status is 0, so a CI job reports success.
The error path at Command.cpp:1125 (// TODO supersafe mode ?) also calls quit(), so an internal error can do the same thing.
Fix in #181.
Suggested fix: quit releases the session and returns; the CLI in app/forefire/ decides whether to exit. Line 1125 should return an error instead. Related to #159.
Drafted with Claude Opus 5, reviewed by a maintainer.
quit[]callsexit(0)inside the library (Command.cpp:2967), so it kills any host process, including Python:The host gets no exception,
finallyandatexitnever run, buffered output is lost, and the exit status is 0, so a CI job reports success.The error path at
Command.cpp:1125(// TODO supersafe mode ?) also callsquit(), so an internal error can do the same thing.Fix in #181.
Suggested fix:
quitreleases the session and returns; the CLI inapp/forefire/decides whether to exit. Line 1125 should return an error instead. Related to #159.Drafted with Claude Opus 5, reviewed by a maintainer.