comp.lang.ada
 help / color / mirror / Atom feed
* Vads X/Motif & C
@ 1996-09-10  0:00 Mark Bell
  1996-09-11  0:00 ` Brian Crouch
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Mark Bell @ 1996-09-10  0:00 UTC (permalink / raw)




Folks --

I'm attempting to interface Ada with an X/Motif government 
application written in C.  I'm using Vads Ada (V6.2.3) and 
Vads Ada X Interface to Motif (V3.2.3) The platform is a 
Sparcstation 20 running Solaris 2.4.

Initially I had dynamic allocation problems due to the
ways Vads and Solaris were performing memory allocation.
I believe I have this solved by modifying the v_usr_confb.a file
to use malloc() instead of sbrk() in the kernel allocation
function V_KRN_ALLOC_CALLOUT.  After this was done, I no
longer get segmentation faults after malloc calls in the
government C software.

However, I'm still getting segmentation faults during various
X/Motif calls, and I'm not 100 percent sure that the above
fix has totally addressed the problem of the interaction of the
Vads Ada runtime and Solaris OS in regards to memory allocation.
Does anyone have any "lessons learned" from doing similar work ??

I'm also running in problems such as getting a resource's value 
from a widget, then immediately setting the widget's resource to
the same value, and getting a segmentation fault.  For Example:

Xt.Xt_Resource_Management.Xt_Set_Arg(
  Arg => An_Arg_List(0),
  Name => Xt_Stringdefs.Xt_N_background,
  Value => blank_color'Address);

Xt.Xt_Resource_Management.Xt_Get_Values(
  W    => Presentation_Drawing_Area,
  Args => An_Arg_List(0..0));

Xt.Xt_Resource_Management.Xt_Set_Values(
   W    => Presentation_Drawing_Area,
   Args => An_Arg_List(0..0));

(Segmentation fault occurs)

Any suggestions as to why this happens ??

Thanks





Mark S. Bell                           412-268-7925 (Voice)
Software Engineering Institute         412-268-5758 (Fax)
Carnegie Mellon University             ** These are my opinions, 
4500 Fifth Ave, Pittsburgh PA.,15213      not those of the SEI or CMU **




^ permalink raw reply	[flat|nested] 5+ messages in thread
* Vads X/Motif & C
@ 1996-09-13  0:00 Mark Bell
  0 siblings, 0 replies; 5+ messages in thread
From: Mark Bell @ 1996-09-13  0:00 UTC (permalink / raw)



Thanks to all who responded to my questions, either via private
email or this newsgroup.

Most of the suggestions I had already tried, but I was glad to
see that I was at least looking in the correct areas.  I've
done Ada for many years, but this is the first time I've had
to deal with X/Motif, let alone interfacing to it from Ada !

I can not change the malloc() calls to Xtmalloc() calls in the
C source code, as the C code is "off the shelf".  Even though
I have some of the source for reference, changing it is not
an option.

Several folks asked some further questions about my application.
The C code is from the U.S. Army, and is called TEM (Terrain Evaluation
Module V 9.3.1).  It consists of main program which spawns several
servers.  It comes with a C-based GUI interface.  As received,
the application and GUI seems to work fine on the Solaris platform.
(Can I infer that the malloc vs xtmalloc issue is not a problem
here, or that it just hasn't surfaced yet?  The C code does
use malloc).

We (at the SEI) have written a Convoy Planning Prototype in Ada 83.
This uses the VADS X/Motif interface.  The initial versions used 
a line map for Convoy routing purposes.  These versions run fine
on the Solaris platform.

We are attempting to replace the line map with the actual
geographical maps and accompying services offered by TEM.
Thus, we need to bypass the provided GUI and use our own.
This is where the problems are.

Concerning the following code segment
 
> Xt.Xt_Resource_Management.Xt_Set_Arg(
>   Arg => An_Arg_List(0),
>   Name => Xt_Stringdefs.Xt_N_background,
>   Value => blank_color'Address);
> 
> Xt.Xt_Resource_Management.Xt_Get_Values(
>   W    => Presentation_Drawing_Area,
>   Args => An_Arg_List(0..0));
> 
> Xt.Xt_Resource_Management.Xt_Set_Values(
>    W    => Presentation_Drawing_Area,
>    Args => An_Arg_List(0..0));
> 
> (Segmentation fault occurs)
> 
I was not surprised to see that it was such an obvious goof...
another case of not seeing the trees in the forest !  I wondered
why this was the only place that I had trouble with the
Xt_Set_Value function.

Thanks again...




Mark S. Bell                           412-268-7925 (Voice)
Software Engineering Institute         412-268-5758 (Fax)
Carnegie Mellon University             ** These are my opinions, 
4500 Fifth Ave, Pittsburgh PA.,15213      not those of the SEI or CMU **




^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~1996-09-13  0:00 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1996-09-10  0:00 Vads X/Motif & C Mark Bell
1996-09-11  0:00 ` Brian Crouch
1996-09-12  0:00 ` Sandy McPherson
1996-09-12  0:00 ` Frank Petranka
  -- strict thread matches above, loose matches on Subject: below --
1996-09-13  0:00 Mark Bell

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