Re: [BUGS] Bus error in formatting.c NUM_numpart_to_char (9.4.12, 9.6.3, sparc) - Mailing list pgsql-bugs

From Tom Lane
Subject Re: [BUGS] Bus error in formatting.c NUM_numpart_to_char (9.4.12, 9.6.3, sparc)
Date
Msg-id 24675.1498141318@sss.pgh.pa.us
Whole thread Raw
In response to [BUGS] Bus error in formatting.c NUM_numpart_to_char (9.4.12, 9.6.3, sparc)  ("Tom Turelinckx" <tom@turelinckx.be>)
Responses Re: [BUGS] Bus error in formatting.c NUM_numpart_to_char (9.4.12, 9.6.3, sparc)  ("Tom Turelinckx" <tom@turelinckx.be>)
List pgsql-bugs
"Tom Turelinckx" <tom@turelinckx.be> writes:
> But I need more information / pointers to documentation on how to find and provide the information you need, as I
haveno experience with looking at assembly code. 

The way to get an assembly code file is to substitute -S for -c in the
compile command, and also remove any "-o file" option.  So on my machine,
in an already built PG tree, I check what switches we're using:

$ cd src/backend/utils/adt
$ rm formatting.o
$ make formatting.o
gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels -Wmissing-format-attribute
-Wformat-security-fno-strict-aliasing -fwrapv -g -O2 -I../../../../src/include -D_GNU_SOURCE    -c -o formatting.o
formatting.c

Now I copy-and-paste all the switches except -c and -o:

$ gcc -Wall -Wmissing-prototypes -Wpointer-arith -Wdeclaration-after-statement -Wendif-labels
-Wmissing-format-attribute-Wformat-security -fno-strict-aliasing -fwrapv -g -O2 -I../../../../src/include -D_GNU_SOURCE
-Sformatting.c 

Note it's important that -g be one of the switches, else you don't get
line number annotations in the assembly.

Now I have a formatting.s file with contents like

.L275:
.LBE196:
.LBB197:
.LBB193:.loc 1 2320 0leal    -1(%rcx), %edicmpl    $1, %edijbe    .L278.loc 1 2322 0cmpl    $3, %ecx.p2align 4,,2je
.L279
.LVL216:
.L246:.loc 1 2325 0movq    (%rdx), %raxtestq    %rax, %raxje    .L244.loc 1 2331 0leaq    1(%r14), %rdimovq    %r14,
48(%rsp)movq   %rbx, 64(%rsp).loc 1 2325 0xorl    %r10d, %r10d.loc 1 2331 0movq    %rdx, %rbx 

The important part of this for your purposes is the ".loc" annotations,
which indicate the source line number the following code was generated
from.  Notice that's not unusual for the compiler to rearrange code so
that instructions from different lines are interspersed --- here we
can see that lines 2325 and 2331 got mingled together.  So there might
not be only one .loc annotation for the line where the crash is being
reported.  Anyway, find those annotation(s) and send us all the text
for that area and maybe a few dozen lines on either side.
        regards, tom lane


--
Sent via pgsql-bugs mailing list (pgsql-bugs@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-bugs

pgsql-bugs by date:

Previous
From: "Tom Turelinckx"
Date:
Subject: Re: [BUGS] Bus error in formatting.c NUM_numpart_to_char (9.4.12, 9.6.3, sparc)
Next
From: "Tom Turelinckx"
Date:
Subject: Re: [BUGS] Bus error in formatting.c NUM_numpart_to_char (9.4.12, 9.6.3, sparc)