]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: debug: place a magic pattern at the beginning of post_mortem
authorWilly Tarreau <w@1wt.eu>
Thu, 24 Oct 2024 09:56:07 +0000 (11:56 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 24 Oct 2024 14:12:46 +0000 (16:12 +0200)
In order to ease finding of the post_mortem struct in core dumps, let's
make it start with a recognizable pattern of exactly 32 chars (to
preserve alignment):

  "POST-MORTEM STARTS HERE+7654321\0"

It can then be found like this from gdb:

  (gdb) find 0x000000012345678, 0x0000000100000000, 'P','O','S','T','-','M','O','R','T','E','M'
  0xcfd300 <post_mortem>
  1 pattern found.

Or easier with any other more practical tool (who as ever used "find" in
gdb, given that it cannot iterate over maps and is 100% useless?).

src/debug.c

index 0d569d6c88e420d4038bd833d67db0490bc2e728..6e5148e300d3e40b9d4c91ade71eb7ebcde5fb66 100644 (file)
@@ -98,6 +98,7 @@ struct post_mortem_component {
  */
 struct post_mortem {
        /* platform-specific information */
+       char post_mortem_magic[32];     // "POST-MORTEM STARTS HERE+7654321\0"
        struct {
                struct utsname utsname; // OS name+ver+arch+hostname
                char hw_vendor[64];     // hardware/hypervisor vendor when known
@@ -2511,6 +2512,10 @@ static void feed_post_mortem_linux()
 
 static int feed_post_mortem()
 {
+       /* write an easily identifiable magic at the beginning of the struct */
+       strncpy(post_mortem.post_mortem_magic,
+               "POST-MORTEM STARTS HERE+7654321\0",
+               sizeof(post_mortem.post_mortem_magic));
        /* kernel type, version and arch */
        uname(&post_mortem.platform.utsname);