[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
ludovic at ludovic-brenta dot org
gcc-bugzilla@gcc.gnu.org
Tue Nov 17 19:56:00 GMT 2009
------- Comment #3 from ludovic at ludovic-brenta dot org 2009-11-17 19:56 -------
Even an empty project file triggers the bug:
$ cat > p.gpr <<EOF
project p is
end p;
EOF
$ gdb gnatmake
(gdb) run -vP2 -Pp
Starting program: /usr/bin/gnatmake -vP2 -Pp
GPR_PROJECT_PATH=".:/usr/share/ada/adainclude/"
Project_Path_Name_Of ("p", "/home/lbrenta/");
Trying /home/lbrenta//p.gpr
Project_Name_From ("/home/lbrenta/p.gpr")
^C
Program received signal SIGINT, Interrupt.
0x000002000086f344 in prj__tree__tree_private_part__projects_htable__get_next
() from /usr/lib/libgnatprj.so.4.4
(gdb) bt
#0 0x000002000086f344 in
prj__tree__tree_private_part__projects_htable__get_next () from
/usr/lib/libgnatprj.so.4.4
#1 0x0000020000853dd8 in ?? () from /usr/lib/libgnatprj.so.4.4
#2 0x0000020000856abc in prj__part__parse () from /usr/lib/libgnatprj.so.4.4
#3 0x000002000084df7c in prj__pars__parse () from /usr/lib/libgnatprj.so.4.4
#4 0x00000001200635d4 in ?? ()
#5 0x00000001200450c4 in ?? ()
#6 0x000000012000cf60 in ?? ()
#7 0x00000001200ad114 in ?? ()
#8 0x0000020000bd650c in __libc_start_main (main=<value optimized out>,
argc=<value optimized out>, ubp_av=<value optimized out>,
init=0x1200ad190, fini=<value optimized out>, rtld_fini=<value optimized
out>, stack_end=0x11fcbd730) at libc-start.c:222
#9 0x000000012000b958 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
Note: this gnatmake is built with -O2 and without -g.
(gdb) disassemble
Dump of assembler code for function
prj__tree__tree_private_part__projects_htable__tab__get_next:
0x000002000086f290
<prj__tree__tree_private_part__projects_htable__tab__get_next+0>: ldah
gp,6(t12)
0x000002000086f294
<prj__tree__tree_private_part__projects_htable__tab__get_next+4>: lda
gp,-12016(gp)
0x000002000086f298
<prj__tree__tree_private_part__projects_htable__tab__get_next+8>: lda
sp,-32(sp)
0x000002000086f29c
<prj__tree__tree_private_part__projects_htable__tab__get_next+12>: stq
s0,8(sp)
0x000002000086f2a0
<prj__tree__tree_private_part__projects_htable__tab__get_next+16>: mov
a0,s0
0x000002000086f2a4
<prj__tree__tree_private_part__projects_htable__tab__get_next+20>: stq
ra,0(sp)
0x000002000086f2a8
<prj__tree__tree_private_part__projects_htable__tab__get_next+24>: stq
s1,16(sp)
0x000002000086f2ac
<prj__tree__tree_private_part__projects_htable__tab__get_next+28>: bne
a0,0x2000086f2d0
<prj__tree__tree_private_part__projects_htable__tab__get_next+64>
0x000002000086f2b0
<prj__tree__tree_private_part__projects_htable__tab__get_next+32>: clr v0
0x000002000086f2b4
<prj__tree__tree_private_part__projects_htable__tab__get_next+36>: ldq
ra,0(sp)
0x000002000086f2b8
<prj__tree__tree_private_part__projects_htable__tab__get_next+40>: ldq
s0,8(sp)
0x000002000086f2bc
<prj__tree__tree_private_part__projects_htable__tab__get_next+44>: ldq
s1,16(sp)
0x000002000086f2c0
<prj__tree__tree_private_part__projects_htable__tab__get_next+48>: lda
sp,32(sp)
0x000002000086f2c4
<prj__tree__tree_private_part__projects_htable__tab__get_next+52>: ret
0x000002000086f2c8
<prj__tree__tree_private_part__projects_htable__tab__get_next+56>: nop
0x000002000086f2cc
<prj__tree__tree_private_part__projects_htable__tab__get_next+60>: unop
0x000002000086f2d0
<prj__tree__tree_private_part__projects_htable__tab__get_next+64>: ldah
s1,1(a0)
0x000002000086f2d4
<prj__tree__tree_private_part__projects_htable__tab__get_next+68>: ldl
t0,-16312(s1)
0x000002000086f2d8
<prj__tree__tree_private_part__projects_htable__tab__get_next+72>: and
t0,0xff,t0
0x000002000086f2dc
<prj__tree__tree_private_part__projects_htable__tab__get_next+76>: beq
t0,0x2000086f2b0
<prj__tree__tree_private_part__projects_htable__tab__get_next+32>
0x000002000086f2e0
<prj__tree__tree_private_part__projects_htable__tab__get_next+80>: ldq
a0,-16320(s1)
0x000002000086f2e4
<prj__tree__tree_private_part__projects_htable__tab__get_next+84>: ldq
t12,-32248(gp)
0x000002000086f2e8
<prj__tree__tree_private_part__projects_htable__tab__get_next+88>: jsr
ra,(t12),0x2000086f2ec
<prj__tree__tree_private_part__projects_htable__tab__get_next+92>
0x000002000086f2ec
<prj__tree__tree_private_part__projects_htable__tab__get_next+92>: ldah
gp,6(ra)
0x000002000086f2f0
<prj__tree__tree_private_part__projects_htable__tab__get_next+96>: mov
s0,a0
0x000002000086f2f4
<prj__tree__tree_private_part__projects_htable__tab__get_next+100>: lda
gp,-12108(gp)
0x000002000086f2f8
<prj__tree__tree_private_part__projects_htable__tab__get_next+104>: stq
v0,-16320(s1)
0x000002000086f2fc
<prj__tree__tree_private_part__projects_htable__tab__get_next+108>: ldq
t12,-28536(gp)
0x000002000086f300
<prj__tree__tree_private_part__projects_htable__tab__get_next+112>: jsr
ra,(t12),0x2000086f304
<prj__tree__tree_private_part__projects_htable__tab__get_next+116>
0x000002000086f304
<prj__tree__tree_private_part__projects_htable__tab__get_next+116>: ldah
gp,6(ra)
0x000002000086f308
<prj__tree__tree_private_part__projects_htable__tab__get_next+120>: lda
gp,-12132(gp)
0x000002000086f30c
<prj__tree__tree_private_part__projects_htable__tab__get_next+124>: ldq
ra,0(sp)
0x000002000086f310
<prj__tree__tree_private_part__projects_htable__tab__get_next+128>: ldq
s0,8(sp)
0x000002000086f314
<prj__tree__tree_private_part__projects_htable__tab__get_next+132>: ldq
s1,16(sp)
0x000002000086f318
<prj__tree__tree_private_part__projects_htable__tab__get_next+136>: lda
sp,32(sp)
0x000002000086f31c
<prj__tree__tree_private_part__projects_htable__tab__get_next+140>: ret
End of assembler dump.
The sources corresponding to this procedure is:
function Get_Next (T : Instance) return Element is
Tmp : constant Elmt_Ptr := Tab.Get_Next (Tab.Instance (T));
begin
if Tmp = null then
return No_Element;
else
return Tmp.E;
end if;
end Get_Next;
Is this sufficient for debugging?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073
More information about the Gcc-bugs
mailing list