From: Simon Wright on
"Yannick Duchêne (Hibou57)" <yannick_duchene(a)yahoo.fr> writes:

>> The GPL SPARK 8.1.1 binary release doesn't run well under Mac OS X Snow
>> Leopard (problems with exception handling in 64-bit executables).
> Where does the SPARK executable makes use of exceptions ? I have read
> something asserting the SPARK system is it-self checked to be runtime
> exceptions free. Perhaps this is in an external dependency part.

Yes; the traceback is

#0 0x00007fff82610886 in __kill ()
#1 0x00007fff826b0eae in abort ()
#2 0x00000001000837ce in uw_init_context_1 ()
#3 0x00000001000838e8 in _Unwind_Backtrace ()
#4 0x00000001000c8279 in __gnat_backtrace ()
#5 0x00000001000c42dd in system__traceback__call_chain ()
#6 0x0000000100088259 in ada__exceptions__call_chain ()
#7 0x0000000100087a61 in ada__exceptions__exception_propagation__propagate_exceptionXn ()
#8 0x0000000100088548 in __gnat_raise_nodefer_with_msg ()
#9 0x00000001000885aa in __gnat_raise_exception ()
#10 0x00000001000b5b87 in system__file_io__open ()
#11 0x000000010009744e in ada__text_io__open ()
#12 0x0000000100023f2f in spark_io__open ()
#13 0x000000010002b7be in sparkmake__openorcreatefile.1909 ()
#14 0x000000010002c083 in _ada_sparkmake ()

so I probaby had some missing file. If the SPARK system itself s
excetion-free, and the RTS makes no use of exceptions internally, maybe
this is worth pursuing .. adds to the difficulties, though.
From: Yannick Duchêne (Hibou57) on
Le Thu, 20 May 2010 08:21:43 +0200, Simon Wright <simon(a)pushface.org> a
écrit:
> Yes; the traceback is
>
> #0 0x00007fff82610886 in __kill ()
> #1 0x00007fff826b0eae in abort ()
> #2 0x00000001000837ce in uw_init_context_1 ()
> #3 0x00000001000838e8 in _Unwind_Backtrace ()
> #4 0x00000001000c8279 in __gnat_backtrace ()
> #5 0x00000001000c42dd in system__traceback__call_chain ()
> #6 0x0000000100088259 in ada__exceptions__call_chain ()
> #7 0x0000000100087a61 in
> ada__exceptions__exception_propagation__propagate_exceptionXn ()
> #8 0x0000000100088548 in __gnat_raise_nodefer_with_msg ()
> #9 0x00000001000885aa in __gnat_raise_exception ()
> #10 0x00000001000b5b87 in system__file_io__open ()
> #11 0x000000010009744e in ada__text_io__open ()
> #12 0x0000000100023f2f in spark_io__open ()
> #13 0x000000010002b7be in sparkmake__openorcreatefile.1909 ()
> #14 0x000000010002c083 in _ada_sparkmake ()
>
> so I probaby had some missing file. If the SPARK system itself s
> excetion-free, and the RTS makes no use of exceptions internally, maybe
> this is worth pursuing .. adds to the difficulties, though.
SPARK_IO is indeed implemented on top of Ada.Text_IO, which is not under
control of the SPARK application.

Still wonder why Text_IO fails here, and surprisingly right at startup.
Requires investigations.

Did you submit this issue to Praxis ? Mac is somewhat popular, pretty sure
they will be interested in the case.
From: Simon Wright on
"Yannick Duchêne (Hibou57)" <yannick_duchene(a)yahoo.fr> writes:

> Still wonder why Text_IO fails here, and surprisingly right at
> startup. Requires investigations.

The section that leads to the problem is

SPARK_IO.Open (File => Id,
Mode_Of_File => Mode,
Name_Length => File.Length,
Name_Of_File => Str (File),
Form_Of_File => "",
Status => Status);

if Status = SPARK_IO.Name_Error then
SPARK_IO.Create (File => Id,
Name_Length => File.Length,
Name_Of_File => Str (File),
Form_Of_File => "",
Status => Status);
end if;

and you can see why exceptions are involved 'under the hood'!

The progress messages from sparkmake were enough to allow me to create
the files concerned (foo.idx, foo.smf) using touch after which sparkmake
was able to update them.

One hopes that GNAT GPL 2010 will run on Snow Leopard! (and of course on
Leopard for those who felt no need to update).