Hello, I noticed that emacs-module.c contains duplicate module_non_local_exit_check() checks and module_assert_thread/module_assert_env asserts, mostly performed at the same point in program sequentially. The module_non_local_exit_check() checks happen in MODULE_HANDLE_NONLOCAL_EXIT and MODULE_FUNCTION_BEGIN_NO_CATCH macros. The MODULE_HANDLE_NONLOCAL_EXIT is never used by itself, only as part of MODULE_FUNCTION_BEGIN which starts with MODULE_FUNCTION_BEGIN_NO_CATCH that performs the check. In addition, there're 6 "Implementation of runtime and environment functions" rules outlined where MODULE_HANDLE_NONLOCAL_EXIT should be called at step 4 but module_non_local_exit_check() is supposed to have already happened at step 3 so documentation does not seem to intend for the check to be repeated in MODULE_HANDLE_NONLOCAL_EXIT. Regarding asserts my observation is that module_non_local_exit_check() already contains module_assert_thread and module_assert_env so there's no need to do asserts if first thing we do is call module_non_local_exit_check. Regards, Sergey