comp.lang.ada
 help / color / mirror / Atom feed
From: awdorrin <awdorrin@gmail.com>
Subject: Calling Ada from C (linux/gnat 4.3.2)
Date: Tue, 1 Nov 2011 11:46:07 -0700 (PDT)
Date: 2011-11-01T11:46:07-07:00	[thread overview]
Message-ID: <8ba649f0-7ca1-4f05-a158-74b074e401ee@o19g2000vbk.googlegroups.com> (raw)

I am trying to port a program originally written on VxWork to Linux.
The main program is written in C and spawns new threads and in the new
threads calls are made to Ada procedures.

In the original program, written with GreenHills AdaMulti, it appears
that there was a call being made that I am assuming was initializing
the Ada Runtime's task stack/control block (rts_init_task()) - however
this is just a guess.

In the version of the program I am migrating, I was seeing things that
made me believe that the Ada thread's did not have their stacks setup
properly, so I added the -fstack-check flag to the build.

Now, the C program creates the new thread, which calls the ada
procedure - and the moment the thread has an opportunity to run - the
application exits with 'raised STORAGE_ERROR : stack overflow
detected'

I cannot get gdb to provide me a backtrace, since the program exits.
If I try to break on the ada procedure name, I get a break, but trying
to 'step' or 'next' keeps me in the main thread until a 'sleep' call
lets the other thread run - at which point it raises the exception.

I am assuming that the ada runtime is initializing and the
STORAGE_ERROR is raised before it gets to execute any of the code in
my Ada procedure.

I have been trying to search to find what the proper way would be to
call an Ada procedure from a C pthread, but have had zero luck. I also
have been unable to determine what the equivalent of the
'rts_init_task' would be with Gnat.

Any have any ideas?



             reply	other threads:[~2011-11-01 19:25 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-11-01 18:46 awdorrin [this message]
2011-11-01 20:44 ` Calling Ada from C (linux/gnat 4.3.2) Jeffrey Carter
2011-11-01 23:38 ` Simon Wright
2011-11-02  4:17 ` anon
2011-11-02 16:05 ` Stephen Leake
2011-11-03 16:17   ` awdorrin
2011-11-08 23:22     ` awdorrin
2011-11-09 10:46       ` Pascal Obry
2011-11-09 21:10         ` Ludovic Brenta
2012-02-28 16:28 ` Matt Grochowalski
replies disabled

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