comp.lang.ada
 help / color / mirror / Atom feed
From: "Kevin K" <kevink4@gmail.com>
Subject: Re: GNAT GPL for Mac OSX stack checking problem
Date: Fri, 07 Oct 2005 12:25:44 GMT
Date: 2005-10-07T12:25:44+00:00	[thread overview]
Message-ID: <KIRoJuEXw9g9-pn2-kJWIGULSzTkD@ecs> (raw)
In-Reply-To: nospam-36089F.22481206102005@news-rdr-02.ohiordc.rr.com

The compiler and GPS seem to work, it is the generated test driver 
that I'm having problems with.

I saw 10.3 referenced when I downloaded it, but I have a history with 
the Linux versions where you can, at times, run the compiler on a 
different version than they built on.  For instance, the versions 
build for Redhat 7.1 could run on 7.2, 7.3, 8, EL 2.1, but GLIBC 
differences essentially required a new version from Adacore for RH9, 
EL3, etc.  (The change to the new threading library).

I just took a look at the ulimit command.  I would have to look at the
documentation to increase it under macos, but traditionally, the stack
you are changing with this command is the Environment stack, which is 
the stack for the actual main procedure, NOT the tasks for individual 
tasks.  If GNAT, on the Mac, is putting all the tasks I declared in 
the procedure declare section into the environment stack, that is 
different behavior than any other Ada compiler I've used, since the 
Linux GNAT uses the heap, Rational Apex uses the heap, the VADs Ada83 
compiler used the heap, and Alsys on Unix used the heap.

Essentially, my test procedure was

procedure test_tasks is

  task type task_type is
    pragma storage_size(10000000);

    entry start;
  end;

  task body test_tasks is
   
  begin

    accept start;

    loop
      putline("task num");
      delay 10.0;
      stack_user;
    end loop;
  end;

  procedure stack_user is
    buffer:string(1..2048);

  begin
      buffer(1):=' ';
      stack_user;
  exception
     when storage_error=> text_io.put_line("Storage_Error");
  end;

  the_tasks : array(1..10) of task_type;

begin

   --Call Start on all tasks

end;


The above test driver would not have run on older Linux releases using
LinuxThreads since the glibc limited task stack sizes to 2Meg.  So, in
those versions of Linux, we used the FSU threads which could be 
larger.  I just wanted to see if MacOS had a similar limitation.

On Fri, 7 Oct 2005 02:48:22 UTC, "John B. Matthews" 
<nospam@nospam.com> wrote:

> In article <KIRoJuEXw9g9-pn2-JDKN54ZBmMfZ@ecs>,
>  "Kevin K" <kevink4@gmail.com> wrote:
> 
> > I've downloaded the new 2005 GPL edition for the Mac
> > [...]
> > I guess the question is what is the maximum stack size of a task under
> > OSX?  (10.4 with all available patches)
> > [...]
> 
> You can examine & modify the stack limit using the bash shell's built-in 
> ulimit command:
> 
> $ ulimit -s
> 8192
> 
> Looks like eight megabytes.
> 
> I see that GNAT GPL 2005 Edition specifies Mac OS X Server 10.3. Does it 
> work under 10.4? Non-server?
> 


-- 




  reply	other threads:[~2005-10-07 12:25 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-10-06 22:47 GNAT GPL for Mac OSX stack checking problem Kevin K
2005-10-07  1:27 ` jim hopper
2005-10-07 12:10   ` Kevin K
2005-10-07  2:48 ` John B. Matthews
2005-10-07 12:25   ` Kevin K [this message]
2005-10-07 13:00     ` Jeff Creem
2005-10-08  0:05       ` Kevin K
2005-10-08  6:27   ` Simon Wright
2005-10-08 18:01   ` jim hopper
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox