[Tarantool-patches] [PATCH] clear terminal state on panic
Serge Petrenko
sergepetrenko at tarantool.org
Fri Nov 29 14:06:56 MSK 2019
Hi! Thanks for your replies!
Fixed:
diff --git a/src/main.cc b/src/main.cc
index 014958a17..a1572b81e 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -589,7 +589,7 @@ load_cfg()
}
void
-free_rl_state(void)
+tarantool_atexit(void)
{
/* Same checks as in tarantool_free() */
if (getpid() != master_pid)
@@ -848,7 +848,14 @@ main(int argc, char **argv)
trigger_create(&break_loop_trigger, break_loop, NULL, NULL);
trigger_add(&box_on_shutdown, &break_loop_trigger);
- atexit(free_rl_state);
+ /*
+ * The call to tarantool_free() below, thanks to
+ * on_shutdown triggers, works all the time
+ * except when we panic. So leave the ever-
+ * necessary cleanups in atexit handler, which
+ * is executed always.
+ */
+ atexit(tarantool_atexit);
if (!loop())
panic("%s", "can't init event loop");
--
Serge Petrenko
sergepetrenko at tarantool.org
> 28 нояб. 2019 г., в 1:31, Cyrill Gorcunov <gorcunov at gmail.com> написал(а):
>
> On Thu, Nov 28, 2019 at 12:51:47AM +0300, Konstantin Osipov wrote:
>>>
>>> Should not we rather provide some tarantool_atexit() helper
>>> from where we would call other cleanup and etc routines?
>>> We already have tarantool_atfork() hook. Not a big deal
>>> but while the code in question is being modified anyway.
>>
>> Why not, still the exit procedure is complicated because of
>> on_shutdown triggers, so it's important that if there are changes
>> to it, they are documented in the code, not in cs comments.
>
> Yes, putting comment into the code why we're to restore the
> terminal settings on panic is quite important.
More information about the Tarantool-patches
mailing list