Symptom
Records passed between Ada and C++ components (or Java and C components) produced wrong values and crashes, often far from where the data crossed over.
Constraint
Each side was correct by its own rules, and neither compiler catches the other language’s assumptions.
Root cause
The two sides disagreed about the ranges or representations of some values. If the code had been in one language or the other, the mismatch would have shown at compile time.
Resolution
Explicit range checking on all outcall parameters and returns.
Seeing something similar? patrick@eigenstate.solutions