Hi Kevin,

Your help will be definitely appreciated.

At first, I wanted to replace GPS 2.1.0 with the newest version, 4.0.0.
I had some trouble compiling it but finally succeeded and found that it
would crash with a Storage_Error whenever opening a project, or any file
for that matter.  I was unable to fix that, but I did make sure the
problem was neither in GtkAda 2.8.1 nor in the compiler (tried -O0).  So
I reverted to GPS 3.1.3, and I had to patch it so it would compile with
GtkAda 2.8.1.  That's what is now in unstable.  It starts and it can
read files and the options dialogue boxes work, but I too have had some
crashes.  I tried to debug but family problems at home made that
impossible.  So, your help will be appreciated, definitely.

The crashes I experienced were due to explicit raises, not
Storage_Error.  And I did not see the infinite loop you report, either.

As I said, many parts of GPS do work, but if you can't edit project
properties (as in my experience), the thing is pretty much useless, so I
agree that the bug is grave.

GPS consists of ~280.000 lines of code, not counting blank or comment
lines, and not counting GtkAda which is itself another 90.000 lines.
Luckily, the source is very clear and well commented.

If you would like to help debug GPS, please start by downloading the
source package and editing the top-level "gps.gpr" file.  Look for
package Builder, and add "-g" to the Default_Switches ("Ada") line, e.g.

package Builder is
   for Default_Switches ("Ada") use ("-g", ...);
end Builder;

then do "debian/rules gnat-gps".  After a long time (3h40 on my old
laptop but only 48 minutes on an AMD64 buildd) you will end up with a
large file called gnat-gps, containing debugging information.  You can
run that under gdb or (better) gnatgdb from the package gnat-gdb.  The
latter allows you to break on exceptions ("break exception"), so you can
see where the Storage_Error is being raised.

You may also want to try removing all compiler options; maybe the
compiler is emitting wrong code or something.  In particular, I usually
compile with -gnato (full range checks, so we could get a
Constraint_Error) and -gnatVa (full optional run-time checks, which can
raise various exceptions).  If you remove these options, you'll stand a
lesser chance of getting exceptions and a higher chance of getting
random memory corruption and segfaults :/

I keep my compiler scripts and patches in a Monotone database which is
available for anonymous access; please tell me if you're interested.

-- 
Ludovic Brenta.


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to