On the small program below, "Something_Usefull" is never aborted: when I enter a string, my CPU usage go to 100% but then Put_Line following the "select then abort" is never executed.
This was observed on my Ubuntu Karmic with gnat-4.4 and gnat-4.3. A friend of mine reproduced it with 4.4.3 and 4.5.0 for information: % gcc -v Using built-in specs. Target: i486-linux-gnu Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.4.1-4ubuntu9' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --program-suffix=-4.4 --enable-nls --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i486 --with-tune=generic --enable-checking=release --build=i486-linux-gnu --host=i486-linux-gnu --target=i486-linux-gnu Thread model: posix gcc version 4.4.1 (Ubuntu 4.4.1-4ubuntu9) ----------------------------------- with Ada.Text_IO; use Ada.Text_IO; with Ada.Real_Time; use Ada.Real_Time; procedure Test_Select is type State_Type is (Start, Stop); protected State is procedure Set (Value : State_Type); entry Wait_For (State_Type); private Current : State_Type := Stop; end State; protected body State is procedure Set (Value : State_Type) is begin Current := Value; end Set; entry Wait_For (for S in State_Type) when Current = S is begin null; end Wait_For; end State; task Keyboard; task body Keyboard is begin declare S : String(1 .. 1024); Last : Integer; pragma Unreferenced (Last); begin Get_Line (S, Last); State.Set (Start); Put_Line ("State is now 'Start'"); end; end Keyboard; procedure Something_Usefull is begin loop null; delay until Clock + To_Time_Span (0.1); end loop; end Something_Usefull; begin Put_Line ("Before select"); select State.Wait_For (Start); then abort Something_Usefull; end select; Put_Line ("Done"); end Test_Select; -- Summary: select ... then abort ... end select don't abort Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: ada AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: vaurele at gmx dot com GCC build triplet: i486-linux-gnu GCC host triplet: i486-linux-gnu GCC target triplet: i486-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43485