[gtkada] GtkAda: Storage Error

Frode Tennebø frode at tennebo.com
Fri Mar 14 23:46:56 CET 2003


On Monday 24 February 2003 22:46, Arnaud Charlet wrote:
> > Is this also the case for gate?
>
> After double checking, the cause is different. For gate, this is
> because apparently some incompatible change have been made in recent
> versions of Gtk that broke gate.

I just downloaded cvs of gtkada and gdb and tried my old project through 
gate again. Apart from gtkada not compiling very nicely with 
"src/.devel" and some tweaking needed to enable -g all over (see 
separate post) I got the following result:

Starting program: /usr/bin/gate-in.exe gimdbob.glade
Breakpoint 1 at 0x4063694f: file a-except.adb, line 1048.
with Gtk; use Gtk;
with Gtk.Main;
with Gtk.Widget; use Gtk.Widget;
with Main_Window_Pkg; use Main_Window_Pkg;
with Search_Widget_Pkg; use Search_Widget_Pkg;

procedure Gimdbob is
   Main_Window : Main_Window_Access;
   Search_Widget : Search_Widget_Access;

begin
   Gtk.Main.Set_Locale;
   Gtk.Main.Init;
   Gtk_New (Main_Window);
   Show_All (Main_Window);
   Gtk_New (Search_Widget);
   Show_All (Search_Widget);
   Gtk.Main.Main;
end Gimdbob;

Breakpoint 1, STORAGE_ERROR at 0x400eccb2 in glib.object.params 
(q=@0xbfffe510) at ../glib-object.adb:362

Backtrace:

(gdb) back
#0  <__gnat_raise_nodefer_with_msg> (e=0x4072d160) at a-except.adb:1048
#1  0x40636bd1 in ada.exceptions.raise_with_location (e=0x4072d160, 
f=0x40196e1c, l=365) at a-except.adb:1223
#2  0x40636c3e in <__gnat_raise_storage_error> (file=0x40196e1c, 
line=365) at a-except.adb:1253
#3  0x400eccb2 in glib.object.params (q=@0xbfffe510) at 
../glib-object.adb:362
#4  0x400e23cf in glib.glade.gen_signal (n=0x806d098, file=0x8081010, 
widget_class=0x806336c) at ../glib-glade.adb:889
#5  0x08056730 in gtk_generates.toolbar_generate (n=0x806cc38, 
file=0x8081010) at gtk_generates.adb:1445
#6  0x0805a851 in gtk.glade.print_initialize_procedure (n=0x806cc38, 
file=0x8081010) at gtk-glade.adb:124
#7  0x0805a8f1 in gtk.glade.print_initialize_procedure (n=0x8069148, 
file=0x8081010) at gtk-glade.adb:135
#8  0x0805a8f1 in gtk.glade.print_initialize_procedure (n=0x8068bb0, 
file=0x8081010) at gtk-glade.adb:135
#9  0x0805dbdb in gtk.glade.generate (n=0x8065178) at gtk-glade.adb:499
#10 0x0806027c in gate () at gate.adb:122
#11 0x0804cea6 in main (argc=2, argv=(system.address) 0xbffff974, 
envp=(system.address) 0xbffff980) at b~gate.adb:336
#12 0x420158d4 in __libc_start_main () from /lib/i686/libc.so.6

The offending function in srg/glib-object.adb:

   ------------
   -- Params --
   ------------

   function Params (Q : Signal_Query) return GType_Array is
      type Flat_GType_Array is array (Guint) of GType;
      type Flat_GType_Array_Access is access Flat_GType_Array;
      type Guint_Access is access all Guint;

      function Internal
        (Q     : Signal_Query;
         N_Ids : Guint_Access) return Flat_GType_Array_Access;
      pragma Import (C, Internal, "ada_gsignal_query_params");

      N_Ids  : aliased Guint;
      Result : constant Flat_GType_Array_Access := Internal (Q, 
N_Ids'Access);

   begin
      if N_Ids = 0 then
         return (1 .. 0 => GType_Invalid); -- line 362, exception here
      else
         declare
            Res : constant GType_Array (0 .. N_Ids - 1) :=
              GType_Array (Result (0 .. N_Ids - 1));
         begin
            return Res;
         end;
      end if;
   end Params;

OK. I don't have my RM or textbooks at home, but exatly how is this 
supposed to work?

 -Frode

-- 
^ Frode Tennebø | email: frode at tennebo.com | Frode at IRC ^
|  with Standard.Disclaimer; use Standard.Disclaimer;  |




More information about the gtkada mailing list