From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org>
To: Igor Munkin <imun@tarantool.org>,
Sergey Ostanevich <sergos@tarantool.org>
Cc: tarantool-patches@dev.tarantool.org
Subject: Re: [Tarantool-patches] [PATCH v2 2/2] lua: abort trace recording on fiber yield
Date: Wed, 30 Sep 2020 00:41:49 +0200 [thread overview]
Message-ID: <f903f4f2-1317-5121-c3f8-eeb179c0582b@tarantool.org> (raw)
In-Reply-To: <6b7def49c9d2252425d3944cc4274c9a155ae9e9.1600862684.git.imun@tarantool.org>
Thanks for the patch!
Functionally all looks good. See one comment related not to Lua.
> diff --git a/src/lua/utils.c b/src/lua/utils.c
> index 8e98f7607..6e38f5734 100644
> --- a/src/lua/utils.c
> +++ b/src/lua/utils.c
> @@ -1309,10 +1310,61 @@ tarantool_lua_utils_init(struct lua_State *L)
> return 0;
> }
>
> +/*
> + * XXX: There is already defined <panic> macro in say.h header
> + * (included in diag.h). As a result the call below is misexpanded
> + * and compilation fails with the corresponding error. To avoid
> + * this error the macro is temporary renamed and restored later.
> + * Compilation now fails for the following cases:
> + * * temporary name <gh1700_panic> is used in scope of this
> + * translation unit
> + * * <panic> is not define, so this hack can be freely dropped
> + */
> +#if defined(panic) && !defined(gh1700_panic)
> +# define gh1700_panic panic
> +# undef panic
> +#else
> +# error "Can't redefine <panic> macro"
> +#endif
Unfortunately, it won't work. Macros are not variables. You
can's assign them like that. I wish we could.
What you did here is you eliminated 'panic' macro, and added a
new macro 'gh1700_panic' whose value is "panic". Not what was
in the old 'panic', but exactly "panic". So the old value of 'panic'
is lost here.
Try to run gcc -E, or try to use gh1700_panic, and you will see it.
Below I tried to use it, but got an error.
@@ -1363,6 +1363,7 @@ void cord_on_yield(void)
* lead to a failure on any next compiler phase.
*/
lj_trace_abort(g);
+ gh1700_panic("message");
}
tarantool/src/lua/utils.c:1366:2: error: implicit declaration of function 'panic' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
gh1700_panic("message");
Also when you try to restore the old 'panic', it also won't work
again. As an alternative you can just do '#undef panic', since your
code is in the end of the file anyway, it won't break shit. Or make
a separate patch, which would turn panic() into a function.
next prev parent reply other threads:[~2020-09-29 22:41 UTC|newest]
Thread overview: 29+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-09-23 19:06 [Tarantool-patches] [PATCH v2 0/2] Prevent JIT engine breakage on fibers switch-over Igor Munkin
2020-09-23 19:06 ` [Tarantool-patches] [PATCH v2 1/2] fiber: introduce a callback for " Igor Munkin
2020-09-24 12:54 ` sergos
2020-09-28 13:06 ` Igor Munkin
2020-09-29 9:15 ` Sergey Ostanevich
2020-09-29 10:05 ` Igor Munkin
2020-09-29 22:41 ` Vladislav Shpilevoy
2020-09-30 9:30 ` Igor Munkin
2020-09-30 22:00 ` Vladislav Shpilevoy
2020-09-23 19:06 ` [Tarantool-patches] [PATCH v2 2/2] lua: abort trace recording on fiber yield Igor Munkin
2020-09-24 13:00 ` sergos
2020-09-28 13:07 ` Igor Munkin
2020-09-28 15:36 ` Igor Munkin
2020-09-28 16:37 ` Igor Munkin
2020-09-28 17:45 ` Igor Munkin
2020-09-29 9:24 ` Sergey Ostanevich
2020-09-29 10:06 ` Igor Munkin
2020-09-29 22:41 ` Vladislav Shpilevoy [this message]
2020-09-30 6:27 ` Igor Munkin
2020-09-30 21:59 ` Vladislav Shpilevoy
2020-10-01 6:14 ` Igor Munkin
2020-09-24 13:15 ` [Tarantool-patches] [PATCH v2 0/2] Prevent JIT engine breakage on fibers switch-over sergos
2020-09-28 13:06 ` Igor Munkin
2020-09-29 9:14 ` Sergey Ostanevich
2020-10-01 21:25 ` Vladislav Shpilevoy
2020-10-01 21:29 ` Igor Munkin
2020-10-01 22:17 ` Igor Munkin
2020-10-02 12:43 ` Kirill Yukhin
2020-10-02 12:44 ` Igor Munkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=f903f4f2-1317-5121-c3f8-eeb179c0582b@tarantool.org \
--to=v.shpilevoy@tarantool.org \
--cc=imun@tarantool.org \
--cc=sergos@tarantool.org \
--cc=tarantool-patches@dev.tarantool.org \
--subject='Re: [Tarantool-patches] [PATCH v2 2/2] lua: abort trace recording on fiber yield' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox