From: Vladislav Shpilevoy <v.shpilevoy@tarantool.org> To: Cyrill Gorcunov <gorcunov@gmail.com>, tml <tarantool-patches@dev.tarantool.org> Cc: Mons Anderson <v.perepelitsa@corp.mail.ru> Subject: Re: [Tarantool-patches] [PATCH v4 3/4] crash: move fatal signal handling in Date: Mon, 14 Dec 2020 23:54:23 +0100 [thread overview] Message-ID: <2a91ad22-6cd3-0bdd-78ef-203bd4b48a8d@tarantool.org> (raw) In-Reply-To: <20201210161832.729439-4-gorcunov@gmail.com> Thanks for the patch! See 5 comments below. On 10.12.2020 17:18, Cyrill Gorcunov wrote: > When SIGSEGV or SIGFPE reaches the tarantool we try to gather > all information related to the crash and print it out to the > console (well, stderr actually). Still there is a request > to not just show this info locally but send it out to the > feedback server. > > Thus to keep gathering crash related information in one module, > we move fatal signal handling into the separate crash.c file. > This allows us to collect the data we need in one place and > reuse it when we need to send reports to stderr (and to the > feedback server, which will be implemented in next patch). > > Part-of #5261 > > Signed-off-by: Cyrill Gorcunov <gorcunov@gmail.com> > --- > src/lib/core/CMakeLists.txt | 1 + > src/lib/core/crash.c | 291 ++++++++++++++++++++++++++++++++++++ > src/lib/core/crash.h | 32 ++++ > src/main.cc | 138 +---------------- > 4 files changed, 329 insertions(+), 133 deletions(-) > create mode 100644 src/lib/core/crash.c > create mode 100644 src/lib/core/crash.h > > diff --git a/src/lib/core/crash.c b/src/lib/core/crash.c > new file mode 100644 > index 000000000..9572a023c > --- /dev/null > +++ b/src/lib/core/crash.c > @@ -0,0 +1,291 @@ > +/* > + * SPDX-License-Identifier: BSD-2-Clause > + * > + * Copyright 2010-2020, Tarantool AUTHORS, please see AUTHORS file. > + */ > + > +#include <string.h> > +#include <unistd.h> > +#include <time.h> > + > +#include "trivia/util.h" > +#include "backtrace.h" > +#include "crash.h" > +#include "say.h" > + > +#define pr_fmt(fmt) "crash: " fmt > +#define pr_syserr(fmt, ...) say_syserror(pr_fmt(fmt), ##__VA_ARGS__) > +#define pr_panic(fmt, ...) panic(pr_fmt(fmt), ##__VA_ARGS__) > + > +#ifdef TARGET_OS_LINUX > +#ifndef __x86_64__ > +# error "Non x86-64 architectures are not supported" > +#endif > +struct crash_greg { 1. What is 'g' in 'greg'? > + uint64_t r8; > + uint64_t r9; > + uint64_t r10; > + uint64_t r11; > + uint64_t r12; > + uint64_t r13; > + uint64_t r14; > + uint64_t r15; > + uint64_t di; > + uint64_t si; > + uint64_t bp; > + uint64_t bx; > + uint64_t dx; > + uint64_t ax; > + uint64_t cx; > + uint64_t sp; > + uint64_t ip; > + uint64_t flags; > + uint16_t cs; > + uint16_t gs; > + uint16_t fs; > + uint16_t ss; > + uint64_t err; > + uint64_t trapno; > + uint64_t oldmask; > + uint64_t cr2; > + uint64_t fpstate; > + uint64_t reserved1[8]; > +}; > +#endif /* TARGET_OS_LINUX */ 2. Perhaps you could reduce number of #ifdef-#endif if you would define struct crash_greg as an empty struct for all the other platforms. Then you wouldn't need the TARGET_OS_LINUX check inside of crash_info. But up to you. > + > +static struct crash_info { > + /** > + * These two are mostly useless as being > + * plain addresses but keep for backward > + * compatibility. 3. Why don't you say the same about 'siaddr'? It is also just a plain address. > + */ > + void *context_addr; > + void *siginfo_addr; > +#ifdef TARGET_OS_LINUX > + /** > + * Registers contents. > + */ > + struct crash_greg greg; > +#endif > + /** > + * Faulting address. > + */ > + void *siaddr; > + /** > + * Crash signal number. > + */ > + int signo; > + /** > + * Crash signal code. > + */ > + int sicode; > +#ifdef ENABLE_BACKTRACE > + /* 4. We usually use /** in out-of-function comment's first line. > + * 4K of memory should be enough to keep the backtrace. > + * In worst case it gonna be simply trimmed. > + */ > + char backtrace_buf[4096]; 5. This is a functional change. Previously for the backtrace we used the static buffer. 1) Why did you change it? 2) Why isn't it in a separate commit? As I told you, it is really hard to extract what did you change in a ~460 lines patch titled as 'move' to check if it does not break anything or is even needed. Please, don't make it harder. Also print_backtrace() becomes unused after your patch.
next prev parent reply other threads:[~2020-12-14 22:54 UTC|newest] Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-12-10 16:18 [Tarantool-patches] [PATCH v4 0/4] crash: implement sending feedback Cyrill Gorcunov 2020-12-10 16:18 ` [Tarantool-patches] [PATCH v4 1/4] util: introduce strlcpy helper Cyrill Gorcunov 2020-12-11 7:34 ` Serge Petrenko 2020-12-11 7:58 ` Serge Petrenko 2020-12-11 10:04 ` Cyrill Gorcunov 2020-12-11 11:07 ` Serge Petrenko 2020-12-11 11:38 ` Cyrill Gorcunov 2020-12-14 22:54 ` Vladislav Shpilevoy 2020-12-14 22:54 ` Vladislav Shpilevoy 2020-12-15 8:47 ` Cyrill Gorcunov 2020-12-10 16:18 ` [Tarantool-patches] [PATCH v4 2/4] backtrace: allow to specify destination buffer Cyrill Gorcunov 2020-12-11 7:50 ` Serge Petrenko 2020-12-10 16:18 ` [Tarantool-patches] [PATCH v4 3/4] crash: move fatal signal handling in Cyrill Gorcunov 2020-12-11 9:31 ` Serge Petrenko 2020-12-11 10:38 ` Cyrill Gorcunov 2020-12-11 11:12 ` Serge Petrenko 2020-12-14 22:54 ` Vladislav Shpilevoy [this message] 2020-12-15 8:16 ` Cyrill Gorcunov 2020-12-20 14:48 ` Vladislav Shpilevoy 2020-12-20 15:49 ` Cyrill Gorcunov 2020-12-20 16:07 ` Vladislav Shpilevoy 2020-12-20 16:58 ` Cyrill Gorcunov 2020-12-20 15:45 ` Vladislav Shpilevoy 2020-12-10 16:18 ` [Tarantool-patches] [PATCH v4 4/4] crash: report crash data to the feedback server Cyrill Gorcunov 2020-12-11 12:57 ` Serge Petrenko 2020-12-12 16:19 ` Cyrill Gorcunov 2020-12-12 17:07 ` Cyrill Gorcunov 2020-12-14 9:41 ` Serge Petrenko 2020-12-14 22:54 ` Vladislav Shpilevoy 2020-12-16 11:16 ` Cyrill Gorcunov 2020-12-16 20:31 ` Cyrill Gorcunov 2020-12-20 15:16 ` Vladislav Shpilevoy 2020-12-20 18:26 ` Cyrill Gorcunov 2020-12-20 14:48 ` Vladislav Shpilevoy 2020-12-20 18:21 ` Cyrill Gorcunov 2020-12-20 18:41 ` Vladislav Shpilevoy 2020-12-20 19:16 ` Cyrill Gorcunov 2020-12-21 17:01 ` Vladislav Shpilevoy
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=2a91ad22-6cd3-0bdd-78ef-203bd4b48a8d@tarantool.org \ --to=v.shpilevoy@tarantool.org \ --cc=gorcunov@gmail.com \ --cc=tarantool-patches@dev.tarantool.org \ --cc=v.perepelitsa@corp.mail.ru \ --subject='Re: [Tarantool-patches] [PATCH v4 3/4] crash: move fatal signal handling in' \ /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