[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Target Milestone|4.4.6 |4.4.7
[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073 Jakub Jelinek jakub at gcc dot gnu.org changed: What|Removed |Added Target Milestone|4.4.5 |4.4.6
[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
-- jakub at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|4.4.4 |4.4.5 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073
[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
-- rguenth at gcc dot gnu dot org changed: What|Removed |Added Target Milestone|--- |4.4.4 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073
[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
--- Comment #7 from ludovic at ludovic-brenta dot org 2009-11-19 18:50 --- Created an attachment (id=19060) -- (http://gcc.gnu.org/bugzilla/attachment.cgi?id=19060action=view) Disassembly of prj-part.adb, with sources (objdump -S) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073
[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
--- Comment #6 from ludovic at ludovic-brenta dot org 2009-11-18 22:09 --- With a stock GCC 4.4.2 bootstrapped with the default options (-g -O2, I think) on alpha the symptoms are the same. Here is a backtrace: (gdb) run -vP2 -Pp Starting program: /home/lbrenta/gcc-obj/gcc/gnatmake -vP2 -Pp GPR_PROJECT_PATH=.:/home/lbrenta/gcc/lib/gcc/alphaev68-unknown-linux-gnu/4.4.2/../../../gnat 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. 0x0001200f8ed8 in prj.part.parse_single_project (in_tree=0x1205fc3e0, path_name=value optimized out, extended=value optimized out, from_extended=value optimized out, in_limited=false, packages_to_check=..., depth=0, current_dir=...) at /home/lbrenta/gcc-4.4.2/gcc/ada/prj-part.adb:1104 1104 Tree_Private_Part.Projects_Htable.Get_Next (In_Tree.Projects_HT); (gdb) bt #0 0x0001200f8ed8 in prj.part.parse_single_project (in_tree=0x1205fc3e0, path_name=value optimized out, extended=value optimized out, from_extended=value optimized out, in_limited=false, packages_to_check=..., depth=0, current_dir=...) at /home/lbrenta/gcc-4.4.2/gcc/ada/prj-part.adb:1104 #1 0x0001200fb020 in prj.part.parse (in_tree=0x1205fc3e0, project_file_name=value optimized out, always_errout_finalize=value optimized out, packages_to_check=value optimized out, store_comments=false, current_directory=...) at /home/lbrenta/gcc-4.4.2/gcc/ada/prj-part.adb:525 #2 0x0001200f4878 in prj.pars.parse (in_tree=value optimized out, project_file_name=..., packages_to_check=..., when_no_sources=value optimized out, reset_tree=true) at /home/lbrenta/gcc-4.4.2/gcc/ada/prj-pars.adb:63 #3 0x0001200858f8 in make.initialize () at /home/lbrenta/gcc-4.4.2/gcc/ada/make.adb:6993 #4 0x0001200866cc in make.gnatmake () at /home/lbrenta/gcc-4.4.2/gcc/ada/make.adb:4708 #5 0x000120067708 in gnatmake () at /home/lbrenta/gcc-4.4.2/gcc/ada/gnatmake.adb:38 (gdb) p In_Tree.Projects_HT $4 = (access prj.tree.tree_private_part.projects_htable.tab.instance_data) 0x0 The infinite loop appears to be the loop starting at prj-pars.adb:1048 (frame #0 in the above backtrace). I'll attach a disassembly. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073
[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
--- Comment #1 from ludovic at ludovic-brenta dot org 2009-11-17 10:27 --- The following project file is known to work on alpha-gnu-linux with GCC 4.3.4: project Build_XMLAda is for Source_Dirs use (dom, input_sources, sax, schema, unicode); for Library_Name use xmlada; for Library_Dir use .; for Library_Kind use External (kind); for Library_Version use External (soname); for Object_Dir use External (obj); for Library_ALI_Dir use ali- External (obj); package Compiler is for Default_Switches (Ada) use (-g, -O2, -gnatafno, -gnatVa, -gnatwa); end Compiler; end Build_XMLAda; Since this project file is not noticeably different from GNADE_Common_Build, I think the bug is actually a regression in 4.4. -- ludovic at ludovic-brenta dot org changed: What|Removed |Added Known to fail||4.4.2 Known to work||4.3.4 Summary|Infinite loop when parsing a|[4.4 regression] Infinite |project file, alpha only|loop when parsing a project ||file, alpha only http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073
[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
--- Comment #2 from ubizjak at gmail dot com 2009-11-17 17:47 --- (In reply to comment #0) I have access to an alpha-linux-gnu machine, please tell me if I can help narrow this problem down. A debug trace from gdb would be a nice starting point. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073
[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
--- 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. 0x0286f344 in prj__tree__tree_private_part__projects_htable__get_next () from /usr/lib/libgnatprj.so.4.4 (gdb) bt #0 0x0286f344 in prj__tree__tree_private_part__projects_htable__get_next () from /usr/lib/libgnatprj.so.4.4 #1 0x02853dd8 in ?? () from /usr/lib/libgnatprj.so.4.4 #2 0x02856abc in prj__part__parse () from /usr/lib/libgnatprj.so.4.4 #3 0x0284df7c in prj__pars__parse () from /usr/lib/libgnatprj.so.4.4 #4 0x0001200635d4 in ?? () #5 0x0001200450c4 in ?? () #6 0x00012000cf60 in ?? () #7 0x0001200ad114 in ?? () #8 0x02bd650c 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 0x00012000b958 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: 0x0286f290 prj__tree__tree_private_part__projects_htable__tab__get_next+0:ldah gp,6(t12) 0x0286f294 prj__tree__tree_private_part__projects_htable__tab__get_next+4:lda gp,-12016(gp) 0x0286f298 prj__tree__tree_private_part__projects_htable__tab__get_next+8:lda sp,-32(sp) 0x0286f29c prj__tree__tree_private_part__projects_htable__tab__get_next+12: stq s0,8(sp) 0x0286f2a0 prj__tree__tree_private_part__projects_htable__tab__get_next+16: mov a0,s0 0x0286f2a4 prj__tree__tree_private_part__projects_htable__tab__get_next+20: stq ra,0(sp) 0x0286f2a8 prj__tree__tree_private_part__projects_htable__tab__get_next+24: stq s1,16(sp) 0x0286f2ac prj__tree__tree_private_part__projects_htable__tab__get_next+28: bne a0,0x286f2d0 prj__tree__tree_private_part__projects_htable__tab__get_next+64 0x0286f2b0 prj__tree__tree_private_part__projects_htable__tab__get_next+32: clr v0 0x0286f2b4 prj__tree__tree_private_part__projects_htable__tab__get_next+36: ldq ra,0(sp) 0x0286f2b8 prj__tree__tree_private_part__projects_htable__tab__get_next+40: ldq s0,8(sp) 0x0286f2bc prj__tree__tree_private_part__projects_htable__tab__get_next+44: ldq s1,16(sp) 0x0286f2c0 prj__tree__tree_private_part__projects_htable__tab__get_next+48: lda sp,32(sp) 0x0286f2c4 prj__tree__tree_private_part__projects_htable__tab__get_next+52: ret 0x0286f2c8 prj__tree__tree_private_part__projects_htable__tab__get_next+56: nop 0x0286f2cc prj__tree__tree_private_part__projects_htable__tab__get_next+60: unop 0x0286f2d0 prj__tree__tree_private_part__projects_htable__tab__get_next+64: ldah s1,1(a0) 0x0286f2d4 prj__tree__tree_private_part__projects_htable__tab__get_next+68: ldl t0,-16312(s1) 0x0286f2d8 prj__tree__tree_private_part__projects_htable__tab__get_next+72: and t0,0xff,t0 0x0286f2dc prj__tree__tree_private_part__projects_htable__tab__get_next+76: beq t0,0x286f2b0 prj__tree__tree_private_part__projects_htable__tab__get_next+32 0x0286f2e0 prj__tree__tree_private_part__projects_htable__tab__get_next+80: ldq a0,-16320(s1) 0x0286f2e4 prj__tree__tree_private_part__projects_htable__tab__get_next+84: ldq t12,-32248(gp) 0x0286f2e8 prj__tree__tree_private_part__projects_htable__tab__get_next+88: jsr ra,(t12),0x286f2ec prj__tree__tree_private_part__projects_htable__tab__get_next+92 0x0286f2ec prj__tree__tree_private_part__projects_htable__tab__get_next+92: ldah gp,6(ra) 0x0286f2f0 prj__tree__tree_private_part__projects_htable__tab__get_next+96: mov s0,a0 0x0286f2f4 prj__tree__tree_private_part__projects_htable__tab__get_next+100: lda gp,-12108(gp) 0x0286f2f8 prj__tree__tree_private_part__projects_htable__tab__get_next+104: stq v0,-16320(s1) 0x0286f2fc prj__tree__tree_private_part__projects_htable__tab__get_next+108: ldq t12,-28536(gp) 0x0286f300 prj__tree__tree_private_part__projects_htable__tab__get_next+112: jsr ra,(t12),0x286f304 prj__tree__tree_private_part__projects_htable__tab__get_next+116 0x0286f304 prj__tree__tree_private_part__projects_htable__tab__get_next+116: ldah gp,6(ra) 0x0286f308
[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
--- Comment #4 from ludovic at ludovic-brenta dot org 2009-11-17 19:59 --- Actually the disassembly above was that of Tab.Get_Next. The source for Tab.Get_Next is: function Get_Next (T : Instance) return Elmt_Ptr is begin if T = null or else not T.Iterator_Started then return Null_Ptr; end if; T.Iterator_Ptr := Next (T.Iterator_Ptr); return Get_Non_Null (T); end Get_Next; The disassembly of Simple_HTable.Get_Next is: (gdb) up #1 0x0286f344 in prj__tree__tree_private_part__projects_htable__get_next () from /usr/lib/libgnatprj.so.4.4 (gdb) disassemble Dump of assembler code for function prj__tree__tree_private_part__projects_htable__get_next: 0x0286f320 prj__tree__tree_private_part__projects_htable__get_next+0: ldahgp,6(t12) 0x0286f324 prj__tree__tree_private_part__projects_htable__get_next+4: lda gp,-12160(gp) 0x0286f328 prj__tree__tree_private_part__projects_htable__get_next+8: lda sp,-16(sp) 0x0286f32c prj__tree__tree_private_part__projects_htable__get_next+12:ldq t12,-27200(gp) 0x0286f330 prj__tree__tree_private_part__projects_htable__get_next+16:stq s0,8(sp) 0x0286f334 prj__tree__tree_private_part__projects_htable__get_next+20:mov a0,s0 0x0286f338 prj__tree__tree_private_part__projects_htable__get_next+24:stq ra,0(sp) 0x0286f33c prj__tree__tree_private_part__projects_htable__get_next+28:mov a1,a0 0x0286f340 prj__tree__tree_private_part__projects_htable__get_next+32:jsr ra,(t12),0x286f344 prj__tree__tree_private_part__projects_htable__get_next+36 0x0286f344 prj__tree__tree_private_part__projects_htable__get_next+36:ldah gp,6(ra) 0x0286f348 prj__tree__tree_private_part__projects_htable__get_next+40:lda gp,-12196(gp) 0x0286f34c prj__tree__tree_private_part__projects_htable__get_next+44:beq v0,0x286f390 prj__tree__tree_private_part__projects_htable__get_next+112 0x0286f350 prj__tree__tree_private_part__projects_htable__get_next+48:ldl t0,16(v0) 0x0286f354 prj__tree__tree_private_part__projects_htable__get_next+52:ldl t3,4(v0) 0x0286f358 prj__tree__tree_private_part__projects_htable__get_next+56:ldl t2,8(v0) 0x0286f35c prj__tree__tree_private_part__projects_htable__get_next+60:ldl t1,12(v0) 0x0286f360 prj__tree__tree_private_part__projects_htable__get_next+64:stl t3,0(s0) 0x0286f364 prj__tree__tree_private_part__projects_htable__get_next+68:stl t2,4(s0) 0x0286f368 prj__tree__tree_private_part__projects_htable__get_next+72:stl t1,8(s0) 0x0286f36c prj__tree__tree_private_part__projects_htable__get_next+76:stl t0,12(s0) 0x0286f370 prj__tree__tree_private_part__projects_htable__get_next+80:mov s0,v0 0x0286f374 prj__tree__tree_private_part__projects_htable__get_next+84:ldq ra,0(sp) 0x0286f378 prj__tree__tree_private_part__projects_htable__get_next+88:ldq s0,8(sp) 0x0286f37c prj__tree__tree_private_part__projects_htable__get_next+92:lda sp,16(sp) 0x0286f380 prj__tree__tree_private_part__projects_htable__get_next+96:ret 0x0286f384 prj__tree__tree_private_part__projects_htable__get_next+100: unop 0x0286f388 prj__tree__tree_private_part__projects_htable__get_next+104: nop 0x0286f38c prj__tree__tree_private_part__projects_htable__get_next+108: unop 0x0286f390 prj__tree__tree_private_part__projects_htable__get_next+112: ldah t1,-4(gp) 0x0286f394 prj__tree__tree_private_part__projects_htable__get_next+116: lda t0,20296(t1) 0x0286f398 prj__tree__tree_private_part__projects_htable__get_next+120: ldl t3,20296(t1) 0x0286f39c prj__tree__tree_private_part__projects_htable__get_next+124: ldl t2,4(t0) 0x0286f3a0 prj__tree__tree_private_part__projects_htable__get_next+128: ldl t1,12(t0) 0x0286f3a4 prj__tree__tree_private_part__projects_htable__get_next+132: ldl t0,8(t0) 0x0286f3a8 prj__tree__tree_private_part__projects_htable__get_next+136: stl t3,0(s0) 0x0286f3ac prj__tree__tree_private_part__projects_htable__get_next+140: stl t2,4(s0) 0x0286f3b0 prj__tree__tree_private_part__projects_htable__get_next+144: stl t0,8(s0) 0x0286f3b4 prj__tree__tree_private_part__projects_htable__get_next+148: stl t1,12(s0) 0x0286f3b8 prj__tree__tree_private_part__projects_htable__get_next+152: mov s0,v0 0x0286f3bc prj__tree__tree_private_part__projects_htable__get_next+156: ldq ra,0(sp) 0x0286f3c0
Re: [Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
#1 0x02853dd8 in ?? () from /usr/lib/libgnatprj.so.4.4 #2 0x02856abc in prj__part__parse () from /usr/lib/libgnatprj.so.4.4 #3 0x0284df7c in prj__pars__parse () from /usr/lib/libgnatprj.so.4.4 Well, there's no such thing as libgnatprj.so in GCC sources/Makefiles. Can you please retry with a stock GCC and build with -O0 -g to get a more complete info/debug session? TIA. Arno
[Bug ada/42073] [4.4 regression] Infinite loop when parsing a project file, alpha only
--- Comment #5 from charlet at adacore dot com 2009-11-17 21:45 --- Subject: Re: [4.4 regression] Infinite loop when parsing a project file, alpha only #1 0x02853dd8 in ?? () from /usr/lib/libgnatprj.so.4.4 #2 0x02856abc in prj__part__parse () from /usr/lib/libgnatprj.so.4.4 #3 0x0284df7c in prj__pars__parse () from /usr/lib/libgnatprj.so.4.4 Well, there's no such thing as libgnatprj.so in GCC sources/Makefiles. Can you please retry with a stock GCC and build with -O0 -g to get a more complete info/debug session? TIA. Arno -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42073